获取嵌入式YouTube视频的标题和描述
在我正在开发的一个网站上,我嵌入了来自YouTube的视频,并希望获得视频标题及其描述 如何获取这些信息?您可以使用。 例如: http://www.youtube.com/oembed?url=http%3A//youtube.com/watch%3Fv%3DM3r2XDceM6A&format=json获取嵌入式YouTube视频的标题和描述,youtube,youtube-api,Youtube,Youtube Api,在我正在开发的一个网站上,我嵌入了来自YouTube的视频,并希望获得视频标题及其描述 如何获取这些信息?您可以使用。 例如: http://www.youtube.com/oembed?url=http%3A//youtube.com/watch%3Fv%3DM3r2XDceM6A&format=json 首先,我要看一看Youtube数据API以获取所需内容:要获取描述元素,需要访问视频信息的gdata版本,并且可以使用路径上的alt=json返回json。在本例中,oHg5SJYRHA0是
首先,我要看一看Youtube数据API以获取所需内容:要获取描述元素,需要访问视频信息的gdata版本,并且可以使用路径上的alt=json返回json。在本例中,oHg5SJYRHA0是视频ID,位于YouTube上正在处理的视频url的末尾,例如。
www.youtube.com/watch?v=oHg5SJYRHA0
http://gdata.youtube.com/feeds/api/videos/oHg5SJYRHA0?v=2&alt=json&prettyprint=true
(预打印是为了便于阅读而设置的格式,您在做什么时不需要它)
您可以获取JSON,将其添加到变量中,然后使用jQuery访问它:
var youTubeURL = 'http://gdata.youtube.com/feeds/api/videos/oHg5SJYRHA0?v=2&alt=json';
var json = (function() {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': youTubeURL,
'dataType': "json",
'success': function(data) {
json = data;
}
});
return json;
})();
然后使用对象表示法访问它:
alert("Title: " + json.entry.title.$t +"\nDescription:\n " + json.entry.media$group.media$description.$t + "\n");
我读这个话题有点耽搁了。 我使用jSON和YT API做了类似的事情
$json = json_decode( file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$rs['vid']."?v=2&prettyprint=true&alt=jsonc") );
注意:$rs['vid']是从我的数据库中检索到的视频ID
将内容放入句柄$json后,您可以按如下方式检索:
$json->data->description;
$json->data->title;
使用var_dump($json)查看您可以访问的所有值。Youtube API V2.0已被弃用。它为标题显示了一些错误的值“youtube.com/devicesupport”。请打开API V3.0 您可以参考以下PHP代码,并根据需要在js或jquery中修改您的代码
function youtube_title($id) {
$id = 'YOUTUBE_ID';
// returns a single line of JSON that contains the video title. Not a giant request.
$videoTitle = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=".$id."&key=YOUR_API_KEY&fields=items(id,snippet(title),statistics)&part=snippet,statistics");
// despite @ suppress, it will be false if it fails
if ($videoTitle) {
$json = json_decode($videoTitle, true);
return $json['items'][0]['snippet']['title'];
} else {
return false;
}
}
更新:
获取标题的Jquery代码-
$.getJSON('https://www.googleapis.com/youtube/v3/videos?id={VIDEOID}&key={YOUR API KEY}&part=snippet&callback=?',function(data){
if (typeof(data.items[0]) != "undefined") {
console.log('video exists ' + data.items[0].snippet.title);
} else {
console.log('video not exists');
}
});
gdata不再可用 您可以改为使用以下命令
GData已被弃用,但仍可以通过调用此端点获取视频描述: 它将返回以下形式的响应:
{
"kind": "youtube#videoListResponse",
"etag": "\"...\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"...\"",
"id": "...",
"snippet": {
"publishedAt": "...",
"channelId": "...",
"title": "...",
"description": "...",
"thumbnails": { ... },
"channelTitle": "...",
"tags": [ ... ],
"categoryId": "...",
"liveBroadcastContent": "...",
"localized": {
"title": "...",
"description": "..."
},
"defaultAudioLanguage": "..."
}
}
]
}
说明可在
项中找到。已本地化。说明
似乎无法获取说明。说明未包含在oEmbed数据中,如链接到的文档页面所示。这个答案并没有解决这个问题。我在PHP中创建了一个函数来解决这个问题:title和description属性是否已弃用?标题和描述的值都是“”。@sheebinsignaram yikes。是的,看起来是这样的,我在YouTube API V2.0页面上看到了一个弃用警告:。我会看一看并更新我的答案。请切换到API V3.0如果您没有API密钥并且只需要标题怎么办?在v2.0中,这是可能的,在V3.0中,您只需要API密钥。。获取api密钥并不困难,也不需要付费…我找到了一个解决方案,我们可以在没有api密钥的情况下获得标题。。。通过使用下面的链接。。。但问题是videoid应该是已知的。@PrashantBhujbal嗨,如果不是英文的,你知道如何解码标题吗?非常感谢。
{
"kind": "youtube#videoListResponse",
"etag": "\"...\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"...\"",
"id": "...",
"snippet": {
"publishedAt": "...",
"channelId": "...",
"title": "...",
"description": "...",
"thumbnails": { ... },
"channelTitle": "...",
"tags": [ ... ],
"categoryId": "...",
"liveBroadcastContent": "...",
"localized": {
"title": "...",
"description": "..."
},
"defaultAudioLanguage": "..."
}
}
]
}