{"id":28361,"date":"2021-06-08T09:32:00","date_gmt":"2021-06-08T06:32:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28361"},"modified":"2021-10-18T04:03:42","modified_gmt":"2021-10-18T01:03:42","slug":"obtenha-a-lista-de-videos-do-youtube-por-palavras-chave-usando-a-api-de-pesquisa-do-youtube","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/obtenha-a-lista-de-videos-do-youtube-por-palavras-chave-usando-a-api-de-pesquisa-do-youtube\/","title":{"rendered":"Obtenha a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube"},"content":{"rendered":"<p>O YouTube \u00e9 o segundo maior mecanismo de busca do mundo. Devido \u00e0 sua popularidade, muitos sites integram funcionalidades relacionadas ao YouTube em seus sites. Isso inclui a incorpora\u00e7\u00e3o de v\u00eddeos do YouTube, bot\u00e3o de inscri\u00e7\u00e3o do YouTube, galeria de v\u00eddeos do YouTube, pesquisa de v\u00eddeo, etc. Neste artigo, veremos como integrar a API de pesquisa do YouTube ao site.<\/p>\n<p>Este artigo explica como se pode implementar a tarefa de pesquisar v\u00eddeos do YouTube em um site. Usaremos a API de pesquisa do YouTube para obter v\u00eddeos com base em palavras-chave, filtrar por op\u00e7\u00f5es dispon\u00edveis (data, classifica\u00e7\u00e3o, etc.) e exibir a lista de v\u00eddeos. Vou imprimir o t\u00edtulo do v\u00eddeo e a id do v\u00eddeo. O usu\u00e1rio pode imprimir outras informa\u00e7\u00f5es tamb\u00e9m conforme sua necessidade.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para come\u00e7ar, primeiro voc\u00ea precisa criar uma chave de API em sua conta do Console do Google. Essa chave \u00e9 necess\u00e1ria ao interagir com as APIs do YouTube. Sem essa chave, o YouTube considera todas as chamadas de API recebidas como n\u00e3o autorizadas.<\/p>\n<p>Abaixo est\u00e3o as etapas para obter a chave API.<\/p>\n<ul>\n<li>Acesse 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. Opcionalmente, voc\u00ea tamb\u00e9m pode selecionar um projeto existente.<\/li>\n<li>D\u00ea um nome ao seu projeto. O console do Google criar\u00e1 um ID de projeto exclusivo para voc\u00ea.<\/li>\n<li>Seu projeto rec\u00e9m-criado aparecer\u00e1 no topo da barra lateral esquerda.<\/li>\n<li>Clique em Biblioteca no menu esquerdo. Voc\u00ea ver\u00e1 uma lista de APIs do Google. Ative a API de dados do YouTube.<\/li>\n<li>A seguir, no menu esquerdo, clique em Credenciais. Selecione a chave API em Criar credenciais.<\/li>\n<li>Copie esta chave de API.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20304-6081db195391c.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-20304-6081db195391c.png\" alt=\"Obtenha a lista de v\u00eddeos do YouTube por palavras-chave usando a API de pesquisa do YouTube\" ><\/a><\/p>\n<h3>Criar uma interface de usu\u00e1rio<\/h3>\n<p>Para este tutorial, vou criar um formul\u00e1rio onde o usu\u00e1rio pode inserir a palavra-chave, escolher v\u00e1rios v\u00eddeos para retornar e o tipo de filtro. A API do YouTube tem um limite de 50 registros por vez, portanto, manteremos um limite de 50 nos campos de n\u00famero. Adicionaremos pagina\u00e7\u00e3o para obter o conjunto de registros anterior e seguinte. Em cada resposta, o YouTube fornece valores para nextPageToken e prevPageToken, se dispon\u00edveis. Usando esses valores como um par\u00e2metro como &#8216;pageToken = PageToken_VALUE&#8217; em solicita\u00e7\u00f5es HTTP GET, podemos buscar o pr\u00f3ximo conjunto de registros ou o anterior.<\/p>\n<p>Existem v\u00e1rias op\u00e7\u00f5es dispon\u00edveis para os tipos de filtro: &#8216;data&#8217;, &#8216;classifica\u00e7\u00e3o&#8217;, &#8216;relev\u00e2ncia&#8217;, &#8216;t\u00edtulo&#8217;, &#8216;viewCount&#8217; O usu\u00e1rio pode selecionar qualquer um e o resultado final depender\u00e1 do filtro selecionado.<\/p>\n<pre><code>&lt;form method=\"get\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"q\" placeholder=\"Enter keyword\" value=\"&lt;?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?&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;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;select name=\"order\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"\"&gt;--SELECT ORDER--&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php foreach ($arr_orders as $order) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"&lt;?php echo $order; ?&gt;\" &lt;?php if(array_key_exists('order', $_GET) &amp;&amp; ($order==$_GET['order'])) echo 'selected'; ?&gt;&gt;&lt;?php echo ucfirst($order); ?&gt;&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/select&gt;\n\u00a0\u00a0\u00a0\u00a0&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>Aqui criamos um formul\u00e1rio que possui 3 campos para inserir uma palavra-chave, definir o n\u00famero de registros a serem retornados e o tipo de filtro.<\/p>\n<h3>Integre a API de pesquisa do YouTube<\/h3>\n<p>Neste est\u00e1gio, estamos prontos com nossa chave de API e formul\u00e1rio HTML. Em seguida, precisamos obter os valores do formul\u00e1rio e pass\u00e1-los ao endpoint da API do YouTube junto com a chave da API. Depois disso, processaremos a resposta final.<\/p>\n<pre><code>&lt;?php\n$api_key = 'YOUR_API_KEY';\n\u00a0\u00a0\n$arr_list = array();\nif (array_key_exists('q', $_GET) &amp;&amp; array_key_exists('max_result', $_GET) &amp;&amp; array_key_exists('order', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0$formatted_keyword = implode(\"+\", explode(\" \", $_GET['q']));\n\u00a0\u00a0\u00a0\u00a0$url = \"https:\/\/www.googleapis.com\/youtube\/v3\/search?q=$formatted_keyword&amp;order=\". $_GET['order'] .\"&amp;part=snippet&amp;type=video&amp;maxResults=\". $_GET['max_result'] .\"&amp;key=\". $api_key;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (array_key_exists('pageToken', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$url .= \"&amp;pageToken=\". $_GET['pageToken'];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_list = getYTList($url);\n}\n\u00a0\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\/\/print error $arr_result-&gt;error\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>O c\u00f3digo acima verifica os par\u00e2metros de consulta de uma palavra-chave, max_result e o valor do pedido para classifica\u00e7\u00e3o. Ele pega esses valores e os passa para o terminal da API. Em troca, ele acrescenta uma resposta \u00e0 vari\u00e1vel <code>$arr_list<\/code>. Faremos um loop por essa vari\u00e1vel e imprimiremos as informa\u00e7\u00f5es sobre os v\u00eddeos.<\/p>\n<pre><code>&lt;?php\nif (!empty($arr_list)) {\n\u00a0\u00a0\u00a0\u00a0echo '&lt;ul&gt;';\n\u00a0\u00a0\u00a0\u00a0foreach ($arr_list-&gt;items as $item) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;li&gt;\". $item-&gt;snippet-&gt;title .\" (Video ID: \". $item-&gt;id-&gt;videoId .\")&lt;\/li&gt;\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo '&lt;\/ul&gt;';\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$url = \"?q=\". $_GET['q'] .\"&amp;max_result=\". $_GET['max_result'] .\"&amp;order=\". $_GET['order'];\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;prevPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;a href=\"'.$url.'&amp;pageToken='.$arr_list-&gt;prevPageToken.'\"&gt;Previous&lt;\/a&gt;';\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;nextPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;a href=\"'.$url.'&amp;pageToken='.$arr_list-&gt;nextPageToken.'\"&gt;Next&lt;\/a&gt;';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Voc\u00ea pode colocar esse c\u00f3digo ap\u00f3s o HTML do formul\u00e1rio. Ele lhe dar\u00e1 uma lista de t\u00edtulos de v\u00eddeo, ids de v\u00eddeo e links de pagina\u00e7\u00e3o.<\/p>\n<p>Nosso c\u00f3digo final \u00e9 o seguinte:<\/p>\n<pre><code>&lt;?php\n$api_key = 'YOUR_API_KEY';\n\u00a0\u00a0\n$arr_list = array();\nif (array_key_exists('q', $_GET) &amp;&amp; array_key_exists('max_result', $_GET) &amp;&amp; array_key_exists('order', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0$formatted_keyword = implode(\"+\", explode(\" \", $_GET['q']));\n\u00a0\u00a0\u00a0\u00a0$url = \"https:\/\/www.googleapis.com\/youtube\/v3\/search?q=$formatted_keyword&amp;order=\". $_GET['order'] .\"&amp;part=snippet&amp;type=video&amp;maxResults=\". $_GET['max_result'] .\"&amp;key=\". $api_key;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (array_key_exists('pageToken', $_GET)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$url .= \"&amp;pageToken=\". $_GET['pageToken'];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_list = getYTList($url);\n}\n\u00a0\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\/\/print error $arr_result-&gt;error\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;\n\u00a0\n&lt;form method=\"get\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"q\" placeholder=\"Enter keyword\" value=\"&lt;?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?&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;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;select name=\"order\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"\"&gt;--SELECT ORDER--&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php foreach ($arr_orders as $order) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;option value=\"&lt;?php echo $order; ?&gt;\" &lt;?php if(array_key_exists('order', $_GET) &amp;&amp; ($order==$_GET['order'])) echo 'selected'; ?&gt;&gt;&lt;?php echo ucfirst($order); ?&gt;&lt;\/option&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/select&gt;\n\u00a0\u00a0\u00a0\u00a0&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;\n\u00a0\n&lt;?php\nif (!empty($arr_list)) {\n\u00a0\u00a0\u00a0\u00a0echo '&lt;ul&gt;';\n\u00a0\u00a0\u00a0\u00a0foreach ($arr_list-&gt;items as $item) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;li&gt;\". $item-&gt;snippet-&gt;title .\" (Video ID: \". $item-&gt;id-&gt;videoId .\")&lt;\/li&gt;\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo '&lt;\/ul&gt;';\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$url = \"?q=\". $_GET['q'] .\"&amp;max_result=\". $_GET['max_result'] .\"&amp;order=\". $_GET['order'];\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;prevPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;a href=\"'.$url.'&amp;pageToken='.$arr_list-&gt;prevPageToken.'\"&gt;Previous&lt;\/a&gt;';\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (isset($arr_list-&gt;nextPageToken)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo '&lt;a href=\"'.$url.'&amp;pageToken='.$arr_list-&gt;nextPageToken.'\"&gt;Next&lt;\/a&gt;';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Espero que voc\u00ea compreenda a integra\u00e7\u00e3o da API de pesquisa do YouTube ao seu site. Por favor, compartilhe seus pensamentos e 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-obter-tags-de-video-do-youtube-usando-a-api-do-youtube\/\" title=\"Como obter tags de v\u00eddeo do YouTube usando a API do YouTube\">Como obter tags de v\u00eddeo do YouTube usando a API do YouTube<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/api-do-youtube-como-obter-uma-lista-de-videos-do-youtube-de-seu-canal\/\" title=\"API do YouTube - Como obter uma lista de v\u00eddeos do YouTube do seu canal\">API do YouTube &#8211; Como obter uma lista de v\u00eddeos do YouTube do seu canal<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-obter-miniaturas-de-videos-do-youtube-vimeo-e-dailymotion\/\" title=\"Como obter miniaturas de v\u00eddeos do YouTube, Vimeo e Dailymotion\">Como obter miniaturas de v\u00eddeos do YouTube, Vimeo e Dailymotion<\/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 usar a API de pesquisa do YouTube para obter a lista de v\u00eddeos por palavras-chave. Vamos pesquisar v\u00eddeos com base em palavras-chave, filtro<\/p>\n","protected":false},"author":1,"featured_media":21608,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-28361","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\/28361","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=28361"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28361\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21608"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}