¿Cómo obtener la cantidad de vistas de video con la API de YouTube?

84

La pregunta es muy sencilla. ¿Cómo obtener la cantidad de vistas de video con la API de YouTube?

ingrese la descripción de la imagen aquí

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 )

Apuesta inicial
fuente
¿Quiere utilizar solo JavaScript para hacer esto?
Victor
cualquier cosa que funcione varía bien. como dije, debo consultar una gran cantidad de videos con mucha frecuencia.
Ante
No relacionado: LOL @ facebook. Si tienes un restserver.php, claramente estás perdiendo el punto.
Rudie
consulte esta URL de API de muestra de YouTube Data API v3 freakyjolly.com/youtube-data-v3-api-sample-api-get-url
Code Spy

Respuestas:

75

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

Víctor
fuente
5
Gracias, me ahorraste 30 minutos de excavación :)
Martin
esto parece estar desactualizado aunque? Todos los recuentos de visualizaciones de mis videos a través de este método están unos 100 o más por detrás de lo que se muestra en la página de visualización del video
mdskinner
Youtube retrasa la visualización de videos populares, no hay mucho que puedas hacer al respecto.
Dylan Cross
3
Para su información, esto se rompió alrededor del 20 de abril de 2015 y solo devuelve la información de visualización de youtube.com/watch?v=UKY3scPIMd8 que apunta a youtube.com/devicesupport . Básicamente, use la API v3.
Ryan DuVal
1
ERR_INVALID_RESPONSE
Alexey Sh.
66

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"
   }
  }
 ]
}
Matias Molinas
fuente
2
Este es el camino a seguir ahora, la versión 2 del API Google está en desuso desde marzo de 2014. Consejo adicional: se puede recuperar varias partes de la API de la siguiente manera: part=statistics,contentDetails. Además, incluso la API V2 parece funcionar en la mayoría de los casos, pero no en algunos videos.
COIL
10

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>
steffanjj
fuente
8

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);}
SVS
fuente
¡Gracias por la gran demostración!
Gareth
5

¿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.

NVRM
fuente
4

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;
    ?>
dragos
fuente
Puede explicar más y qué idioma usó.
Rahil Wazir
Esto parece estar usando la antigua v2 de la API, que ahora está en desuso.
Simon East
3

Usando youtube-dly jq:

views() {
    id=$1
    youtube-dl -j https://www.youtube.com/watch?v=$id |
        jq -r '.["view_count"]'
}

views fOX1EyHkQwc
Ole Tange
fuente
2

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()));
        }
    }
}
zmonteca
fuente
1

mira la yt:statisticsetiqueta. Proporciona viewCount, videoWatchCount, favoriteCountetc.

Rajani Karuturi
fuente
1

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);
        }
    }
});
Bartburkhardt
fuente
Gracias por agregar el parámetro de consulta alt = json. La respuesta predeterminada es atom
Jonathan Morales Vélez
1

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.

Devner
fuente
1

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'};
Shahzaib Chadhar
fuente
1

Puede usar JQuery, no olvide reemplazar la Your-Api-Keycadena 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>
RegarBoy
fuente
-7

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
Ryan Alberts
fuente
1
Youtube advierte cuando la API está a punto de cambiar. Pero no tiene ningún contrato con los desarrolladores en el sitio web. Así que esta no es una buena idea
FRAGA