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 から直接取得されています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト