La pregunta es muy sencilla. ¿Cómo obtener la cantidad de vistas de video con la API de YouTube?
La tarea es simple, pero me gustaría usar esa consulta en una gran cantidad de videos con mucha frecuencia. ¿Hay alguna forma de llamar a su API de Youtube y obtenerla? (algo así como facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )
javascript
youtube-api
Apuesta inicial
fuente
fuente
restserver.php
, claramente estás perdiendo el punto.Respuestas:
Creo que la forma más fácil es obtener información de video en formato JSON. Si desea usar JavaScript, pruebe jQuery.getJSON () ... Pero yo prefiero PHP:
<?php $video_ID = 'your-video-ID'; $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json"); $JSON_Data = json_decode($JSON); $views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'}; echo $views; ?>
Ref: API de Youtube - Recuperación de información sobre un solo video
fuente
Puede utilizar la nueva API de datos de YouTube v3
si recupera el video, la parte de estadísticas contiene viewCount :
del doc:
https://developers.google.com/youtube/v3/docs/videos#resource
statistics.viewCount / La cantidad de veces que se ha visto el video.
Puede recuperar esta información en el lado del cliente o en el lado del servidor utilizando algunas de las bibliotecas del cliente:
https://developers.google.com/youtube/v3/libraries
Y puede probar la llamada a la API desde el documento:
https://developers.google.com/youtube/v3/docs/videos/list
Muestra:
Solicitud:
GET https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Q5mHPo2yDG8&key={YOUR_API_KEY} Authorization: Bearer ya29.AHES6ZSCT9BmIXJmjHlRlKMmVCU22UQzBPRuxzD7Zg_09hsG X-JavaScript-User-Agent: Google APIs Explorer
Respuesta:
200 OK - Show headers - { "kind": "youtube#videoListResponse", "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/dZ8K81pnD1mOCFyHQkjZNynHpYo\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, "items": [ { "id": "Q5mHPo2yDG8", "kind": "youtube#video", "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/4NA7C24hM5mprqQ3sBwI5Lo9vZE\"", "statistics": { "viewCount": "36575966", "likeCount": "127569", "dislikeCount": "5715", "favoriteCount": "0", "commentCount": "20317" } } ] }
fuente
part=statistics,contentDetails
. Además, incluso la API V2 parece funcionar en la mayoría de los casos, pero no en algunos videos.La versión 2 de la API ha quedado obsoleta desde marzo de 2014, que utilizan algunas de estas otras respuestas.
Aquí hay un fragmento de código muy simple para obtener el recuento de vistas de un video, usando JQuery en la API de YouTube v3.
Primero deberá crear una clave API a través de la Consola para desarrolladores de Google .
<script> $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Qq7mpb-hCBY&key={{YOUR-KEY}}', function(data) { alert("viewCount: " + data.items[0].statistics.viewCount); }); </script>
fuente
Aquí hay un pequeño fragmento de código para obtener vistas de videos de Youtube desde URL usando Javascript
Demostración del siguiente código
function videoViews() { var rex = /[a-zA-Z0-9\-\_]{11}/, videoUrl = $('input').val() === '' ? alert('Enter a valid Url'):$('input').val(), videoId = videoUrl.match(rex), jsonUrl = 'http://gdata.youtube.com/feeds/api/videos/' + videoId + '?v=2&alt=json', embedUrl = '//www.youtube.com/embed/' + videoId, embedCode = '<iframe width="350" height="197" src="' + embedUrl + '" frameborder="0" allowfullscreen></iframe>' //Get Views from JSON $.getJSON(jsonUrl, function (videoData) { var videoJson = JSON.stringify(videoData), vidJson = JSON.parse(videoJson), views = vidJson.entry.yt$statistics.viewCount; $('.views').text(views); }); //Embed Video $('.videoembed').html(embedCode);}
fuente
¿Por qué usar cualquier clave api para recuperar una parte de html público?
El ejemplo demostrativo de línea de comando de Unix más simple, usando curl , grep y cut .
curl https://www.youtube.com/watch?v=r-y7jzGxKNo | grep watch7-views-info | cut -d">" -f8 | cut -d"<" -f1
Sí, obtiene la página html completa, esta pérdida no tiene sentido frente a las innumerables ventajas.
fuente
También puedes usar esto:
<?php $youtube_view_count = json_decode(file_get_contents('http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json'))->entry->{'yt$statistics'}->viewCount; echo $youtube_view_count; ?>
fuente
Usando
youtube-dl
yjq
:views() { id=$1 youtube-dl -j https://www.youtube.com/watch?v=$id | jq -r '.["view_count"]' } views fOX1EyHkQwc
fuente
Utilice el cliente API de PHP de Google: https://github.com/google/google-api-php-client
Aquí hay una pequeña mini clase solo para obtener estadísticas de YouTube para una sola identificación de video. Obviamente, se puede extender mucho usando el resto de la API: https://api.kdyby.org/class-Google_Service_YouTube_Video.html
class YouTubeVideo { // video id public $id; // generate at https://console.developers.google.com/apis private $apiKey = 'REPLACE_ME'; // google youtube service private $youtube; public function __construct($id) { $client = new Google_Client(); $client->setDeveloperKey($this->apiKey); $this->youtube = new Google_Service_YouTube($client); $this->id = $id; } /* * @return Google_Service_YouTube_VideoStatistics * Google_Service_YouTube_VideoStatistics Object ( [commentCount] => 0 [dislikeCount] => 0 [favoriteCount] => 0 [likeCount] => 0 [viewCount] => 5 ) */ public function getStatistics() { try{ // Call the API's videos.list method to retrieve the video resource. $response = $this->youtube->videos->listVideos("statistics", array('id' => $this->id)); $googleService = current($response->items); if($googleService instanceof Google_Service_YouTube_Video) { return $googleService->getStatistics(); } } catch (Google_Service_Exception $e) { return sprintf('<p>A service error occurred: <code>%s</code></p>', htmlspecialchars($e->getMessage())); } catch (Google_Exception $e) { return sprintf('<p>An client error occurred: <code>%s</code></p>', htmlspecialchars($e->getMessage())); } } }
fuente
mira la
yt:statistics
etiqueta. ProporcionaviewCount
,videoWatchCount
,favoriteCount
etc.fuente
Aquí un ejemplo que usé en mi aplicación TubeCount .
También utilizo el parámetro fields para filtrar el resultado JSON, por lo que solo se devuelven los campos que necesito.
var fields = "fields=openSearch:totalResults,entry(title,media:group(yt:videoid),media:group(yt:duration),media:group(media:description),media:group(media:thumbnail[@yt:name='default'](@url)),yt:statistics,yt:rating,published,gd:comments(gd:feedLink(@countHint)))"; var channel = "wiibart"; $.ajax({ url: "http://gdata.youtube.com/feeds/api/users/"+channel+"/uploads?"+fields+"&v=2&alt=json", success: function(data){ var len = data.feed.entry.length; for(var k =0; k<len; k++){ var yt = data.feed.entry[k]; v.count = Number(yt.yt$statistics != undefined && yt.yt$statistics.viewCount != undefined ? yt.yt$statistics.viewCount : 0); } } });
fuente
Aquí hay una función simple en PHP que devuelve la cantidad de vistas que tiene un video de YouTube. Necesitará la clave de API de datos de YouTube (v3) para que esto funcione. Si no tiene la clave, obtenga una gratis en: API de datos de YouTube
//Define a constant so that the API KEY can be used globally across the application define("YOUTUBE_DATA_API_KEY", 'YOUR_YOUTUBE_DATA_API_KEY'); function youtube_video_statistics($video_id) { $json = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=statistics&id=" . $video_id . "&key=". YOUTUBE_DATA_API_KEY ); $jsonData = json_decode($json); $views = $jsonData->items[0]->statistics->viewCount; return $views; } //Replace YOUTUBE_VIDEO_ID with your actual YouTube video Id echo youtube_video_statistics('YOUTUBE_VIDEO_ID');
Estoy usando esta solución en mi aplicación y está funcionando a partir de hoy. Así que obtenga la clave API y la identificación del video de YouTube y reemplácelas en el código anterior (segunda línea y última línea) y debería estar listo.
fuente
PHP JSON
$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=$Videoid&key={YOUR-API-KEY}&part=statistics"); $json = json_decode($jsonURL);
Primero revisa este descomentando
//var_dump(json);
y conseguir que las vistas cuenten como:
$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};
fuente
Ejemplo de URL de la API de datos de YouTube v3
Enlace de origen
fuente
Puede usar JQuery, no olvide reemplazar la
Your-Api-Key
cadena del código a continuación, siga el enlace para encontrar su propia consola de desarrolladores de Google clave de Api<script> $.getJSON('https://www.googleapis.com/youtube/v3/videospart=statistics&id=Qq7mpb-hCBY&key=Your-Api-Key', function(data) { console.log("viewCount: ", data.items[ 0 ].statistics.viewCount); }); </script>
fuente
Probablemente esto no sea lo que desea, pero puede descartar la página para obtener la información utilizando lo siguiente:
document.getElementsByClassName('watch-view-count')[0].innerHTML
fuente