46

そのため、JSON 形式で 1 ​​つの YouTube ビデオから情報を取得しようとしています。タイトルの説明カテゴリのように、コメント以外に取得できるものは何でも。私はJavascriptでこれをやろうとしています。以下のリンクに気付きましたが、それらの例はすべてフィードからビデオ情報を取得する方法です。IDを知っていると仮定して、単一のビデオから情報を取得したいと思います。

https://developers.google.com/youtube/2.0/developers_guide_json

このStackoverflow Questionも見ていました が、「test.js (line 10) GET http://gdata.youtube.com/feeds/api/videos/VA770w...v=という get リクエストに問題があります。 2&alt=json-in-script&callback=listInfo

200 OK 9ms"

簡単に言うと、VA770wpLX-Q のような単一の YouTube ビデオ ID がある場合、そのビデオ情報を JSON で取得するための URL はどのようになりますか?

ありがとうございました

4

4 に答える 4

38

2015 年 5 月の更新:

このソリューションは正しく機能しません。YouTube API v2 はまもなく廃止される予定です。

詳細: https://www.youtube.com/devicesupport


次のようなことを試してください:

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
});

デモ: http://jsfiddle.net/wqwxg/

返される JSON は次のようになります。

{
    "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"
        }
    }
}
于 2012-04-08T21:50:31.453 に答える
20

問題

YouTube API は JSONP をサポートしていません。問題 4329: oEmbed callback for JSONPを参照してください。また、YouTube Data API v2 は非推奨です

解決

Noembedサービスを使用して、YouTube ビデオのJSONPでoEmbedデータを取得できます。

ボーナス

  • API キーは必要ありません
  • サーバー側のプロキシは必要ありません

ビデオについてVA770wpLX-Qは、次のようなリンクを試すことができます。

https://noembed.com/embed?url=http://www.youtube.com/watch?v=VA770wpLX-Q

または、JSONP の場合:

https://noembed.com/embed?callback=example&url=http://www.youtube.com/watch?v=VA770wpLX-Q

これらのリンクには、パラメータとして渡される YouTube ビデオの標準 URL がありurlます。YouTube だけでなく、Vimeo や次のような URL を持つ他のサイトでも機能します。

https://noembed.com/embed?url=https://vimeo.com/45196609

デモ

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 のデモ。

その他のオプション

  • Embedly (商用サービス、月間 5000 URL まで無料)
  • Oohembed (更新: 現在は Embedly によって購入されていますが、ソースは利用可能です)
  • AutoEmbed (更新: ダウンまたは廃止されたようです)

より詳しい情報

これらの質問も参照してください。

于 2015-08-24T19:38:34.863 に答える
10

v3:

$.getJSON('https://www.googleapis.com/youtube/v3/videos?id={videoId}&key={myApiKey}&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');
 }   
});

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);
于 2014-07-24T21:29:01.993 に答える