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 )


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


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

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>

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

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.


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

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


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

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.


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


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>

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

-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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.