2013-05-06 1 views
1

Я использую PHP-скрипт, чтобы найти все плейлисты, которые загрузил определенный ID пользователя. Проблема заключается в том, что скрипт не возвращает все плейлисты, но только некоторые из них.Youtube Fetch Все плейлисты

Я хочу получить все плейлисты, но не все из них получены.

Проверьте это здесь: Link

Вот мой код (GET ARGUMENT ЯВЛЯЕТСЯ/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; 
} 
?> 

Как я могу внести изменения, чтобы получить все плейлисты канал имеет?

+1

Вы должны включить вывод, который вы сейчас получаете, и то, что вы хотели бы получить. Это облегчит людям помощь вам. –

ответ

1

Макс-результаты ... определяет максимальное количество результатов, которые должны быть включены в наборе результатов. Этот параметр работает в сочетании с : параметр начальный индекс, чтобы определить, какие результаты возвращать ... Значение по умолчанию этого параметра 25, а максимальное значение 50 ...

Используйте этот URL для получить первые 25 видео (явно с указанием максимальных значений результатов является хорошей идеей):

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

Чтобы получить следующие 25 видео указать начальный индекс = 26:

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

Примечания:

  • Нумерация начинается с 1
  • Вы можете использовать узел, чтобы определить общее число результатов и требуется ли подкачка.
  • Вы также можете использовать узел для определения URL-адреса следующих результатов.
0

Выполнение некроза по этому старому вопросу, но я сам это изучал. Когда вы пытаетесь получить доступ к чужим плейлистам, вы видите только публичные. Частные могут включать в себя историю, избранные и плейлисты для просмотра. Есть и другие, которые могут быть частными. Поэтому вы не увидите их, если не используете этот запрос, чтобы увидеть плейлисты «Mine». Есть также сохраненные плейлисты - это плейлисты других, где кто-то сохранил ссылку на своем канале. Таким образом, вы можете прийти на мой канал для поиска видео по разработке, и я мог бы сохранить ссылки на другие каналы, поэтому мне не нужно размещать vids в своих собственных плейлистах, я просто буду доверять другим, чтобы поддерживать их списки. Во всяком случае, эта функция, кажется, не имеет доступ через API за этого признанным вопрос: «Как я могу сделать изменения, чтобы получить все плейлист канала имеет»

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

Так как окончательный ответ на , ответ заключается в том, что вы не можете. Вероятно, будут частные плейлисты, которые вы не видите, и эта ошибка не позволяет вам видеть сохраненные плейлисты.

 Смежные вопросы

  • Нет связанных вопросов^_^