{"id":29126,"date":"2021-06-08T10:00:00","date_gmt":"2021-06-08T07:00:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29126"},"modified":"2021-10-17T16:25:08","modified_gmt":"2021-10-17T13:25:08","slug":"obtenga-la-lista-de-videos-de-youtube-por-palabras-clave-usando-la-api-de-busqueda-de-youtube","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/obtenga-la-lista-de-videos-de-youtube-por-palabras-clave-usando-la-api-de-busqueda-de-youtube\/","title":{"rendered":"Obtenga la lista de videos de YouTube por palabras clave usando la API de b\u00fasqueda de YouTube"},"content":{"rendered":"<p>YouTube es el segundo motor de b\u00fasqueda m\u00e1s grande del mundo. Debido a su popularidad, muchos sitios web integran funcionalidades relacionadas con YouTube en su sitio web. Esto incluye incrustar videos de YouTube, bot\u00f3n de suscripci\u00f3n de YouTube, galer\u00eda de videos de YouTube, b\u00fasqueda de videos, etc. En este art\u00edculo, veremos c\u00f3mo integrar la API de b\u00fasqueda de YouTube al sitio web.<\/p>\n<p>Este art\u00edculo explica c\u00f3mo se puede implementar la tarea de buscar videos de YouTube dentro de un sitio web. Usaremos la API de b\u00fasqueda de YouTube para obtener videos basados \u200b\u200ben palabras clave, filtrarlos por opciones disponibles (fecha, calificaci\u00f3n, etc.) y mostrar la lista de videos. Voy a imprimir el t\u00edtulo del video y la identificaci\u00f3n del video. El usuario puede imprimir otra informaci\u00f3n tambi\u00e9n seg\u00fan sus necesidades.<\/p>\n<h3>Empezando<\/h3>\n<p>Para comenzar, primero debe crear una clave API en su cuenta de Google Console. Esta clave es necesaria al interactuar con las API de YouTube. Sin esta clave, YouTube considera que todas las llamadas API entrantes no est\u00e1n autorizadas.<\/p>\n<p>A continuaci\u00f3n se muestran los pasos para obtener la clave API.<\/p>\n<ul>\n<li>Dir\u00edgete a la Consola para desarrolladores de Google <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>Crea un nuevo proyecto. Opcionalmente, tambi\u00e9n puede seleccionar un proyecto existente.<\/li>\n<li>Da nombre a tu proyecto. Google Console crear\u00e1 un ID de proyecto \u00fanico para usted.<\/li>\n<li>Su proyecto reci\u00e9n creado aparecer\u00e1 en la parte superior de la barra lateral izquierda.<\/li>\n<li>Haga clic en Biblioteca en el men\u00fa de la izquierda. Ver\u00e1 una lista de API de Google. Habilite la API de datos de YouTube.<\/li>\n<li>A continuaci\u00f3n, en el men\u00fa de la izquierda, haga clic en Credenciales. Seleccione la clave API en Crear credenciales.<\/li>\n<li>Copie esta clave 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=\"Obtenga la lista de videos de YouTube por palabras clave usando la API de b\u00fasqueda de YouTube\" ><\/a><\/p>\n<h3>Crear una interfaz de usuario<\/h3>\n<p>Para este tutorial, voy a crear un formulario donde un usuario puede ingresar la palabra clave, elegir una cantidad de videos para regresar y filtrar el tipo. La API de YouTube tiene un l\u00edmite de 50 registros a la vez, por lo que mantendremos un l\u00edmite de 50 en los campos num\u00e9ricos. Agregaremos paginaci\u00f3n para obtener el conjunto de registros anterior y siguiente. En cada respuesta, YouTube proporciona valores para nextPageToken y prevPageToken si est\u00e1n disponibles. Usando estos valores como un par\u00e1metro como &#8216;pageToken = PageToken_VALUE&#8217; en las solicitudes HTTP GET, podemos recuperar el conjunto de registros siguiente o anterior.<\/p>\n<p>Hay varias opciones disponibles para los tipos de filtro que son &#8216;fecha&#8217;, &#8216;calificaci\u00f3n&#8217;, &#8216;relevancia&#8217;, &#8216;t\u00edtulo&#8217;, &#8216;viewCount&#8217;. El usuario puede seleccionar cualquiera de ellos y el resultado final depender\u00e1 del filtro seleccionado.<\/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>Aqu\u00ed creamos un formulario que tiene 3 campos para ingresar una palabra clave, establecer el n\u00famero de registros para devolver y el tipo de filtro.<\/p>\n<h3>Integrar la API de b\u00fasqueda de YouTube<\/h3>\n<p>En esta etapa, estamos listos con nuestra clave API y formulario HTML. A continuaci\u00f3n, necesitamos obtener los valores del formulario y pasarlos al punto final de la API de YouTube junto con la clave de la API. Despu\u00e9s de esto, procesaremos la respuesta 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>El c\u00f3digo anterior comprueba los par\u00e1metros de consulta de una palabra clave, max_result y el valor de orden para ordenar. Toma estos valores y los pasa al punto final de la API. A cambio, agrega respuesta a la variable <code>$arr_list<\/code>. Recorreremos esta variable e imprimiremos la informaci\u00f3n sobre los videos.<\/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>Puede colocar este c\u00f3digo despu\u00e9s del HTML del formulario. Le dar\u00e1 una lista de t\u00edtulos de video, identificadores de video junto con enlaces de paginaci\u00f3n.<\/p>\n<p>Nuestro c\u00f3digo final es el siguiente:<\/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 comprenda la integraci\u00f3n de la API de b\u00fasqueda de YouTube en su sitio web. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-obtener-etiquetas-de-video-de-youtube-usando-la-api-de-youtube\/\" title=\"C\u00f3mo obtener etiquetas de video de YouTube usando la API de YouTube\">C\u00f3mo obtener etiquetas de video de YouTube usando la API de YouTube<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/api-de-youtube-como-obtener-una-lista-de-videos-de-youtube-de-su-canal\/\" title=\"API de YouTube: c\u00f3mo obtener una lista de videos de YouTube de su canal\">API de YouTube: c\u00f3mo obtener una lista de videos de YouTube de su canal<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-obtener-miniaturas-de-videos-de-youtube-vimeo-y-dailymotion\/\" title=\"C\u00f3mo obtener miniaturas de videos de YouTube, Vimeo y Dailymotion\">C\u00f3mo obtener miniaturas de videos de YouTube, Vimeo y Dailymotion<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, estudiamos c\u00f3mo usar la API de b\u00fasqueda de YouTube para obtener la lista de videos por palabras clave. Buscaremos videos basados \u200b\u200ben palabras clave, filtros<\/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":[271],"tags":[849],"class_list":["post-29126","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=29126"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29126\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21608"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}