获取嵌入式YouTube视频的标题和描述

获取嵌入式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的视频,并希望获得视频标题及其描述

如何获取这些信息?

您可以使用。 例如:

http://www.youtube.com/oembed?url=http%3A//youtube.com/watch%3Fv%3DM3r2XDceM6A&format=json
首先,我要看一看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": "..."
   }
  }
 ]
}