Jak uzyskać liczbę wyświetleń wideo za pomocą YouTube API?

84

Pytanie jest bardzo proste. Jak uzyskać liczbę wyświetleń wideo za pomocą YouTube API?

wprowadź opis obrazu tutaj

Zadanie jest proste, ale chciałbym często używać tego zapytania w przypadku dużej liczby filmów. Czy jest jakiś sposób, aby zadzwonić do ich interfejsu API YouTube i go pobrać? (coś w rodzaju facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )

Ante
źródło
Chcesz używać do tego tylko JavaScript?
Victor,
wszystko, co działa, różni się dobrze. jak już powiedziałem, muszę bardzo często przesyłać zapytania dotyczące dużej liczby filmów.
Ante
Niepowiązane: LOL @ facebook. Jeśli masz restserver.php, wyraźnie nie rozumiesz.
Rudie
sprawdź ten przykładowy adres
Code Spy

Odpowiedzi:

75

Myślę, że najłatwiejszym sposobem jest uzyskanie informacji o wideo w formacie JSON. Jeśli chcesz używać JavaScript, wypróbuj jQuery.getJSON () ... Ale ja wolę 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 - Pobieranie informacji o pojedynczym filmie

Zwycięzca
źródło
5
Dzięki, zaoszczędziłeś mi 30 minut na kopaniu :)
Martin
ta małpa jest nieaktualna, chociaż? wszystkie moje filmy wideo liczone za pomocą tej metody są o około 100
niższe
YouTube opóźnia wyświetlenia popularnych filmów, niewiele można z tym zrobić.
Dylan Cross,
3
Do Twojej wiadomości doszło około 20 kwietnia 2015 r. I zwróciło tylko informacje dotyczące przeglądania dla youtube.com/watch?v=UKY3scPIMd8, które wskazują na youtube.com/devicesupport . Zasadniczo użyj interfejsu API v3.
Ryan DuVal
1
ERR_INVALID_RESPONSE
Alexey Sh.
66

Możesz skorzystać z nowego YouTube Data API v3

jeśli pobierasz wideo, część statystyki zawiera liczbę wyświetleń :

z dokumentu:

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

statistics.viewCount / liczba wyświetleń wideo.

Możesz pobrać te informacje po stronie klienta lub po stronie serwera, korzystając z niektórych bibliotek klienta:

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

Możesz też przetestować wywołanie API z dokumentu:

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

Próba:

Żądanie:

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

Odpowiedź:

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
źródło
2
To jest do zrobienia teraz, API V2 Google jest nieaktualna od marca 2014 roku dodatkowe wskazówka: można odzyskać wiele części API tak: part=statistics,contentDetails. Co więcej, nawet API V2 wydaje się działać w większości przypadków, nie działa w niektórych filmach.
COil
10

Wersja 2 interfejsu API została wycofana od marca 2014 r., Z której korzystają niektóre z pozostałych odpowiedzi.

Oto bardzo prosty fragment kodu, który pozwala uzyskać liczbę wyświetleń z filmu, używając JQuery w YouTube API v3.

Najpierw musisz utworzyć klucz API za pośrednictwem 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>
steffanjj
źródło
8

Oto mały fragment kodu, aby uzyskać widoki wideo YouTube z adresu URL za pomocą JavaScript

Demo poniższego kodu

    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
źródło
Dzięki za świetne demo!
Gareth
5

Po co używać dowolnego klucza API do pobierania części publicznego kodu HTML!

Najprostszy przykładowy przykład wiersza poleceń unixa, używając curl , grep i cut .

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

Tak, dostajesz pełną stronę html, ta strata nie ma znaczenia w porównaniu z niezliczonymi zaletami.

NVRM
źródło
4

Możesz też tego użyć:

<?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
źródło
Możesz wyjaśnić więcej i jakiego języka użyłeś.
Rahil Wazir,
Wygląda na to, że używany jest stary interfejs API w wersji 2, który jest obecnie przestarzały.
Simon East
3

Korzystanie youtube-dli jq:

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

views fOX1EyHkQwc
Ole Tange
źródło
2

Użyj klienta Google PHP API: https://github.com/google/google-api-php-client

Oto mała mini klasa służąca do uzyskania statystyk YouTube dla jednego identyfikatora wideo. Można go oczywiście rozszerzyć o tonę za pomocą pozostałej części interfejsu 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
źródło
1

spójrz na yt:statisticstag. Zapewnia viewCount, videoWatchCount, favoriteCountitd.

Rajani Karuturi
źródło
1

Oto przykład, którego użyłem w mojej aplikacji TubeCount .

Używam również parametru fields do filtrowania wyniku JSON, więc zwracane są tylko te pola, których potrzebuję.

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
źródło
Dziękujemy za dodanie parametru zapytania alt = json. Domyślną odpowiedzią jest atom
Jonathan Morales Vélez
1

Oto prosta funkcja w PHP, która zwraca liczbę wyświetleń wideo YouTube. Aby to zadziałało, będziesz potrzebować klucza YouTube Data API (v3). Jeśli nie masz klucza, zdobądź go bezpłatnie pod adresem: 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');

Używam tego rozwiązania w mojej aplikacji i działa od dzisiaj. Więc weź klucz API i identyfikator wideo YouTube i zamień je w powyższym kodzie (druga linia i ostatnia linia) i powinieneś być gotowy.

Devner
źródło
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);

Najpierw przejdź przez to, odkomentowując

//var_dump(json);

a wyświetlenia liczą się jako:

$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};
Shahzaib Chadhar
źródło
1

Możesz użyć JQuery, nie zapomnij zamienić Your-Api-Keyciągu znaków z poniższego kodu, skorzystaj z linku, aby znaleźć własny klucz Api w konsoli programistów Google

<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
źródło
-7

Prawdopodobnie nie jest to to, czego chcesz, ale możesz zeskrobać stronę w celu uzyskania informacji, korzystając z następującego narzędzia:

document.getElementsByClassName('watch-view-count')[0].innerHTML
Ryan Alberts
źródło
1
Youtube ostrzega, kiedy API ma się zmienić. Ale nie ma żadnej umowy z programistami na stronie. Więc to nie jest dobry pomysł
FRAGA