Go to file
Jonas Depoix 94ad9f0fdf typos fixed 2018-07-03 12:59:31 +02:00
youtube_transcript_api project structure reworked to be compatible with pypi 2018-07-03 12:49:22 +02:00
.gitignore gitignore updated 2018-07-03 12:59:17 +02:00
LICENSE LICENSE added 2018-07-03 11:22:32 +02:00
README.md README added 2018-04-20 15:53:27 +02:00
requirements.txt transcript api implemented 2018-04-20 13:23:14 +02:00
setup.py typos fixed 2018-07-03 12:59:31 +02:00

README.md

YouTube Transcript/Subtitle API (including automatically generated subtitles)

This is an python API which allows you to get the transcripts/subtitles for a given YouTube video. It also works for automatically generated subtitles and it does not require a headless browser, like other selenium based solutions do!

Requirements

It runs using python 2 and 3, with the only requirement being the requests module. It is recommended installing it using pip:

pip install -r requirements.txt

How to use it

You could either integrate this module into an existing application, or just use it via an CLI

In code

To get a transcript for a given video you can do:

YouTubeTranscriptApi.get_transcript(video_id)

This will return a list of dictionaries looking somewhat like this:

[
    {
        'text': 'Hey there',
        'start': 7.58,
        'duration': 6.13
    },
    {
        'text': 'how are you',
        'start': 14.08,
        'duration': 7.58
    },
    # ...
]

To get transcripts for a list fo video ids you can call:

YouTubeTranscriptApi.get_transcripts(video_ids)

CLI

Execute the CLI script using the video ids as parameters and the results will be printed out to the command line:

./youtube_transcript_api.py <first_video_id> <second_video_id> ...

If you would prefer to write it into a file or pipe it into another application, you can also output the results as json using the following line:

./youtube_transcript_api.py --json <first_video_id> <second_video_id> ... > transcripts.json

Warning

This code uses an undocumented part of the YouTube API, which is called by the YouTube web-client. So there is no guarantee that it won't stop working tomorrow, if they change how things work. I will however do my best to make things working again as soon as possible if that happens. So if it stops working, let me know!