Javaクライアントライブラリを使用して、AndroidデバイスでYouTubeAPIのv3を使い始めました。私が興味を持っているいくつかのビデオには、Webインターフェイスでアクセスできるトランスクリプトがあります(教育用ビデオなど)。v3 APIを使用して、トランスクリプトが存在する場合はそれにアクセスする方法はありますか?
ありがとう
Javaクライアントライブラリを使用して、AndroidデバイスでYouTubeAPIのv3を使い始めました。私が興味を持っているいくつかのビデオには、Webインターフェイスでアクセスできるトランスクリプトがあります(教育用ビデオなど)。v3 APIを使用して、トランスクリプトが存在する場合はそれにアクセスする方法はありますか?
ありがとう
私はこれと同じ問題を抱えていました...そして、これに到達するまで、解決策を探すのに1週間ほど費やしました:
https://stackoverflow.com/questions/10036796/how-to-extract-subtitles-from-youtube-videos
http://video.google.com/timedtext?lang= {LANG}&v={VIDEOID}で GET リクエストを実行するだけです。api/oauth/etc は必要ありません。これにアクセスします。
私は間違っているかもしれませんが、APIのv3を介してキャプショントラックを取得するための文書化された方法はまだないと思います。ただし、oAuth2を使用して認証している場合、認証はAPIのv2にも適しているため、このフィードをすばやく呼び出すことができます。
http://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captiondata/[CAPTION TRACKID]
必要なデータを取得します。APIのv2で可能なキャプショントラックIDのリストを取得するには、次のフィードにアクセスします。
https://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captions
このフィードリクエストは、言語、max-resultsなど、いくつかのオプションのパラメータも受け入れます。詳細については、キャプショントラックリストの返される形式を示すサンプルとともに、https://developers.google.comのドキュメントを参照してください。 /youtube/2.0/developers_guide_protocol_captions#Retrieve_Caption_Set
APIを使用せずに、YouTubeビデオからすべてのキャプショントラックを取得する、私が書いたコードを次に示します。動画の URL を$video_url
変数に挿入するだけです。
// get video id from url
$video_url = 'https://www.youtube.com/watch?v=kYX87kkyubk';
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $video_url, $matches);
// get video info from id
$video_id = $matches[0];
$video_info = file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$video_id);
parse_str($video_info, $video_info_array);
if (isset($video_info_array['caption_tracks'])) {
$tracks = explode(',', $video_info_array['caption_tracks']);
// print info for each track (including url to track content)
foreach ($tracks as $track) {
parse_str($track, $output);
print_r($output);
}
}