Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u810915952/domains/romulobrasil.com/public_html/wp-includes/functions.php on line 6121
Listar todos os videos de uma Playlist do Youtube - Rômulo Brasil

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