YouTube API ile video görüntüleme sayısı nasıl elde edilir?


84

Soru çok basit. YouTube API ile video görüntüleme sayısı nasıl elde edilir?

görüntü açıklamasını buraya girin

Görev basit, ancak bu sorguyu çok sayıda videoda çok sık kullanmak istiyorum. Youtube API'lerini arayıp almanın bir yolu var mı? (facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com gibi bir şey )


Bunu yapmak için sadece JavaScript mi ​​kullanmak istiyorsunuz?
Victor

iyi çalışan her şey değişir. dediğim gibi, çok sayıda videoyu çok sık sorgulamalıyım.
Ante

İlgisiz: LOL @ facebook. Eğer biriniz varsa restserver.php, açıkça noktayı kaçırıyorsunuz.
Rudie

bu YouTube Data API v3 örnek API Url'sini
Code Spy

Yanıtlar:


76

Bence en kolay yol, video bilgilerini JSON formatında almak. JavaScript kullanmak istiyorsanız jQuery.getJSON () deneyin ... Ama ben PHP'yi tercih ederim:

<?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 - Tek bir video hakkında bilgi alma


5
Teşekkürler, kazmaktan 30 dakika kurtardınız :)
Martin

bu güncel değil gibi görünüyor tho ?? Bu yöntemdeki tüm videolarımın görüntüleme sayıları, video izleme sayfasında gösterilenlerin 100 kadar gerisinde kalıyor
mdskinner

Youtube, popüler videoların izlenmesini geciktiriyor, bu konuda yapabileceğiniz pek bir şey yok.
Dylan Cross

3
Bilginize Bu 20 Nisan 2015 civarında kırdı ve sadece döner bilgilerini görüntülemek youtube.com/watch?v=UKY3scPIMd8 hangi noktaları youtube.com/devicesupport . Temel olarak, v3 API'yi kullanın.
Ryan DuVal

1
ERR_INVALID_RESPONSE
Alexey Sh.

66

Yeni YouTube Data API v3'ü kullanabilirsiniz

videoyu alırsanız, istatistik bölümü viewCount'u içerir :

dokümandan:

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

Statistics.viewCount / Videonun görüntülenme sayısı.

Bu bilgileri istemci tarafında veya bazı istemci kitaplıklarını kullanarak sunucu tarafında alabilirsiniz:

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

API çağrısını aşağıdaki dokümandan test edebilirsiniz:

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

Örneklem:

İstek:

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

Tepki:

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
Bu şimdi gitmek yoludur, V2 Google API Mart 2014 yılından bu yana ek ucu kullanımdan kaldırılmıştır: Bir böyle API birden kısımlarını alabilirsiniz: part=statistics,contentDetails. Üstelik V2 API bile çoğu durumda çalışıyor gibi görünüyor, bazı videolarda çalışmıyor.
Bobin

11

API'nin 2. Sürümü Mart 2014'ten beri kullanımdan kaldırıldı ve bu diğer yanıtların bazılarının da kullandığı.

YouTube API v3'te JQuery kullanarak bir videodan izlenme sayısını almak için çok basit bir kod parçacığı.

Önce Google Developer Console aracılığıyla bir API anahtarı oluşturmanız gerekecektir .

<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

Javascript kullanarak URL'den Youtube video görüntülemeleri almak için küçük bir kod parçası.

Aşağıdaki kodun demosu

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

Harika demo için teşekkürler!
Gareth

6

Herkese açık html'nin bir bölümünü almak için neden herhangi bir api anahtarı kullanılıyor ?

Curl , grep ve cut kullanarak en basit unix komut satırı gösterici örneği .

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

Evet, tam html sayfasını alsın, bu kaybın sayısız avantaja karşı bir anlamı yok.


4

Bunu da kullanabilirsiniz:

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

Daha fazla ve hangi dili kullandığınızı açıklayabilirsiniz.
Rahil Wazir

Bu, artık kullanımdan kaldırılmış olan API'nin eski v2'sini kullanıyor gibi görünüyor.
Simon East

3

Kullanılması youtube-dlve jq:

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

views fOX1EyHkQwc

2

Google PHP API İstemcisini kullanın: https://github.com/google/google-api-php-client

İşte tek bir video kimliği için YouTube istatistiklerini almak için küçük bir ders. Api'nin geri kalanı kullanılarak açıkça bir ton uzatılabilir: 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

İşte TubeCount uygulamamda kullandığım bir örnek .

JSON sonucunu filtrelemek için alanlar parametresini de kullanıyorum, böylece yalnızca ihtiyacım olan alanlar döndürülüyor.

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

Alt = json sorgu parametresini eklediğiniz için teşekkür ederiz. Varsayılan yanıt atomdur
Jonathan Morales Vélez

1

İşte bir YouTube videosunun sahip olduğu görüntüleme sayısını döndüren basit bir PHP işlevi . Bunun çalışması için YouTube Veri API Anahtarına (v3) ihtiyacınız olacak. Anahtarınız yoksa şu adresten ücretsiz olarak edinin : 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');

Bu çözümü uygulamamda kullanıyorum ve bugün itibariyle çalışıyor. Öyleyse API Anahtarını ve YouTube video kimliğini alın ve bunları yukarıdaki kodla değiştirin (İkinci Satır ve Son Satır) ve gitmekte fayda var.


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

Önce bunu yorum yapmadan geç

//var_dump(json);

ve görüntülemelerin şu şekilde sayılmasını sağlayın:

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


1

JQuery'yi kullanabilirsiniz Your-Api-Key, aşağıdaki koddaki dizeyi değiştirmeyi unutmayın , kendi Api anahtarınızı bulmak için bağlantıyı takip edin google geliştirici konsol

<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

Bu muhtemelen istediğiniz şey değildir, ancak aşağıdakileri kullanarak bilgi için sayfayı not edebilirsiniz:

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

1
Youtube, API değişmek üzereyken uyarıyor. Ancak web sitesinde geliştiricilerle herhangi bir sözleşmesi yok. Yani bu iyi bir fikir değil
FRAGA
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.