Home Articles

如何使用YouTube API获取视频观看次数?

Asked
Viewed 1410 times
72

问题很简单 . 如何使用YouTube API获取视频观看次数?

enter image description here

任务很简单,但我想经常在大量视频上使用该查询 . 有没有办法调用他们的Youtube API并获得它? (比如facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com

12 Answers

  • 71

    这是我在TubeCount app中使用的一个例子 .

    我还使用fields参数来过滤JSON结果,因此只返回我需要的字段 .

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

    您可以使用新的YouTube Data API v3

    如果您检索视频, statistics 部分包含 viewCount

    来自文档:

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

    statistics.viewCount /观看视频的次数 .

    您可以使用某些客户端库在客户端或服务器端检索此信息:

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

    您可以从doc测试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"
       }
      }
     ]
    }
    
  • 8

    我认为,最简单的方法是获取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;
    ?>
    

    参考:Youtube API - Retrieving information about a single video

  • 5

    自2014年3月以来,API的第2版已被弃用,其中一些其他答案正在使用 .

    这是一个非常简单的代码片段,可以使用YouTube API v3中的JQuery从视频中获取视图 .

    您需要先通过Google Developer Console创建API密钥 .

    <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>
    
  • 3

    以下是 PHP 中的一个简单函数,它返回YouTube视频的观看次数 . 您需要使用YouTube数据API密钥(v3)才能生效 . 如果您没有钥匙,可以免费获得一个: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');
    

    我在我的应用程序中使用此解决方案,它在今天工作 . 因此,请获取API密钥和YouTube视频ID,并在上面的代码(第二行和最后一行)中替换它们,您应该很高兴 .

  • 1

    这是一个使用Javascript从URL获取Youtube视频视图的小代码段

    Demo of below code

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

    您也可以使用它:

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

    看看yt:statistics标签 . 它提供了 viewCountvideoWatchCountfavoriteCount 等 .

  • 0

    使用Google PHP API客户端:https://github.com/google/google-api-php-client

    这是一个小小的课程,只是为了获得单个视频ID的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()));
            }
        }
    }
    
  • 0

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

    这可能不是您想要的,但您可以使用以下内容废弃页面以获取信息:

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

    你可以使用JQuery,你需要将代码中的 Your-Api-Key 替换为你自己的api密钥,你可以创建google developers console

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

Related