2011年02月05日

YouTubeのCCデータ取り出し

 YouTubeの動画ファイルと一緒にCCのデータも入手(ダウンロード)したいときがあります。
 その方法が、
http://blog.livedoor.jp/exitarium/archives/51674083.html
に書かれていたので、その通りにやってみました。

 サンプルで使ってみたのはこれです。

 上の動画のURLは
http://www.youtube.com/watch?v=vh5a1icVK9sです。
赤字の部分が、その動画のIDです。

動画URL:
http://www.youtube.com/watch?v=[ID]

 さて、CCのデータはYouTubeのサーバーではなく、何とGoogleが持っているのだそうです。Googleが買収しとは言え、管理するサーバーを変えるというのにはどんな意味があるのでしょう。

言語設定URL:
http://video.google.com/timedtext?type=list&v=[ID]

 上のサンプルのIDを入れてみます。
http://video.google.com/timedtext?type=list&v=vh5a1icVK9s

 このURLをブラウザで開くと、

<?xml version="1.0" encoding="utf-8" ?>
- <transcript_list docid="-4747257081376724005">
<track id="0" name="English(original)" lang_code="en" lang_original="English" lang_translated="English" lang_default="true" />
<track id="1" name="" lang_code="ja" lang_original="日本語" lang_translated="Japanese" />
</transcript_list>

と表示されます。
 このファイルでは、トラックネーム(?)がname="English(original)"とname=""とで、言語コードが、lang_code="en"とlang_code="ja"とで示されています。

 これを利用して、字幕URLを求めます。

http://video.google.com/timedtext?hl=[lang_code]&lang=[lang_code]&name=[name]&v=[ID]

 ここに、英語用の値を代入します。
http://video.google.com/timedtext?hl=en&lang=en&name=English(original)&v=vh5a1icVK9s
 ブラウザで開いてみると・・・。

<?xml version="1.0" encoding="utf-8" ?>
- <transcript>
<text start="13.32" dur="8.28">There was a time when I was in a hurry as you are</text>
<text start="21.8" dur="6.5">I was like you</text>
<text start="28.5" dur="8.15">There was a day when I just had to tell my point of view</text>
<text start="36.85" dur="5.94">I was like you</text>
<text start="42.99" dur="7.24">Now I don't mean to make you frown</text>
<text start="50.43" dur="10.72">No, I just want you to slow down</text>
<text start="61.35" dur="3.67">Have you never been mellow?</text>
<text start="65.22" dur="11.12">Have you never tried to find a comfort from inside you?</text>
<text start="76.54" dur="7.46">Have you never been happy just to hear your song?</text>
<text start="84.18" dur="6.05">Have you never let someone else be strong?</text>
<text start="103.84" dur="8.54">Running around as you do with your head up in the clouds</text>
<text start="112.58" dur="6.31">I was like you</text>
<text start="119.09" dur="3.483">Never had time to lay back,</text>
<text start="122.73" dur="4.37">kick your shoes off, close your eyes</text>
<text start="127.3" dur="6.51">I was like you</text>
<text start="134.01" dur="6.64">Now you're not hard to understand</text>
<text start="140.85" dur="11.35">You need someone to take your hand</text>
<text start="152.4" dur="3.21">Have you never been mellow?</text>
<text start="155.81" dur="11.45">Have you never tried to find a comfort from inside you?</text>
<text start="167.46" dur="7.47">Have you never been happy just to hear your song?</text>
<text start="175.13" dur="10">Have you never let someone else be strong?</text>
</transcript>


http://video.google.com/timedtext?lang=en&name=English(original)&v=vh5a1icVK9s
というふうに、hl=enを省略しても同じ結果でしたが、
http://video.google.com/timedtext?hl=en&lang=en&v=vh5a1icVK9s
と、name=English(original)を省略するとエラーが返ります。

同様に、日本語の場合。
http://video.google.com/timedtext?hl=ja&lang=ja&name=&v=vh5a1icVK9s
または
http://video.google.com/timedtext?lang=ja&name=&v=vh5a1icVK9s
を開きます。
 日本語は、今回の例の場合、name=""とデータがないので、
http://video.google.com/timedtext?lang=ja&v=vh5a1icVK9s
でも大丈夫でした。
 結果は、

<?xml version="1.0" encoding="utf-8" ?>
- <transcript>
<text start="13.32" dur="8.28">私もかつて、あなたのようにせわしなかった</text>
<text start="21.8" dur="6.5">ちょうどあなたと同じに</text>
<text start="28.5" dur="8.15">自分の意見を言い張ろうとしたときがあった</text>
<text start="36.85" dur="5.94">ちょうどあなたと同じに</text>
<text start="42.99" dur="7.24">あなたを困らせようというのじゃない</text>
<text start="50.43" dur="10.72">もっと、ゆっくりと言いたいだけ</text>
<text start="61.35" dur="3.67">あなたって、ゆったりとしたことは無いの?</text>
<text start="65.22" dur="11.12">自分の中に、安らぎを見つけたことは無いの?</text>
<text start="76.54" dur="7.46">自分で歌いながら、幸せを感じたことは無いの?</text>
<text start="84.18" dur="6.05">他の人に一歩譲ったことって無いの?</text>
<text start="103.84" dur="8.54">自分の立場も考えず、走り回っていた</text>
<text start="112.58" dur="6.31">ちょうどあなたと同じに</text>
<text start="119.09" dur="3.483">靴を脱ぎ捨て、バタン・キュー</text>
<text start="122.73" dur="4.37">そんな時は無かった</text>
<text start="127.3" dur="6.51">ちょうどあなたと同じに</text>
<text start="134.01" dur="6.64">今のあなた、私にはよく分かる</text>
<text start="140.85" dur="11.35">あなたには、手を取ってくれる人が必要なの</text>
<text start="152.4" dur="3.21">あなたって、ゆったりとしたことは無いの?</text>
<text start="155.81" dur="11.45">自分の中に、安らぎを見つけたことは無いの?</text>
<text start="167.46" dur="7.47">自分で歌いながら、幸せを感じたことは無いの?</text>
<text start="175.13" dur="10">他の人に一歩譲ったことって無いの?</text>
</transcript>

となります。

 これだけでも御の字なのに、
http://blog.livedoor.jp/exitarium/archives/51674083.html
では、Google2SRTというソフト(フリーウェア)まで紹介してくれています。

 実は上のような面倒なことをしなくても、YouTubeのURLを指定すれば、きわめて簡単にCCデータを直接読み込んでくれます。そしてその際に、YouTubeの字幕用XMLファイルを汎用性の高いSubripフォーマット(拡張子はsrt)に変換までしてくれるソフトです。
http://sourceforge.net/projects/google2srt

 ダウンロードして、アーカイブを展開。Google2SRT.jarを開き実行します。
 言語の設定がデフォルトでは、カタルーニャ語(Català)になっているので、ユニオン・ ジャック のアイコンをクリックして、英語表記にします。
 そして、URL欄にYouTubeの目的のURLを入力して、
1 READボタンをクリック。
2 下に言語の一覧が表示されるので、希望の言語にチェックを入れ、
3 Browsボタンを押して、ファイルを保存したい場所を指定した上で、
4 Go!ボタンをクリックすれば
5 STR subtitlesの欄に表示されたファイルとして出力されます。

 データの取得がうまくいかないときは、上部にあるラジオボタンをwebからXML fileに変更し、最初に書いた方法で取得したxmlファイルを指定して、srt形式に変更をします。

 なお、YouTubeだけでなく、googleビデオのxmlファイル取得についても、実はこのGoogle2SRTのアーカイブの中に書かれていました。



 




posted by kewpie at 10:55| Comment(0) | TrackBack(0) | ファイル作成
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/43244341
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
コメントの投稿について
○お名前とコメント欄の記入は必須です。
○メールアドレスは任意です。記入されても公開はされません。管理人のみに知らされます。
○スパム防止のため、
・ホームページアドレス欄への記入はできません。
・コメント欄にURLは記入できません。
・スパムと思われる語を記入できません。
 これらをしようとすると、最終的に投稿完了できません。
○投稿完了後に、管理人の判断でスパムと判断した投稿は削除させていただきます。