web-dev-qa-db-ja.com

ビデオIDがある場合、YouTubeビデオのタイトルを取得するにはどうすればよいですか?

Youtube APIで遊んでいます。小さなプロジェクトを始めました(楽しみのため)。

問題は、IDからビデオのタイトルを取得する方法が見つからないことです。 (例:ylLzyHk54Z0)

DATAとPLAYERのAPIドキュメントを調べましたが、見つかりません。

誰かがこれを行う方法を知っているか、誰かが私がこれを行う方法を見つけるのを手伝うことができるなら、私を助けてください。

注:私はJavaScriptを使用しています。 Webアプリになります。

編集:私はアイデアを持っています。たぶん、通常の表現を使用して、ページタイトルからタイトルを解析します。私はこれに取り組んでいます。

31
Aaron de Windt

別のドメインからドキュメントを取得しようとしているため、javascriptでは完全に不可能です。少しでもphpを投入したい場合は、これを試してください。テスト済み:

<?
    $vidID = $_POST['vidID'];
    $url = "http://gdata.youtube.com/feeds/api/videos/". $vidID;
    $doc = new DOMDocument;
    $doc->load($url);
    $title = $doc->getElementsByTagName("title")->item(0)->nodeValue;
?>

<html>
    <head>
        <title>Get Video Name</title>
    </head>
    <body>
        <form action="test.php" method="post">
            <input type="text" value="ID Here" name="vidID" />
            <input type="submit" value="Get Name" />
        </form>
        <div id="page">URL: [<?= $url ?>]</div>
        <div id="title">Title: [<?= $title ?>]</div>
    </body>
</html>
36
SimonDever

これは、JavaScriptとV3 YouTube Data APIを使用して行う方法です。

var ytApiKey = "...";
var videoId = "ylLzyHk54Z0";

$.get("https://www.googleapis.com/youtube/v3/videos?part=snippet&id=" + videoId + "&key=" + ytApiKey, function(data) {
  alert(data.items[0].snippet.title);
});
25
cbaigorri

http://gdata.youtube.com/feeds/api/videos/ylLzyHk54Z0を呼び出します。

このXMLファイルで、<title>タグの値を読み取ります。

YouTube Apiドキュメント

15
powtac

JSONリクエストを使用して次のことができます:http://gdata.youtube.com/feeds/api/videos/ylLzyHk54Z0?v=2&alt=jsonc

14
CamelCamelCamel

この回答は2015年12月時点で正確です。

YouTube動画IDから動画タイトルを取得するには、YouTube Data APIを使用して次のURLを作成する必要があります(APIキーを使用する必要があります。そうしないと、リクエストは失敗します)。

https://www.googleapis.com/youtube/v3/videos?part=snippet&id={YOUTUBE_VIDEO_ID}&fields=items(id%2Csnippet)&key={YOUR_API_KEY}

GETリクエストを実行すると、以下のチャンクに類似したJSONレスポンスが取得されます。タイトルの場合、snippet/titleキー。

{
   "items":[
      {
         "id":"Jglv0A0qLI8",
         "snippet":{
            "publishedAt":"2014-06-30T03:42:20.000Z",
            "channelId":"UCdTU5vd37FlTZ-xoB0xzRDA",
            "title":"AIA Malaysia - A-Plus Venus Plan - Comprehensive Female Protection and Insurance Plan",
            "description":"A comprehensive female protection plan for the modern women\n\nFor more information visit: http://www.aia.com.my/en/individuals/products-and-services/health/a-plus-venus-a-plus-venus-extra.html\n\nFor more products, visit AIA Malaysia's Products and Services playlist:\nhttps://www.youtube.com/playlist?list=PLSrgVT3aQ1fZ3SCe-dEVnFJDApBYkqolP\n\nFor more videos. subscribe to AIA Malaysia's YouTube channel:\nhttps://www.youtube.com/channel/UCdTU5vd37FlTZ-xoB0xzRDA",
            "thumbnails":{
               "default":{
                  "url":"https://i.ytimg.com/vi/Jglv0A0qLI8/default.jpg",
                  "width":120,
                  "height":90
               },
               "medium":{
                  "url":"https://i.ytimg.com/vi/Jglv0A0qLI8/mqdefault.jpg",
                  "width":320,
                  "height":180
               },
               "high":{
                  "url":"https://i.ytimg.com/vi/Jglv0A0qLI8/hqdefault.jpg",
                  "width":480,
                  "height":360
               },
               "standard":{
                  "url":"https://i.ytimg.com/vi/Jglv0A0qLI8/sddefault.jpg",
                  "width":640,
                  "height":480
               },
               "maxres":{
                  "url":"https://i.ytimg.com/vi/Jglv0A0qLI8/maxresdefault.jpg",
                  "width":1280,
                  "height":720
               }
            },
            "channelTitle":"AIA Malaysia",
            "tags":[
               "aia",
               "aia malaysia",
               "a-plus venus",
               "female health insurance",
               "female life insurance",
               "female insurance",
               "female medical insurance"
            ],
            "categoryId":"27",
            "liveBroadcastContent":"none",
            "localized":{
               "title":"AIA Malaysia - A-Plus Venus Plan - Comprehensive Female Protection and Insurance Plan",
               "description":"A comprehensive female protection plan for the modern women\n\nFor more information visit: http://www.aia.com.my/en/individuals/products-and-services/health/a-plus-venus-a-plus-venus-extra.html\n\nFor more products, visit AIA Malaysia's Products and Services playlist:\nhttps://www.youtube.com/playlist?list=PLSrgVT3aQ1fZ3SCe-dEVnFJDApBYkqolP\n\nFor more videos. subscribe to AIA Malaysia's YouTube channel:\nhttps://www.youtube.com/channel/UCdTU5vd37FlTZ-xoB0xzRDA"
            }
         }
      }
   ]
}

詳細については、 APIドキュメントページ をご覧ください。

4
Robert Sim

Robert Simとcbaigorriの答えは最高でした。それが現時点でJSでそれを行う正しい方法です。

https://www.googleapis.com/youtube/v3/videos?part=snippet&id={YOUTUBE_VIDEO_ID}&fields=items(id,snippet)&key={YOUR_API_KEY}

これに関する簡単な仕様:カンマ区切りのYouTube動画IDを使用して、1つのリクエストで複数の動画情報を取得できます。

1本の動画を取得するには、{YOUTUBE_VIDEO_ID}ビデオID(例:123456)1回のリクエストでさらに動画を取得するには、{YOUTUBE_VIDEO_ID}カンマ区切りのID(例:123456,234567,345678,456789

これは、クォータでは単一のリクエストとしてカウントされます。この方法では、1つのクォータ/リクエストコストで多くのビデオの詳細を取得できます。

2
mFlorin

ビデオタイトルはAPIにあり、ドット表記を使用してJavaScriptで到達可能です。

the_name_of_your_video_object.A.videoData.title
2
AaronS

私の解決策は次のとおりです。

$xmlInfoVideo    = simplexml_load_file("http://gdata.youtube.com/feeds/api/videos/".$videoId."?v=2&fields=title");

foreach($xmlInfoVideo->children() as $title) { $videoTitle = strtoupper((string) $title); }

これにより、ビデオのタイトルが取得されます。

1
jruzafa

http://gdata.youtube.com/feeds/api/videos/ ....を使用する代わりに.

ビデオがロードされている場合、プレーヤーオブジェクトのgetVideoData()メソッドを使用して、タイトルなどのビデオに関する情報を取得できます。 video_id、author、titleを含むオブジェクトを返します。

1
whamsicore