通过JSON获取Javascript中单个视频(非提要)的Youtube信息

通过JSON获取Javascript中单个视频(非提要)的Youtube信息,javascript,jquery,json,youtube,Javascript,Jquery,Json,Youtube,所以我试图通过一个youtube视频获取JSON格式的信息。像标题描述类,等等,除了评论之外我还能得到什么。我正试图用Javascript实现这一点。我注意到下面的链接,但他们所有的例子都是如何从feed获取视频信息。假设我知道它的ID,我想从单个视频中获取信息 我也在看这个,但我对它所说的get请求有一个问题 “test.js(第10行) 得到 200行 9毫秒” 简言之,如果我有一个像VA770wpLX-Q这样的youtube视频id,那么用JSON获取视频信息的url会是什么样子? 谢谢

所以我试图通过一个youtube视频获取JSON格式的信息。像标题描述类,等等,除了评论之外我还能得到什么。我正试图用Javascript实现这一点。我注意到下面的链接,但他们所有的例子都是如何从feed获取视频信息。假设我知道它的ID,我想从单个视频中获取信息

我也在看这个,但我对它所说的get请求有一个问题 “test.js(第10行) 得到

200行 9毫秒”

简言之,如果我有一个像VA770wpLX-Q这样的youtube视频id,那么用JSON获取视频信息的url会是什么样子?


谢谢

2015年5月更新:

此解决方案无法正常工作,YouTube API v2即将停止使用

更多信息,请访问:


试着这样做:

var video_id='VA770wpLX-Q';

$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data,status,xhr){
    alert(data.data.title);
    // data contains the JSON-Object below
});
{
    "apiVersion": "2.1",
    "data": {
        "id": "VA770wpLX-Q",
        "uploaded": "2011-02-24T22:31:02.000Z",
        "updated": "2012-04-08T21:37:06.000Z",
        "uploader": "drdrevevo",
        "category": "Music",
        "title": "Dr. Dre - I Need A Doctor (Explicit) ft. Eminem, Skylar Grey",
        "description": "Music video by Dr. Dre performing I Need A Doctor featuring Eminem and Skylar Grey (Explicit). © 2011 Aftermath Records",
        "tags": ["Dr", "Dre", "Eminem", "New", "Song", "Skylar", "Grey", "GRAMMYs", "Dr.", "Need", "Doctor", "video", "Eazy", "N.W.A.", "NWA", "easy", "drdre", "and", "em"],
        "thumbnail": {
            "sqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/default.jpg",
            "hqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/hqdefault.jpg"
        },
        "player": {
            "default": "http://www.youtube.com/watch?v=VA770wpLX-Q&feature=youtube_gdata_player"
        },
        "content": {
            "5": "http://www.youtube.com/v/VA770wpLX-Q?version=3&f=videos&app=youtube_gdata"
        },
        "duration": 457,
        "aspectRatio": "widescreen",
        "rating": 4.902695,
        "likeCount": "430519",
        "ratingCount": 441253,
        "viewCount": 88270796,
        "favoriteCount": 306556,
        "commentCount": 270597,
        "status": {
            "value": "restricted",
            "reason": "requesterRegion"
        },
        "restrictions": [{
            "type": "country",
            "relationship": "deny",
            "countries": "DE"
        }],
        "accessControl": {
            "comment": "allowed",
            "commentVote": "allowed",
            "videoRespond": "allowed",
            "rate": "allowed",
            "embed": "allowed",
            "list": "allowed",
            "autoPlay": "denied",
            "syndicate": "allowed"
        }
    }
}
演示:

返回的JSON如下所示:

var video_id='VA770wpLX-Q';

$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data,status,xhr){
    alert(data.data.title);
    // data contains the JSON-Object below
});
{
    "apiVersion": "2.1",
    "data": {
        "id": "VA770wpLX-Q",
        "uploaded": "2011-02-24T22:31:02.000Z",
        "updated": "2012-04-08T21:37:06.000Z",
        "uploader": "drdrevevo",
        "category": "Music",
        "title": "Dr. Dre - I Need A Doctor (Explicit) ft. Eminem, Skylar Grey",
        "description": "Music video by Dr. Dre performing I Need A Doctor featuring Eminem and Skylar Grey (Explicit). © 2011 Aftermath Records",
        "tags": ["Dr", "Dre", "Eminem", "New", "Song", "Skylar", "Grey", "GRAMMYs", "Dr.", "Need", "Doctor", "video", "Eazy", "N.W.A.", "NWA", "easy", "drdre", "and", "em"],
        "thumbnail": {
            "sqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/default.jpg",
            "hqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/hqdefault.jpg"
        },
        "player": {
            "default": "http://www.youtube.com/watch?v=VA770wpLX-Q&feature=youtube_gdata_player"
        },
        "content": {
            "5": "http://www.youtube.com/v/VA770wpLX-Q?version=3&f=videos&app=youtube_gdata"
        },
        "duration": 457,
        "aspectRatio": "widescreen",
        "rating": 4.902695,
        "likeCount": "430519",
        "ratingCount": 441253,
        "viewCount": 88270796,
        "favoriteCount": 306556,
        "commentCount": 270597,
        "status": {
            "value": "restricted",
            "reason": "requesterRegion"
        },
        "restrictions": [{
            "type": "country",
            "relationship": "deny",
            "countries": "DE"
        }],
        "accessControl": {
            "comment": "allowed",
            "commentVote": "allowed",
            "videoRespond": "allowed",
            "rate": "allowed",
            "embed": "allowed",
            "list": "allowed",
            "autoPlay": "denied",
            "syndicate": "allowed"
        }
    }
}

2018年更新

API v2已弃用。新的youtube api v3仅适用于开发者令牌,并且对免费连接有限制

您可以在不使用API的情况下获取JSON:

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=json
或xml

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=ojCkgU5XGdg&format=xml


新的2018 json响应已经发布

{
  "html": "<iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/ojCkgU5XGdg?feature=oembed\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>",
  "title": "Creativity and Drugs (Eng Sub)",
  "thumbnail_height": 360,
  "provider_name": "YouTube",
  "author_url": "https://www.youtube.com/user/serebniti",
  "thumbnail_width": 480,
  "height": 270,
  "provider_url": "https://www.youtube.com/",
  "type": "video",
  "width": 480,
  "version": "1.0",
  "author_name": "serebniti",
  "thumbnail_url": "https://i.ytimg.com/vi/ojCkgU5XGdg/hqdefault.jpg"
}
迷你拇指:

http://img.youtube.com/vi/ojCkgU5XGdg/0.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/1.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/2.jpg
http://img.youtube.com/vi/ojCkgU5XGdg/3.jpg
注释

http://www.youtube.com/annotations_invideo?cap_hist=1&video_id=ojCkgU5XGdg
解析移动页面16kb

https://m.youtube.com/watch?v=ojCkgU5XGdg
https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg
别忘了将用户代理更改为iOS/Safari 7

同时

http://www.youtube.com/get_video_info?html5=1&video_id=ojCkgU5XGdg
以及如何嵌入youtube live

https://www.youtube.com/embed/live_stream?channel=UCkA21M22vGK9GtAvq3DvSlA
其中UCkA21M22vGK9GtAvq3DvSlA是您的频道id。 你可以在youtube账户的“我的频道”链接上找到它

现场拇指

https://m.youtube.com/watch?v=ojCkgU5XGdg
https://i.ytimg.com/vi/W-fSCPrYSL8/hqdefault_live.jpg
在v3中:

使用PHP和CURL,通过服务器端响应@Jonathan:

$url = "https://www.googleapis.com/youtube/v3/videos?id=".$videoId."&key=".$miApikey."&part=snippet";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$output=curl_exec($ch);                 
$response = json_decode($output, TRUE);
print_r($response);
问题 YouTube API不支持JSONP,正如它应该支持的那样-请参阅。 也

解决方案 您可以使用该服务获取YouTube视频的数据

奖金
  • 不需要API密钥
  • 不需要服务器端代理
例子 对于
VA770wpLX-Q
视频,您可以尝试以下链接:

var video_id='VA770wpLX-Q';

$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data,status,xhr){
    alert(data.data.title);
    // data contains the JSON-Object below
});
{
    "apiVersion": "2.1",
    "data": {
        "id": "VA770wpLX-Q",
        "uploaded": "2011-02-24T22:31:02.000Z",
        "updated": "2012-04-08T21:37:06.000Z",
        "uploader": "drdrevevo",
        "category": "Music",
        "title": "Dr. Dre - I Need A Doctor (Explicit) ft. Eminem, Skylar Grey",
        "description": "Music video by Dr. Dre performing I Need A Doctor featuring Eminem and Skylar Grey (Explicit). © 2011 Aftermath Records",
        "tags": ["Dr", "Dre", "Eminem", "New", "Song", "Skylar", "Grey", "GRAMMYs", "Dr.", "Need", "Doctor", "video", "Eazy", "N.W.A.", "NWA", "easy", "drdre", "and", "em"],
        "thumbnail": {
            "sqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/default.jpg",
            "hqDefault": "http://i.ytimg.com/vi/VA770wpLX-Q/hqdefault.jpg"
        },
        "player": {
            "default": "http://www.youtube.com/watch?v=VA770wpLX-Q&feature=youtube_gdata_player"
        },
        "content": {
            "5": "http://www.youtube.com/v/VA770wpLX-Q?version=3&f=videos&app=youtube_gdata"
        },
        "duration": 457,
        "aspectRatio": "widescreen",
        "rating": 4.902695,
        "likeCount": "430519",
        "ratingCount": 441253,
        "viewCount": 88270796,
        "favoriteCount": 306556,
        "commentCount": 270597,
        "status": {
            "value": "restricted",
            "reason": "requesterRegion"
        },
        "restrictions": [{
            "type": "country",
            "relationship": "deny",
            "countries": "DE"
        }],
        "accessControl": {
            "comment": "allowed",
            "commentVote": "allowed",
            "videoRespond": "allowed",
            "rate": "allowed",
            "embed": "allowed",
            "list": "allowed",
            "autoPlay": "denied",
            "syndicate": "allowed"
        }
    }
}

或者,对于JSONP:

这些链接具有作为
URL
参数传递的YouTube视频的标准URL。它不仅适用于YouTube,也适用于Vimeo和URL,如:

演示 下面是一个使用jQuery的简单示例:

var id = 'VA770wpLX-Q';
var url = 'https://www.youtube.com/watch?v=' + id;

$.getJSON('https://noembed.com/embed',
    {format: 'json', url: url}, function (data) {
    alert(data.title);
});
请参阅:关于JS-Bin

其他选择
  • (商业服务,每月免费提供多达5000个URL)
  • (更新:现由Embedly购买,但可用)
  • (更新:似乎已停止或停止)
更多信息 另见这些问题:


发布您已经尝试过的jquery代码。jquery不是我的问题,我只是想不出获取json数据的正确url或模式。下面的答案为我指明了正确的方向url=”“这就是你的做法。NWHfY_lvKIQ是视频的ID。在那之后,你可以做一个$.getJSON(url,函数(数据){并从那里获取json我想问一下如何获取格式为HH:MM:ss的持续时间,因为在json文件中,它是在几秒钟内,是否有任何函数可以做到这一点!!不再支持
“error”:{“code”:410,“message”:“不再可用”
遗憾的是,oembed不支持jsonp(即回调),因此在浏览器中跨域使用它将是一个问题。@BlaM我可以用jsonp加载它,但jQuery无法分析响应:-(这就是我的意思。YouTube服务器不支持为那些oEmbed发送JSONP。@Alexufo您可以使用您的网站后端代理该连接。这种方式可以工作,但这样显示密钥似乎不是一个好主意。最好使用ajax调用服务器端脚本来获取该连接url@JonathanGoogle提供了一个类似这样的API密钥,这样你就可以公开使用它。这些限制是在Google端设置的。这是做需要的事情的正确方法。API密钥不能在你通过控制台允许的域之外使用。这一切在控制台中都非常清楚。@BobSinclar谢谢。它也适用于Vimeo和其他网站,请参阅:@KenSharp如果第一方不可信(并且),那么我们可以告诉原始海报,这是不可能做到的,或者我们可以使用第三方服务来解决问题。但是如果你有更好的解决方案,请发布一个答案。知道Noembed是如何做到的吗?@jakob.j这是开源的。所以,是的。