1

PHP スクリプトを使用して、特定のユーザー ID がアップロードしたすべてのプレイリストを見つけています。問題は、スクリプトがすべての再生リストを返すのではなく、一部の再生リストのみを返すことです。

すべてのプレイリストを取得したいのですが、すべてが取得されるわけではありません。

ここでチェックしてください:リンク

これが私のコードです( GET ARGUMENT IS は /channelname です):

<?php
header('Content-Type: text/html; charset=utf-8');
    $feedUrl='https://gdata.youtube.com/feeds/api/users/'.$_GET['id'].'/playlists?v=2&alt=json';  
    $data = json_decode(file_get_contents($feedUrl),true);
    $info = $data["feed"];
    $entry = $info["entry"];
    $nEntry = count($entry);
/*  echo "Playlist Name: ".$info["title"]['$t'].'<br/>';
    echo "Number of Videos (".$nVideo."):<br/>";*/
    $MainFeed=array();
    for($i=0;$i<$nEntry;$i++){
        $thumbId=split('/',$entry[$i]['media$group']['media$thumbnail'][0]['url'] );
        $thumbId=$thumbId[4];       
        $playList=array(                
                        'title' => $entry[$i]['title']['$t'],
                        'playlistId' => $entry[$i]['yt$playlistId']['$t'],
                        'published'=>$entry[$i]['published']['$t'], 
                        'thumbId'=>$thumbId,
                        'videosCount'=>$entry[$i]['yt$countHint']['$t'],
                        'videos'=>getVideos($entry[$i]['yt$playlistId']['$t'])                      
                    );
        array_push($MainFeed,$playList);
        //print_r($entry[$i]);
                    /*
        echo "Name: ".$entry[$i]['title']['$t'].'<br/>';
        echo 'http://www.youtube.com/playlist?list='.$entry[$i]['yt$playlistId']['$t'].'&feature=plcp'.'<br/>';     
        echo '<br>$thumbId : '.$thumbId .'<br>';
        echo "playlistId:  ".$entry[$i]['yt$playlistId']['$t']."<br />";
        echo "published:  ".$entry[$i]['published']['$t']."<br />";
        */ 
    //  break;
    }
    echo '{ "feed":'.json_encode($MainFeed).'}';

function getVideos($playListId){
    $feedUrl='https://gdata.youtube.com/feeds/api/playlists/'.$playListId.'?v=2&alt=json';  
    $data = json_decode(file_get_contents($feedUrl),true);
    $info = $data["feed"];
    $entry = $info["entry"];
    $nEntry = count($entry); 
    $PLayListVideos=array();
    for($i=0;$i<$nEntry;$i++){
            $video = array(             
                            'title' => $entry[$i]['title']['$t'],
                            'description' => $entry[$i]['media$group']['media$description']['$t'],                          
                            'published' =>$entry[$i]['published']['$t'],
                            'duration'=>$entry[$i]['media$group']['yt$duration']['seconds'], 
                            'videoid'=>$entry[$i]['media$group']['yt$videoid']['$t'],
                            'favoriteCount'=>$entry[$i]['yt$statistics']['favoriteCount'],
                            'viewCount'=>$entry[$i]['yt$statistics']['viewCount'],
                            'numDislikes'=>$entry[$i]['yt$rating']['numDislikes'],
                            'numLikes'=>$entry[$i]['yt$rating']['numLikes'],
                            'rating'=>$entry[$i]['gd$rating']['average'],
                            'max'=>$entry[$i]['gd$rating']['max'],
                            'min'=>$entry[$i]['gd$rating']['min'] ,
                            'numRaters'=>$entry[$i]['gd$rating']['numRaters'] ,
                            'rtsp1'=>$entry[$i]['media$group']['media$content']['1']['url'],
                            'rtsp2'=>$entry[$i]['media$group']['media$content']['2']['url'],
                        );
        array_push($PLayListVideos,$video);
                        /*
        echo "Name: ".$entry[$i]['title']['$t'].'<br/>';
        echo "published:  ".$entry[$i]['published']['$t']."<br />";
        echo "duration : ".$entry[$i]['media$group']['yt$duration']['seconds'].'<br/>';
        echo "videoid : ".$entry[$i]['media$group']['yt$videoid']['$t'].'<br/>';
        echo "Image 90 : ".$entry[$i]['media$group']['media$thumbnail'][0]['url'].'<br/>';
        echo "Image 180 : ".$entry[$i]['media$group']['media$thumbnail'][1]['url'].'<br/>';
        echo "Image 360 : ".$entry[$i]['media$group']['media$thumbnail'][2]['url'].'<br/>';
        echo "favoriteCount : ".$entry[$i]['yt$statistics']['favoriteCount'] .'<br/>';
        echo "viewCount : ".$entry[$i]['yt$statistics']['viewCount'] .'<br/>';
        echo "numDislikes : ".$entry[$i]['yt$rating']['numDislikes'] .'<br/>';
        echo "numLikes : ".$entry[$i]['yt$rating']['numLikes'] .'<br/>';
        echo "rating : ".$entry[$i]['gd$rating']['average'] .'<br/>';
        echo "max : ".$entry[$i]['gd$rating']['max'] .'<br/>';
        echo "min : ".$entry[$i]['gd$rating']['min'] .'<br/>';
        echo "numRaters : ".$entry[$i]['gd$rating']['numRaters'] .'<br/>'; 

        echo "rtsp1 : ".$entry[$i]['media$group']['media$content']['1']['url'] .'<br/>'; 
        echo "rtsp2 : ".$entry[$i]['media$group']['media$content']['2']['url'] .'<br/>'; 
        */
        //print_r($entry[$i]); 
    }
    return $PLayListVideos;
}
?>

チャンネルにあるすべてのプレイリストを取得するにはどうすれば変更できますか?

4

2 に答える 2

1

max-results ... 結果セットに含める必要がある結果の最大数を指定します。このパラメーターは start-index パラメーターと連携して、返す結果を決定します... このパラメーターのデフォルト値は 25 で、最大値は 50 です...

この URL を使用して、最初の 25 個のビデオを取得します (max-results を明示的に指定することをお勧めします)。

http://gdata.youtube.com/feeds/api/playlists/FLz97F7dMxBNOfGYu3rx8aCw?max-results=25&start-index=1

次の 25 個のビデオを取得するには、start-index=26 を指定します。

http://gdata.youtube.com/feeds/api/playlists/FLz97F7dMxBNOfGYu3rx8aCw?max-results=25&start-index=26

ノート:

  • 番号付けは 1 から始まります
  • このノードを使用して、結果の総数とページングが必要かどうかを判断できます。
  • ノードを使用して、次の結果の URL を決定することもできます。
于 2013-05-08T18:45:54.800 に答える
0

この古い質問についてネクロを実行していますが、私はこれを自分で調査しています。他の人のプレイリストにアクセスしようとすると、公開されているプレイリストしか表示されません。プライベートなものには、履歴、お気に入り、注目のプレイリストが含まれる場合があります。プライベートな可能性がある他のものもあります。したがって、クエリを使用して "Mine" プレイリストを表示しない限り、これらは表示されません。保存された再生リストもあります。これらは、誰かが自分のチャンネルにリンクを保存した他の再生リストです。だから、開発中のビデオを探して私のチャンネルに来るかもしれませんし、私は他のチャンネルへの参照を保存しているかもしれません. とにかく、この認識された問題により、この機能には API 経由でアクセスできないようです。

https://code.google.com/p/gdata-issues/issues/detail?id=6610

したがって、「チャンネルが持っているすべてのプレイリストを取得するために変更を加えるにはどうすればよいですか?」に対する最終的な答えとして、答えはできないということです。表示できないプライベート プレイリストが存在する可能性があり、このバグにより、保存されたプレイリストが表示されなくなります。

于 2015-01-14T00:43:31.143 に答える