Come ottenere il numero di visualizzazioni video con l'API di YouTube?


84

La domanda è molto semplice. Come ottenere il numero di visualizzazioni video con l'API di YouTube?

inserisci qui la descrizione dell'immagine

Il compito è semplice ma vorrei utilizzare questa query su un gran numero di video molto spesso. C'è un modo per chiamare la loro API Youtube e ottenerlo? (qualcosa come facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )


Vuoi usare solo JavaScript per farlo?
Victor

tutto ciò che funziona varia bene. come ho detto, devo interrogare molto spesso su un gran numero di video.
Ante

Non correlato: LOL @ facebook. Se hai una restserver.php, stai chiaramente perdendo il punto.
Rudie

controlla questo URL API di esempio di YouTube Data API v3 freakyjolly.com/youtube-data-v3-api-sample-api-get-url
Code Spy

Risposte:


76

Penso che il modo più semplice sia ottenere informazioni sul video in formato JSON. Se vuoi usare JavaScript, prova jQuery.getJSON () ... Ma preferisco 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;
?>

Rif: Youtube API - Recupero di informazioni su un singolo video


5
Grazie, mi hai risparmiato 30 minuti di ricerche in giro :)
Martin

questo sembra essere fuori moda tho ?? il numero di visualizzazioni di tutti i miei video con questo metodo è di circa 100 volte inferiore a quello mostrato nella pagina di visualizzazione del video
mdskinner,

Youtube ritarda le visualizzazioni dei video popolari, non c'è davvero molto che puoi fare al riguardo.
Dylan Cross,

3
Cordiali saluti, questo si è interrotto intorno al 20 aprile 2015 e restituisce solo le informazioni di visualizzazione per youtube.com/watch?v=UKY3scPIMd8 che punta a youtube.com/devicesupport . Fondamentalmente, usa l'API v3.
Ryan DuVal

1
ERR_INVALID_RESPONSE
Alexey Sh.

66

Puoi utilizzare la nuova YouTube Data API v3

se recuperi il video, la parte delle statistiche contiene il viewCount :

dal doc:

https://developers.google.com/youtube/v3/docs/videos#resource

statistics.viewCount / Il numero di volte in cui il video è stato visualizzato.

È possibile recuperare queste informazioni sul lato client o sul lato server utilizzando alcune delle librerie client:

https://developers.google.com/youtube/v3/libraries

E puoi testare la chiamata API dal documento:

https://developers.google.com/youtube/v3/docs/videos/list

Campione:

Richiesta:

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

Risposta:

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"
   }
  }
 ]
}

2
Questa è la strada da percorrere ora, l'API di Google V2 è deprecato dal marzo 2014. Ulteriori punta: si può recuperare più parti della API in questo modo: part=statistics,contentDetails. Inoltre anche l'API V2 sembra funzionare nella maggior parte dei casi, non su alcuni video.
Bobina

11

La versione 2 dell'API è stata deprecata da marzo 2014, utilizzata da alcune di queste altre risposte.

Ecco uno snippet di codice molto semplice per ottenere il conteggio delle visualizzazioni da un video, utilizzando JQuery nell'API di YouTube v3.

Dovrai prima creare una chiave API tramite la Google Developer Console .

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

8

Ecco un piccolo frammento di codice per ottenere visualizzazioni di video di Youtube dall'URL utilizzando Javascript

Demo del codice sottostante

    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);}

Grazie per l'ottima demo!
Gareth

6

Perché usare una chiave api per recuperare una porzione di html pubblico!

Il più semplice esempio dimostrativo della riga di comando di Unix, utilizzando curl , grep e cut .

curl https://www.youtube.com/watch?v=r-y7jzGxKNo | grep watch7-views-info | cut -d">" -f8 | cut -d"<" -f1

Sì, ottiene l'intera pagina html, questa perdita non ha alcun significato contro gli innumerevoli vantaggi.


4

Puoi usare anche questo:

<?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;
    ?>

Puoi spiegare di più e quale lingua hai usato.
Rahil Wazir

Sembra che stia usando la vecchia v2 dell'API che ora è deprecata.
Simon East

3

Utilizzando youtube-dle jq:

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

views fOX1EyHkQwc

2

Utilizza il client API PHP di Google: https://github.com/google/google-api-php-client

Ecco una piccola mini lezione solo per ottenere le statistiche di YouTube per un singolo ID video. Ovviamente può essere esteso una tonnellata usando il resto dell'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()));
        }
    }
}


1

Ecco un esempio che ho usato nella mia app TubeCount .

Uso anche il parametro fields per filtrare il risultato JSON, quindi vengono restituiti solo i campi di cui ho bisogno.

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);
        }
    }
});

Grazie per aver aggiunto il parametro query alt = json. La risposta predefinita è atom
Jonathan Morales Vélez

1

Ecco una semplice funzione in PHP che restituisce il numero di visualizzazioni di un video di YouTube. Avrai bisogno della chiave API dei dati di YouTube (v3) affinché funzioni. Se non hai la chiave, procuratene una gratuitamente su: YouTube Data API

//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');

Sto usando questa soluzione nella mia applicazione e funziona da oggi. Quindi prendi la chiave API e l'ID video di YouTube e sostituiscili nel codice sopra (seconda riga e ultima riga) e dovresti essere a posto.


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);

Prima passa attraverso questo rimuovendo i commenti

//var_dump(json);

e ottieni visualizzazioni come:

$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};


1

Puoi usare JQuery, non dimenticare di sostituire la Your-Api-Keystringa dal codice sottostante, segui il link per trovare la tua console per sviluppatori Google con chiave 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>

-7

Questo probabilmente non è ciò che desideri, ma potresti scartare la pagina per le informazioni utilizzando quanto segue:

document.getElementsByClassName('watch-view-count')[0].innerHTML

1
Youtube avvisa quando l'API sta per cambiare. Ma non ha alcun contratto con gli sviluppatori sul sito web. Quindi questa non è una buona idea
FRAGA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.