Как узнать количество просмотров видео с помощью YouTube API? - PullRequest
77 голосов
/ 26 июля 2010

Вопрос очень прост.Как узнать количество просмотров видео с помощью YouTube API?

enter image description here

Задача проста, но я бы хотел использовать этот запрос для большого количества видео очень часто.Есть ли способ вызвать их API Youtube и получить его?(что-то вроде facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com)

Ответы [ 14 ]

74 голосов
/ 26 июля 2010

Я думаю, что самый простой способ - это получить информацию о видео в формате JSON. Если вы хотите использовать JavaScript, попробуйте jQuery.getJSON () ... Но я предпочитаю 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;
?>

Ссылка: API YouTube - получение информации об одном видео

58 голосов
/ 30 мая 2013

Вы можете использовать новый API данных YouTube v3

при получении видео часть statistics содержит viewCount :

из документа:

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

statistics.viewCount / Количество просмотров видео.

Вы можете получить эту информацию на стороне клиента или на стороне сервера, используя некоторые из клиентских библиотек:

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

И вы можете проверить вызов API из документа:

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

Пример:

Запрос:

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

Ответ:

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"
   }
  }
 ]
}
9 голосов
/ 30 сентября 2015

Версия 2 API устарела с марта 2014 года, и некоторые из этих ответов используются.

Вот очень простой фрагмент кода для получения количества просмотров из видео с использованием JQuery вYouTube API v3.

Сначала вам потребуется создать ключ API через Консоль разработчика Google .

<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 голосов
/ 19 ноября 2013

Вот небольшой фрагмент кода для получения просмотров видео с YouTube с помощью Javascript

.

Демо кода ниже

    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);}
3 голосов
/ 04 февраля 2014

Вы также можете использовать это:

<?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;
    ?>
2 голосов
/ 06 мая 2016

Используйте клиент API Google PHP: https://github.com/google/google-api-php-client

Вот небольшой мини-класс, чтобы получить статистику YouTube для одного идентификатора видео. Очевидно, что можно продлить тонну, используя оставшуюся часть 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 голос
/ 01 марта 2019

Зачем использовать любой ключ API для извлечения части общедоступного html!

Простейший пример командной строки unix, используя curl , grep и cut .

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

Да, он получает полную HTML-страницу, эта потеря не имеет никакого значения против бесчисленных преимуществ.

1 голос
/ 25 марта 2018

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

Сначала пройдите через это, раскомментировав

//var_dump(json);

и получите количество просмотров как:

$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};
1 голос
/ 02 февраля 2017

Вот простая функция в PHP , которая возвращает количество просмотров видео на YouTube.Чтобы это работало, вам понадобится ключ API данных YouTube (v3).Если у вас нет ключа, получите его бесплатно по адресу: API данных YouTube

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

Я использую это решение в своем приложении, и оно работает на сегодняшний день.Так что получите ключ API и идентификатор видео YouTube и замените их в приведенном выше коде (вторая строка и последняя строка), и все будет хорошо.

...