【Javascript】YouTubeの字幕をテキストで取得する

Vライバーで二次創作しようとしたときとかに、設定が知りたいけど過去動画全部見てたら一ヶ月終わるだろ! 動画をテキスト変換して彼女たちの国のこと知りたい! とか思ったことはありませんか。私はあります。

従来の方法で動画の文字起こしを作る

もちろん寄付ウェアのVB-CABLEとGoogle Documentで文字起こしを試みたりしました。
やってみるとわかりますが、リアルタイム書き起こしはこの間ずっとPCが占領されます。
さすがに4時間とかあるデータの書き起こしでPC使えなくなると困りますよね。

Youtubeの字幕をコピーしたい

そんななか、YouTubeでアップロードされた動画の字幕が見れることを知りました(非公開でアップロードしても取得できるそうです)。
保存ボタンの隣の[…]ボタンをクリックすると文字起こしパネルが出てくるのです。
よし、もうこれ取得しちゃおうぜ。(ドラッグ+選択+コピーするのめんどうだし)

JavaScriptはそこそこなんでもできる

web上にあるテキストはだいたいjsで取れるはずなのでとってみます。
タグ構造を見ると、どうやら ytd-transcript-body-renderer というタグの中に字幕が全部入ってるみたいなのでgetElementsByTagNameでタグを取得して1個目のデータのinnerTextを出します。
いつも同じことをやってる気がしますが大目に見て下さい。

var text = document.getElementsByTagName('ytd-transcript-body-renderer')
console.log(text[0].innerText);

取れるテキストとか

上記のスクリプトをコンソールで実行した様子です。
人名はどんな変換されるかわからないですが、アンジュとかカタカナのキャラならギリとれるかな…。とこちゃんは取れてたようです。
ここに写ってませんか、笹木さんは佐々木さんって変換されてたのでつらいところですね。

GoogleChoromeの場合、コンソールの[Copy]という文字列をクリックするとクリップボードにコピーされます。
こういう感じで取れます。4800行ぐらいありました。(読むのたいへんだ…)

00:25
ています
00:26
持った
00:28
ん
00:30
[音楽]
00:42
[音楽]

今回の検証に使用した動画です。
不思議なことに皇女がいればどの動画でも楽しく感じられます。
リゼアンWeekはこれから見ます。さんばかと笹木さんが好き。

【MOTHER2】皇女も、視聴者も、いちからさんも。#6【にじさんじ/リゼ・ヘルエスタ】

おわり。

タイトルとURLをコピーしました