jdepoix/youtube-transcript-api
This is a python API which allows you to get the transcript/subtitles for a given YouTube video. It also works for automatically generated subtitles and it does not require an API key nor a headless browser, like other selenium based solutions do!
これは何ですか?
youtube-transcript-api は、YouTube ビデオのトランスクリプト(字幕)を取得できる Python ライブラリです。手動で作成された字幕と YouTube の自動生成字幕の両方に対応し、字幕の翻訳も可能で、ブラウザを必要としません(他のツールとは異なります)。
インストール方法
pip を使用します:
pip install youtube-transcript-api
基本的な使い方
ビデオの ビデオ ID(完全な URL ではなく)を渡してトランスクリプトを取得します。例えば、https://www.youtube.com/watch?v=12345 の場合、ID は 12345 です。
from youtube_transcript_api import YouTubeTranscriptApi
ytt_api = YouTubeTranscriptApi()
transcript = ytt_api.fetch(video_id)
デフォルトでは、英語のトランスクリプトを取得しようとします。返されるオブジェクトはリストのように動作します:反復処理、インデックス指定、長さの取得が可能です。各スニペットには text、start(秒)、duration(秒)が含まれます。
transcript.to_raw_data() で、辞書のリストとして生データを取得することもできます。
言語の選択
優先順位に従って言語コードのリストを渡します:
ytt_api.fetch(video_id, languages=['de', 'en']) # 最初にドイツ語、次に英語を試します
利用可能なトランスクリプトの一覧表示
ビデオのすべてのトランスクリプトを表示するには:
transcript_list = ytt_api.list(video_id)
言語とタイプ(手動作成か自動生成か)でフィルタリングできます:
transcript = transcript_list.find_transcript(['de', 'en'])
transcript = transcript_list.find_manually_created_transcript(['de', 'en'])
transcript = transcript_list.find_generated_transcript(['de', 'en'])
各 Transcript オブジェクトにはメタデータ(ビデオ ID、言語、生成されたかどうか、翻訳可能かどうかなど)と、実際のトランスクリプトを取得するための .fetch() メソッドがあります。
字幕の翻訳
トランスクリプトを別の言語に翻訳できます:
translated = transcript.translate('de')
translated.fetch()
IP 禁止の処理
YouTube はクラウド IP をブロックすることがあります。ライブラリはプロキシの使用をサポートしています。Webshare のローテーション住宅用プロキシの組み込みサポートがあり、GenericProxyConfig を使用して任意の汎用 HTTP/HTTPS/SOCKS プロキシを使用することもできます。
カスタム HTTP 設定
独自の requests.Session を渡して、ヘッダー、SSL 証明書を設定したり、インスタンス間でクッキーを共有したりできます。
フォーマッタ
ライブラリには、トランスクリプトを JSON、テキスト、SRT、WebVTT などの一般的な形式に変換するフォーマッタが含まれています。Formatter をサブクラス化して独自のフォーマッタを作成することもできます。
CLI
コマンドラインツールもあります:
youtube_transcript_api <video_id_1> <video_id_2> ...
ターミナルにトランスクリプトを出力します。
年齢制限のあるビデオに関する注意
クッキーベースの認証は現在壊れているため、年齢制限のあるビデオにはアクセスできない場合があります。
上記の情報はすべてプロジェクトの README から直接取得されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト