从特定频道中提取YouTube视频

Mon*_*Ove 1 php

我正在尝试从特定的YouTube频道中提取所有视频.

我收到这个错误:

Fatal error: Call to undefined function getYTid() in C:\inetpub\wwwroot\ped.php on line 71
Run Code Online (Sandbox Code Playgroud)

有什么建议?

class ChannelFeed {

    function __construct($username){
        $this->username=$username;
        echo $this->username;
        $this->feedUrl=$url='http://gdata.youtube.com/feeds/api/users/'.$username.'/uploads?orderby=updated';
        $this->feed=simplexml_load_file($url);
    }

    public function getYTid() {

        $ytURL = $this->feed->entry->link['href'];

        $ytvIDlen = 11; // This is the length of YouTube's video IDs

        // The ID string starts after "v=", which is usually right after 
        // "youtube.com/watch?" in the URL
        $idStarts = strpos($ytURL, "?v=");

        // In case the "v=" is NOT right after the "?" (not likely, but I like to keep my 
        // bases covered), it will be after an "&":
        if($idStarts === FALSE)
        $idStarts = strpos($ytURL, "&v=");
        // If still FALSE, URL doesn't have a vid ID
        if($idStarts === FALSE)
        die("YouTube video ID not found. Please double-check your URL.");

        // Offset the start location to match the beginning of the ID string
        $idStarts +=3;

        // Get the ID string and return it
        $ytvID = substr($ytURL, $idStarts, $ytvIDlen);    
        return $ytvID;   
    }

public function showFullFeed(){ 
$vidarray = array();
    foreach($this->feed->entry as $video){
        $vidarray[] = $video->link['href'];
    }
    return $vidarray ;
}


 };
$youtube = new ChannelFeed('channel_name');
$vids = $youtube->showFullFeed();
$vidIDs = array_map(getYTid(),$vids);
Run Code Online (Sandbox Code Playgroud)

小智 5

我修改了这个正常工作.....

    class ChannelFeed {
    function __construct($username){
        $this->username=$username;        
        //$this->feedUrl=$url='http://gdata.youtube.com/feeds/api/users/'.$username.'/uploads?orderby=published';
        $this->feedUrl=$url='http://gdata.youtube.com/feeds/api/videos?author=' . $username;
        $this->feed=simplexml_load_file($url);
    }

    public function getYTid($links) {
        $IDs = array();
        foreach ($links as $href) {
            $ytURL = $href;
        //$ytURL = $this->feed->entry->link['href'];

            $ytvIDlen = 11; // This is the length of YouTube's video IDs

            // The ID string starts after "v=", which is usually right after 
            // "youtube.com/watch?" in the URL
            $idStarts = strpos($ytURL, "?v=");

            // In case the "v=" is NOT right after the "?" (not likely, but I like to keep my 
            // bases covered), it will be after an "&":
            if($idStarts === FALSE)
            $idStarts = strpos($ytURL, "&v=");
            // If still FALSE, URL doesn't have a vid ID
            if($idStarts === FALSE)
            die("YouTube video ID not found. Please double-check your URL.");

            // Offset the start location to match the beginning of the ID string
            $idStarts +=3;

            // Get the ID string and return it
            $ytvID = substr($ytURL, $idStarts, $ytvIDlen);    
            $IDs[] = $ytvID;
        }
        return $IDs;           
    }

    public function showFullFeed(){ 
    $vidarray = array();    
        foreach($this->feed->entry as $video){
            $vidarray[] = $video->link['href'];         
        }
        return $vidarray;
    }   
};

$youtube = new ChannelFeed('channel_name');
$vids = $youtube->showFullFeed();
$vidIDs = $youtube->getYTid($vids);
Run Code Online (Sandbox Code Playgroud)