Youtubeを見ていると自動生成される字幕がでてくると思います。
今回はそれをテキスト化し抜き出してみます。
2021/09/06 さきほど動作確認したところ、エラーが出て動かなくなっていました。。
調べたところYouTube側のAPIの変更などが原因の用です。pytubeがissueを出していたのでバージョンを上げれば動作するかも。。
https://stackoverflow.com/questions/68680322/pytube-urllib-error-httperror-http-error-410-gone
これでうまくいくのかな?
#LanguageReactorつかえば?
GoogleChromeのLanguageReactorというプラグインを使うと同じようなことが搭載されています。
字幕の開始時間はとれるんですが今回は終了時刻が欲しかったので別途Pythonで実装しました。
#実装
import os
from pytube import YouTube
#字幕出力
def outContext(url):
#動画のクラス取得
yt = YouTube(url)
# 動画の字幕の言語一覧
print(yt.captions.get_by_language_code)
# 指定した言語の字幕取得
caption = yt.captions.get_by_language_code('a.ja')
# srt形式で取得
contexts = caption.generate_srt_captions()
# ファイルに出力
f = open('../字幕テキスト/' + yt.video_id + '_字幕.srt', 'w')
f.write(contexts)
f.close()
common_url = "https://www.youtube.com/watch?v=sFPqmy1rOmA"
outContext(url)
#出力結果
出力を試したものはひろゆきの動画です。
https://www.youtube.com/watch?v=sFPqmy1rOmA
1
00:00:02,500 --> 00:00:05,200
いっ
2
00:00:03,820 --> 00:00:06,640
にっ
3
00:00:05,200 --> 00:00:10,210
村
4
00:00:06,640 --> 00:00:15,340
45敗えっ
5
00:00:10,210 --> 00:00:17,470
8知らせを取れちゃったんですけどあのいつもながらラグが8秒ぐらいあるんですけど
6
00:00:15,340 --> 00:00:23,400
あの今日はな具があの
7
00:00:17,470 --> 00:00:28,320
だから2秒事から柴田はちょっとあの自分のことだから勝手にびっくりしました
8
00:00:23,400 --> 00:00:32,099
えっとですねあの中いつもこう予約して時間が今日5:55いう役だったんですけど
9
00:00:28,320 --> 00:00:38,910
ちょっとあの予約時間前に初めて見たですよね