PHP

YouTube: Capturando os dados de um vídeo

Olá pessoal! Entrando com mais um post.

Já escrevi 2 posts dando dicas de como obter o Título e o ID de um vídeo do YouTube.

Agora, mostro de uma forma mais completa, incluindo a possibilidade de pegar a descrição do vídeo e o número de visualizações.

O código é baseado na versão 2 da API do YouTube. Mais informações clique aqui.

Nota: a API de dados do YouTube (v2) foi suspensa oficialmente em 4 de março de 2014.

Script atualizado para YouTube Data API (v3)

Importante: na versão 3 é necessário uma Conta do Google e uma chave API.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
function getDadosYoutube($url){
    $parse = parse_url( $url, PHP_URL_QUERY ); // v=yTmIkOwA98o
    parse_str($parse, $youtubeID); // Array ( [v] => yTmIkOwA98o )
 
    // informa a sua chave API
    $key = "INFORME_SUA_CHAVE_API";
    // montando a url
    $url = "https://www.googleapis.com/youtube/v3/videos?id=" . $youtubeID['v'] . "&key=" . $key . "&part=snippet,contentDetails,statistics";
 
    // exemplo de como pegar uma minatura do vídeo
    //$url = "https://www.googleapis.com/youtube/v3/videos?id=" . $youtubeID['v'] . "&key=" . $key . "&part=snippet&fields=items(snippet(thumbnails(high(url))))";
 
    // obtendo os dados de retorno (json)
    $json_output = file_get_contents($url);
    $json = json_decode($json_output, true);
 
    // atribuindo os valores 
    $videoTitulo        = $json['items'][0]['snippet']['title'];
    $videoDescricao     = $json['items'][0]['snippet']['description'];
    $videoViews         = $json['items'][0]['statistics']['viewCount'];
 
    // formatando o resultado
    $resultado  = "<h3>Título:</h3>";
    $resultado .= "<p>". $videoTitulo ."</p>";
    $resultado .= "<h3>Descrição:</h3>";
    $resultado .= "<p>". nl2br($videoDescricao) ."</p>";
    $resultado .= "<h3>Nr. de visualizações:</h3>";
    $resultado .= "<p>". $videoViews ."</p>";
 
    // imprime o resultado
    echo $resultado;
 
    // permite visualizar todos os dados disponíveis de um vídeo
    //print_r($json);
}
 
// URL do vídeo
$urlYoutube = "https://www.youtube.com/watch?v=XjWF6QjAS-A";
// chamada da função
getDadosYoutube($urlYoutube);
?>

Desatualizado: YouTube Data API (v2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
   function getDadosYoutube($url){
      $parse = parse_url( $url, PHP_URL_QUERY ); // v=yTmIkOwA98o
      parse_str($parse, $youtubeID); // Array ( [v] => yTmIkOwA98o )
      $url = "http://gdata.youtube.com/feeds/api/videos/". $youtubeID['v']."?v=2&alt=json";
 
      $json_output = file_get_contents($url);
      $json = json_decode($json_output, true);
 
      $videoTitulo      = $json['entry']['title']['$t'];
      $videoDescricao   = $json['entry']['media$group']['media$description']['$t'];
      $videoViews       = $json['entry']['yt$statistics']['viewCount'];
 
      $resultado  = "<h3>Título:</h3>";
      $resultado .= "<p>". $videoTitulo."</p>";
      $resultado .= "<h3>Descrição:</h3>";
      $resultado .= "<p>". nl2br($videoDescricao)."</p>";
      $resultado .= "<h3>Nr. de visualizações:</h3>";
      $resultado .= "<p>". $videoViews."</p>";
 
      echo $resultado;
 
      //print_r($json); -- permite visualizar todos os dados disponíveis de um vídeo
   }
   $urlYoutube = "https://www.youtube.com/watch?v=XjWF6QjAS-A";
   getDadosYoutube($urlYoutube);
?>

Não deixe de curtir a nossa página e qualquer dúvida, use os comentários.

Até a próxima!

6 thoughts on “YouTube: Capturando os dados de um vídeo

  • Rodrigo

    YouTube não usa mais gdata.

    Resposta
  • Pierre Henrique

    Olá eu copiei esse código mas não exibiu nada em meu site… como eu faço pra exibir dados de um video especifico?

    Resposta
  • Yan

    Amiga, o youtube não usa mas gdata. Eu uso Modern ACC e infelizmente não tem como mais add video. Como faço agora, poderia me dizer?

    Resposta

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *