{"id":27975,"date":"2021-05-29T14:38:00","date_gmt":"2021-05-29T11:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27975"},"modified":"2021-10-18T04:06:19","modified_gmt":"2021-10-18T01:06:19","slug":"api-do-youtube-como-obter-uma-lista-de-videos-do-youtube-de-seu-canal","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/api-do-youtube-como-obter-uma-lista-de-videos-do-youtube-de-seu-canal\/","title":{"rendered":"API do YouTube &#8211; Como obter uma lista de v\u00eddeos do YouTube de seu canal"},"content":{"rendered":"<p>Recentemente, um de nossos leitores perguntou como obter uma lista de v\u00eddeos de um canal do YouTube? Eles queriam mostrar uma lista de seus v\u00eddeos em formato tabular. Neste artigo, estudamos como usar a API do YouTube para obter uma lista de v\u00eddeos do YouTube de seu canal.<\/p>\n<p>Um usu\u00e1rio pode ver todos os seus v\u00eddeos no pr\u00f3prio site do YouTube. Mas se voc\u00ea deseja compartilhar a lista de v\u00eddeos com outra pessoa, voc\u00ea deve manter esses dados offline. Por outro lado, alguns usu\u00e1rios podem querer exibir uma lista de v\u00eddeos em seus sites.<\/p>\n<p>Dito isso, vamos dar uma olhada em como obter uma lista de v\u00eddeos do YouTube usando a API do YouTube.<\/p>\n<p><strong>Nota:<\/strong> Usando o c\u00f3digo deste artigo, voc\u00ea tamb\u00e9m pode obter uma lista de v\u00eddeos de qualquer canal do YouTube fornecendo um ID de canal v\u00e1lido do YouTube.<\/p>\n<h3>Obtenha sua chave de API<\/h3>\n<p>Para come\u00e7ar a usar a API do YouTube, primeiro voc\u00ea precisa criar uma chave de API em sua conta do Google. Essa chave \u00e9 necess\u00e1ria ao interagir com as APIs do YouTube. Sem essa chave, o YouTube considera todas as solicita\u00e7\u00f5es de API recebidas como n\u00e3o autorizadas.<\/p>\n<p>Siga as etapas abaixo para criar uma chave API.<\/p>\n<ul>\n<li>V\u00e1 para o Google Developer Console <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/console.developers.google.com<\/a>.<\/li>\n<li>Crie um novo projeto. Voc\u00ea tamb\u00e9m pode selecionar um projeto existente.<\/li>\n<li>Digite um nome para o seu projeto. O console do Google criar\u00e1 um ID de projeto exclusivo.<\/li>\n<li>Depois de criar um projeto, ele aparecer\u00e1 no topo da barra lateral esquerda.<\/li>\n<li>Clique em Biblioteca. Voc\u00ea ver\u00e1 uma lista de APIs do Google.<\/li>\n<li>Ative a API de dados do YouTube.<\/li>\n<li>Clique nas credenciais. Selecione a chave API em Criar credenciais.<\/li>\n<li>Copie a chave de API. Vamos precisar disso em um momento.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20424-6081ef644e221.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20424-6081ef644e221.png\" alt=\"API do YouTube - Como obter uma lista de v\u00eddeos do YouTube de seu canal\" ><\/a><\/p>\n<h3>Obtenha uma lista de v\u00eddeos do YouTube<\/h3>\n<p>Quando estiver pronto com a chave API, crie 3 arquivos em seu projeto. Esses arquivos representam m\u00e9todos de configura\u00e7\u00e3o e auxiliares, manipula\u00e7\u00e3o de Ajax e exibem o resultado final.<\/p>\n<ul>\n<li><code>config.php<\/code>: Neste arquivo, definimos a chave API como uma constante. Ele tamb\u00e9m possui um m\u00e9todo auxiliar que fornece uma chamada de API e recebe uma resposta.<\/li>\n<li><code>ajax.php<\/code>: Este arquivo ir\u00e1 chamar a API para obter o pr\u00f3ximo conjunto de resultados fornecidos com o m\u00e1ximo de resultados a serem retornados.<\/li>\n<li><code>index.php<\/code>: Cont\u00e9m um formul\u00e1rio, c\u00f3digo para chamada Ajax, exibe a lista de v\u00eddeos.<\/li>\n<\/ul>\n<p>No <code>config.php<\/code>arquivo, vamos declarar a chave de API como uma vari\u00e1vel constante. Tamb\u00e9m definimos o m\u00e9todo auxiliar que interage com os terminais da API.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\ndefine('GOOGLE_API_KEY', 'PASTE_YOUR_API_KEY');\n\u00a0\nfunction getYTList($api_url = '') {\n\u00a0\u00a0\u00a0\u00a0$ch = curl_init();\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_URL, $api_url);\n\u00a0\u00a0\u00a0\u00a0curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\u00a0\u00a0\u00a0\u00a0$response = curl_exec($ch);\n\u00a0\u00a0\u00a0\u00a0$arr_result = json_decode($response);\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_result-&gt;items)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $arr_result;\n\u00a0\u00a0\u00a0\u00a0} elseif (isset($arr_result-&gt;error)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/var_dump($arr_result); \/\/this line gives you error info if you are not getting a video list.\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Certifique-se de substituir o marcador pela chave de API real. Voc\u00ea tamb\u00e9m precisa ter a extens\u00e3o cURL habilitada em seu servidor.<\/p>\n<h4>Crie um formul\u00e1rio<\/h4>\n<p>Em seguida, precisamos de um formul\u00e1rio simples onde podemos inserir o id do canal do YouTube e o n\u00famero de v\u00eddeos a serem retornados. A API do YouTube retorna no m\u00e1ximo 50 v\u00eddeos por vez.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;form method=\"get\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"channel\" placeholder=\"Enter Channel ID\" value=\"&lt;?php if(array_key_exists('channel', $_GET)) echo $_GET['channel']; ?&gt;\" required&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"number\" name=\"max_result\" placeholder=\"Max Results\" min=\"1\" max=\"50\" value=\"&lt;?php if(array_key_exists('max_result', $_GET)) echo $_GET['max_result']; ?&gt;\" required&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"submit\" value=\"Submit\"&gt;&lt;\/p&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Ap\u00f3s o envio do formul\u00e1rio, estou enviando o id do canal e max_result pelo m\u00e9todo GET. Portanto, na parte superior do mesmo arquivo, escreverei o c\u00f3digo da seguinte maneira:<\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\n$arr_list = array();\nif (array_key_exists('channel', $_GET) &amp;&amp; array_key_exists('max_result', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0$channel = $_GET['channel'];\n\u00a0\u00a0\u00a0\u00a0$url = \"https:\/\/www.googleapis.com\/youtube\/v3\/search?channelId=$channel&amp;order=date&amp;part=snippet&amp;type=video&amp;maxResults=\". $_GET['max_result'] .\"&amp;key=\". GOOGLE_API_KEY;\n\u00a0\u00a0\u00a0\u00a0$arr_list = getYTList($url);\n}\n?&gt;<\/code><\/pre>\n<p>Esse c\u00f3digo inclui um arquivo de configura\u00e7\u00e3o, obt\u00e9m os par\u00e2metros, constr\u00f3i um URL de API e, em seguida, passa-o para o m\u00e9todo auxiliar que criamos na etapa anterior. Para exibir o resultado, adicione o c\u00f3digo abaixo ap\u00f3s o seu formul\u00e1rio.<\/p>\n<p>N\u00e3o vou me concentrar no design de uma lista. O principal objetivo do tutorial \u00e9 buscar v\u00eddeos do YouTube. Vou exibi-lo no formato de lista.<\/p>\n<pre><code>&lt;?php\nif (!empty($arr_list)) {\n\u00a0\u00a0\u00a0\u00a0echo '&lt;ul class=\"video-list\"&gt;';\n\u00a0\u00a0\u00a0\u00a0foreach ($arr_list-&gt;items as $yt) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;li&gt;\". $yt-&gt;snippet-&gt;title .\" (\". $yt-&gt;id-&gt;videoId .\")&lt;\/li&gt;\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo '&lt;\/ul&gt;';\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;nextPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;input type=\"hidden\" class=\"nextpagetoken\" value=\"'. $arr_list-&gt;nextPageToken .'\" \/&gt;';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;div id=\"loadmore\"&gt;Load More&lt;\/div&gt;';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Aqui estamos percorrendo os v\u00eddeos e imprimindo o t\u00edtulo e a id do v\u00eddeo. Se obtivermos o valor de &#8216;nextPageToken&#8217;, estaremos adicionando um campo oculto e o elemento Carregar mais. Isso ocorre porque se voc\u00ea tiver mais de 50 v\u00eddeos no canal, podemos obter o pr\u00f3ximo conjunto de registros usando este valor &#8216;nextPageToken&#8217;. Depois disso, precisamos dar uma chamada Ajax no clique do bot\u00e3o Load More.<\/p>\n<h4>Chamada Ajax<\/h4>\n<p>Quando clicarmos em Carregar mais ele far\u00e1 uma chamada para o <code>ajax.php<\/code>arquivo. Este arquivo nos fornecer\u00e1 o pr\u00f3ximo conjunto de registros que ser\u00e1 anexado \u00e0 lista existente. Escreva o c\u00f3digo JavaScript abaixo no final do <code>index.php<\/code>arquivo.<\/p>\n<pre><code>&lt;script&gt;\nvar httpRequest, nextPageToken;\ndocument.getElementById(\"loadmore\").addEventListener('click', makeRequest);\nfunction makeRequest() {\n\u00a0\u00a0\u00a0\u00a0httpRequest = new XMLHttpRequest();\n\u00a0\u00a0\u00a0\u00a0nextPageToken = document.querySelector('.nextpagetoken').value;\n\u00a0\u00a0\u00a0\u00a0if (!httpRequest) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert('Giving up: Cannot create an XMLHTTP instance');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0httpRequest.onreadystatechange = function(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (this.readyState == 4 &amp;&amp; this.status == 200) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var list = JSON.parse(this.responseText);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(var i in list) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(list[i].title != undefined &amp;&amp; list[i].id != undefined) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var newElement = document.createElement('li');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0newElement.innerHTML = '&lt;li&gt;'+ list[i].title +'('+ list[i].id +')&lt;\/li&gt;';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0document.querySelector('.video-list').appendChild(newElement);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(list[list.length-1].nextPageToken != undefined) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0document.querySelector('.nextpagetoken').value = list[list.length-1].nextPageToken;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var loadmore = document.getElementById(\"loadmore\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loadmore.parentNode.removeChild(loadmore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0\u00a0\u00a0httpRequest.open('GET', 'ajax.php?channel=&lt;?php echo $_GET['channel']; ?&gt;&amp;max_result=&lt;?php echo $_GET['max_result']; ?&gt;&amp;nextPageToken='+nextPageToken, true);\n\u00a0\u00a0\u00a0\u00a0httpRequest.send();\n}\n&lt;\/script&gt;<\/code><\/pre>\n<p>Para este artigo, estou usando o JavaScript vanilla para chamada ajax e anexando a resposta ao DOM. Para o arquivo ajax, estou enviando os valores de id do canal, max_result e &#8216;nextPageToken&#8217;.<\/p>\n<p>No arquivo ajax com a ajuda desses par\u00e2metros, constru\u00edmos a URL da API. Ao receber uma resposta, criaremos um objeto JSON contendo informa\u00e7\u00f5es do v\u00eddeo e o enviaremos de volta. Ao JSON final, tamb\u00e9m estou anexando um valor &#8216;nextPageToken&#8217; para obter o pr\u00f3ximo conjunto de registros em chamadas Ajax subsequentes.<\/p>\n<p><strong>ajax.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\n$url = \"https:\/\/www.googleapis.com\/youtube\/v3\/search?channelId=\". $_GET['channel'] .\"&amp;order=date&amp;part=snippet&amp;type=video&amp;maxResults=\". $_GET['max_result'] .\"&amp;pageToken=\". $_GET['nextPageToken'] .\"&amp;key=\". GOOGLE_API_KEY;\n\u00a0\n$arr_list = getYTList($url);\n\u00a0\n$arr_result = array();\nif (!empty($arr_list)) {\n\u00a0\u00a0\u00a0\u00a0foreach ($arr_list-&gt;items as $yt) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array_push($arr_result, ['title' =&gt; $yt-&gt;snippet-&gt;title, 'id' =&gt; $yt-&gt;id-&gt;videoId]);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;nextPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array_push($arr_result, ['nextPageToken' =&gt; $arr_list-&gt;nextPageToken]);\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\necho json_encode($arr_result);<\/code><\/pre>\n<p>Nosso c\u00f3digo JavaScript recebe essa resposta JSON e anexa o resultado \u00e0 lista existente de v\u00eddeos do YouTube. Este processo continua at\u00e9 encontrarmos o valor para &#8216;nextPageToken&#8217;.<\/p>\n<p>Espero que voc\u00ea entenda como obter uma lista de v\u00eddeos de um canal no YouTube. Por favor, compartilhe suas id\u00e9ias ou sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-usar-a-api-do-youtube-para-enviar-video-ao-canal-do-youtube\/\" title=\"Como usar a API do YouTube para enviar v\u00eddeo no canal do YouTube\">Como usar a API do YouTube para enviar v\u00eddeo no canal do YouTube<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/obtenha-a-lista-de-videos-do-youtube-por-palavras-chave-usando-a-api-de-pesquisa-do-youtube\/\" title=\"Como obter a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube\">Como obter a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-adicionar-o-login-do-google-oauth-a-um-site-com-php\/\" title=\"Como adicionar o login do Google OAuth a um site com PHP\">Como adicionar o login do Google OAuth a um site com PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos como obter uma lista de v\u00eddeos do YouTube usando a API do YouTube. Voc\u00ea pode querer uma lista de v\u00eddeos para exibi-la em um site<\/p>\n","protected":false},"author":1,"featured_media":21640,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-27975","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27975"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27975\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}