2011-03-01 93 views
12

在我正在开发的网站上,我嵌入了来自YouTube的视频并希望获得视频标题及其说明。获取嵌入式YouTube视频的标题和说明

如何获取该信息?

+0

我在这里创建了一个函数来解决这个问题:http://stackoverflow.com/a/13786724/1078904 – 2012-12-09 12:19:15

回答

10

为了得到描述元素,你需要访问的的GDATA版本视频的信息,并且您可以在路径上使用alt = json返回json。在这种情况下,oHg5SJYRHA0是在YouTube上使用的视频的网址结尾处找到的视频ID,例如, www.youtube.com/watch?v=oHg5SJYRHA0

http://gdata.youtube.com/feeds/api/videos/oHg5SJYRHA0?v=2&alt=json&prettyprint=true

(该prettyprint被格式化,以使该易于阅读,你不需要它,你在做什么)

你可以抓住的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; 
})(); 

然后,使用对象表示法访问它

+0

标题和说明属性是否已弃用?我为标题和说明获取“https://youtube.com/devicesupport”值。 – 2015-05-12 13:31:36

+0

@SheebanSingaram yikes。是的,它看起来像,我在YouTube API V2.0页面上看到了弃用警告:https://developers.google.com/youtube/2.0/developers_guide_protocol。我会看看这个并更新我的答案。 – 2015-05-12 21:37:38

+0

pLease切换到API V3.0 – 2015-05-20 09:32:11

6

你可以用oembed来完成。 例子:

 
http://www.youtube.com/oembed?url=http%3A//youtube.com/watch%3Fv%3DM3r2XDceM6A&format=json 
+5

似乎无法获得描述。 – ZYiOS 2012-06-28 12:10:44

+1

描述不包含在oEmbed数据中,如链接到的文档页面所示。这个答案没有解决这个问题。 – 2014-06-13 16:24:28

1

我有点迟疑地阅读了这个话题。 我做了这样的事情使用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']从我的数据库dinamically retrived视频ID。

一旦你把内容在手柄$ JSON,你可以retrive这样的:

$json->data->description; 
$json->data->title; 

用var_dump($ JSON),查看您可以访问所有的值。

9

Youtube API V2.0已被弃用。它显示标题“youtube.com/devicesupport”的某些错误值。 pLease打开到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'); 
    } 
    }); 
+0

如果你没有一个API密钥,只想要标题,该怎么办? – SomeRandomName 2015-05-20 14:39:51

+0

在v2.0中是可能的,在v3.0中你只需要api密钥..并且获得api密钥并不困难...... – 2015-05-21 10:49:22

+0

我得到了一个解决方案,我们可以得到没有API密钥的标题...通过使用下面的链接http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=videoid&format=json ...但事情是videoid应该是已知的。 – 2015-05-22 05:39:35

-1

的GData已被弃用,但仍然可以通过调用该端点获得视频说明:

https://www.googleapis.com/youtube/v3/videos?part=snippet&id=[video_id]&key=[api_key]

它将返回形式的响应:

{ 
"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": "..." 
    } 
    } 
] 
} 

描述可以发现在items.localized.description