Ant*_*nte 79 javascript youtube-api
问题很简单.如何使用YouTube API获取视频观看次数?

任务很简单,但我想经常在大量视频上使用该查询.有没有办法调用他们的Youtube API并获得它?(比如facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com)
Vic*_*tor 74
我认为,最简单的方法是获取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;
?>
Run Code Online (Sandbox Code Playgroud)
小智 61
您可以使用新的YouTube Data API v3
如果您检索视频,则统计信息部分包含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
Run Code Online (Sandbox Code Playgroud)
响应:
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"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
自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>
Run Code Online (Sandbox Code Playgroud)
这是一个使用Javascript从URL获取Youtube视频视图的小代码段
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);}
Run Code Online (Sandbox Code Playgroud)
为什么使用任何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
Run Code Online (Sandbox Code Playgroud)
是的,它获得了完整的 html 页面,这种损失与无数优势相比毫无意义。
使用youtube-dl和jq:
views() {
id=$1
youtube-dl -j https://www.youtube.com/watch?v=$id |
jq -r '.["view_count"]'
}
views fOX1EyHkQwc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107550 次 |
| 最近记录: |