Listar todos os videos de uma Playlist do Youtube

• Publicado em: maio 1, 2020

Função em PHP para listar todos os vídeos de uma playlist do Youtube. Até então, só havia encontrado código com um XML com limite de até 15 videos e não ia mais além do que isso. Com esse JSON da API do Youtube, você consegue listar todos os vídeos da sua playlist, independente se ela tem 20, 50, 100 ou mais vídeos nela.

O Youtube API possui uma limitação de até 50 vídeos por página. Nesse caso, existe duas variáveis para você fazer a paginação para próxima página e para página anterior que é a prevPageToken para anterior e a nextPageToken para próxima que estão sendo armazenadas no array que o pageToken é atualizado a cada paginação e assim você irá percorrer por toda a sua playlist.

Para conseguir a sua chave de Token (credencial), basta ir nesse link: https://console.developers.google.com/apis/credentials e criar uma.

Para pegar o ID da sua playlist é no link dela: https://www.youtube.com/playlist?list=IDHERE.

No caso eu decidi fazer um array só com minhas informações que eu achei necessária que são o título, a thumbnail e o link do vídeo, pois estou fazendo uma página que carrega o video em um modal. Para saber o que compõe o JSON, basta dar um print_r na variável $playlistVids que você verá todas as informações que vem da API do Youtube.

Segue o código abaixo:

function youtubePlaylist($quant='20'){
  $maxResults = ($quant<=50) ? $quant : 50; //YouTube API limit of 50 per page
  $playlistID = 'ID Here'; //Your Youtube Playlist ID
  $tokenKey   = 'Key Here'; //Your Token Key. Get here: https://console.developers.google.com/apis/credentials
  $videoList  = []; //Var to get video data
  $pagination = ''; //Var for previous and next pagination
	
  //Here check your get, post or ajax variable is empty
  if(isset($_GET['page']))
    $pagination = $_GET['page'];
	
  //Load json from Youtube API
  $playlistVids = json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&pageToken='.$pagination.'&maxResults='.$maxResults.'&playlistId='.$playlistID.'&key='.$tokenKey.''));

  //Get var for previous and next pagination
  $videoList['prev'] = (isset($playlistVids->prevPageToken)) ? $playlistVids->prevPageToken : '';
  $videoList['next'] = (isset($playlistVids->nextPageToken)) ? $playlistVids->nextPageToken : '';
		
  foreach($playlistVids->items as $k => $item):
    $vidID = $item->snippet->resourceId->videoId;
    $videoList['videos'][$k] = [
      'title' => $item->snippet->title,
      'img'   => 'https://i.ytimg.com/vi/'.$vidID.'/maxresdefault.jpg',
      'link'  => 'https://www.youtube.com/watch?v='.$vidID,		 
     ];
  endforeach;
  return $videoList;
}
echo '<pre>';
print_r(youtubePlaylist());

Caso queira pegar o código no meu Github segue o link:
https://github.com/romulobrasil/youtubeapiplaylist