Wie erhalte ich die Anzahl der Videoaufrufe mit der YouTube-API?

84

Die Frage ist sehr einfach. Wie erhalte ich die Anzahl der Videoaufrufe mit der YouTube-API?

Geben Sie hier die Bildbeschreibung ein

Die Aufgabe ist einfach, aber ich möchte diese Abfrage sehr oft für eine große Anzahl von Videos verwenden. Gibt es eine Möglichkeit, ihre Youtube-API aufzurufen und abzurufen? (so etwas wie Facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )

Ante
quelle
Sie möchten dazu nur JavaScript verwenden?
Victor
Alles, was funktioniert, variiert gut. Wie gesagt, ich muss sehr oft nach einer großen Anzahl von Videos fragen.
Ante
Unabhängig: LOL @ facebook. Wenn Sie eine restserver.phphaben, verpassen Sie eindeutig den Punkt.
Rudie
Überprüfen Sie diese YouTube Data API v3 Beispiel-API URL freakyjolly.com/youtube-data-v3-api-sample-api-get-url
Code Spy

Antworten:

75

Ich denke, der einfachste Weg ist, Videoinformationen im JSON-Format abzurufen. Wenn Sie JavaScript verwenden möchten, versuchen Sie es mit jQuery.getJSON () ... Aber ich bevorzuge 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: Youtube API - Abrufen von Informationen zu einem einzelnen Video

Sieger
quelle
5
Danke, du hast mir 30 Minuten
Martin
dies scheint veraltet zu sein, obwohl? Alle meine Videos, die mit dieser Methode
angezeigt
Youtube verzögert die Aufrufe beliebter Videos. Sie können nicht wirklich viel dagegen tun.
Dylan Cross
3
Zu Ihrer Information, dies brach um den 20. April 2015 herum und gibt nur Ansichtsinformationen für youtube.com/watch?v=UKY3scPIMd8 zurück, die auf youtube.com/devicesupport verweisen . Verwenden Sie grundsätzlich die v3-API.
Ryan DuVal
1
ERR_INVALID_RESPONSE
Alexey Sh.
66

Sie können die neue YouTube Data API v3 verwenden

Wenn Sie das Video abrufen, enthält der Statistikteil den viewCount :

aus dem doc:

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

statistics.viewCount / Die Häufigkeit, mit der das Video angesehen wurde.

Sie können diese Informationen auf der Clientseite oder auf der Serverseite mithilfe einiger Clientbibliotheken abrufen:

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

Und Sie können den API-Aufruf aus dem Dokument testen:

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

Stichprobe:

Anfrage:

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

Antwort:

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
quelle
2
Dies ist der richtige Weg. Die V2-Google-API ist seit März 2014 veraltet. Zusätzlicher Tipp: Sie können mehrere Teile der API wie folgt abrufen : part=statistics,contentDetails. Darüber hinaus scheint sogar die V2-API in den meisten Fällen zu funktionieren, bei einigen Videos jedoch nicht.
COil
10

Version 2 der API ist seit März 2014 veraltet, was einige dieser anderen Antworten verwenden.

Hier ist ein sehr einfaches Code-Snippet, mit dem Sie mithilfe von JQuery in der YouTube-API v3 die Anzahl der Aufrufe aus einem Video ermitteln können.

Sie müssen zuerst einen API-Schlüssel über die Google Developer Console erstellen .

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

Hier ist ein kleiner Code-Ausschnitt, mit dem Sie mithilfe von Javascript Youtube-Videoansichten von URLs abrufen können

Demo des folgenden Codes

    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
quelle
Danke für die tolle Demo!
Gareth
5

Warum einen API-Schlüssel verwenden , um einen Teil des öffentlichen HTML- Codes abzurufen?

Einfachstes demonstratives Beispiel für die Unix-Befehlszeile mit Curl , Grep und Cut .

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

Ja, es wird die vollständige HTML-Seite angezeigt, dieser Verlust hat keine Bedeutung gegenüber den unzähligen Vorteilen.

NVRM
quelle
4

Sie können dies auch verwenden:

<?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
quelle
Sie können mehr erklären und welche Sprache Sie verwendet haben.
Rahil Wazir
Dies scheint die alte Version 2 der API zu verwenden, die jetzt veraltet ist.
Simon East
2

Verwenden Sie den Google PHP API-Client: https://github.com/google/google-api-php-client

Hier ist eine kleine Mini-Klasse, um YouTube-Statistiken für eine einzelne Video-ID abzurufen. Es kann natürlich um eine Tonne erweitert werden, indem der Rest der API verwendet wird: 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
quelle
1

yt:statisticsTag ansehen . Es bietet viewCount, videoWatchCount, favoriteCountusw.

Rajani Karuturi
quelle
1

Hier ein Beispiel, das ich in meiner TubeCount-App verwendet habe .

Ich verwende auch den Parameter fields, um das JSON-Ergebnis zu filtern, sodass nur die Felder zurückgegeben werden, die ich benötige.

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
quelle
Vielen Dank, dass Sie den Abfrageparameter alt = json hinzugefügt haben. Standardantwort ist Atom
Jonathan Morales Vélez
1

Hier ist eine einfache Funktion in PHP , die die Anzahl der Aufrufe eines YouTube-Videos zurückgibt. Sie benötigen den YouTube-Daten-API-Schlüssel (v3), damit dies funktioniert. Wenn Sie den Schlüssel nicht haben, erhalten Sie einen kostenlos unter: 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');

Ich verwende diese Lösung in meiner Anwendung und sie funktioniert ab heute. Holen Sie sich also den API-Schlüssel und die YouTube-Video-ID und ersetzen Sie sie im obigen Code (zweite und letzte Zeile). Sie sollten bereit sein.

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

Gehen Sie dies zuerst durch, indem Sie es auskommentieren

//var_dump(json);

und Ansichten erhalten zählen als:

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

Sie können JQuery verwenden. Vergessen Sie nicht, die Your-Api-KeyZeichenfolge aus dem folgenden Code zu ersetzen. Folgen Sie dem Link, um Ihre eigene Google-Entwicklerkonsole mit API-Schlüssel zu finden

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

Verwenden von youtube-dlund jq:

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

views fOX1EyHkQwc
Ole Tange
quelle
-7

Dies ist wahrscheinlich nicht das, was Sie wollen, aber Sie könnten die Seite mit den folgenden Informationen durchsuchen:

document.getElementsByClassName('watch-view-count')[0].innerHTML
Ryan Alberts
quelle
1
Youtube warnt, wenn sich die API ändern wird. Es gibt jedoch keinen Vertrag mit Entwicklern auf der Website. Das ist also keine gute Idee
FRAGA