NON-COMMERCIAL USE ONLY
Subtitle-Downloader supports downloading subtitles from multiple streaming services, such as Apple TV+, CatchPlay, Crunchyroll, Disney+, FridayVideo, HBO GO Asia, iQIYI, iTunes, KKTV, LINE TV, meWATCH, MyVideo, NowE, NowPlayer, Viki, Viu, WeTV, YouTube, etc.
Subtitle-Downloader is a command-line program to download subtitles from the most popular streaming platform. It requires Python 3.10+, and NodeJS. It should work on Linux, on Windows, or macOS. This project is only for personal research and language learning.
- Linux, macOS:
pip install -r requirements.txt- Windows: Execute
install_requirements.bat
| Name | Authentication | Geo-blocking |
|---|---|---|
| Apple TV+ | Cookies | |
| CatchPlay | Cookies | Indonesia, Singapore, and Taiwan |
| Crunchyroll | Cookies | |
| Disney+ | Email & Password | |
| Friday Video | Cookies | Taiwan |
| HBO GO Asia | Email & Password | |
| iQIYI (iq.com) | Cookies | Partial region |
| iTunes | ||
| KKTV | ||
| LINE TV | ||
| MeWATCH | Profile Token | Singapore |
| MyVideo | Cookies | Taiwan |
| NowE | Cookies | |
| Now Player | Cookies | |
| Viki | Cookies | Partial region |
| Viu | ||
| WeTV | Cookies | Partial region |
| YouTube | Cookies (Subscribe channel) |
- Install Chrome plugin: get-cookiestxt-locally
- Login to the streaming service, and use the plugin to download cookies.txt (Don't modify anything even the file name)
- Put cookie.txt into
Subtitle-Downloader/cookies
- Fill your email and password in
Subtitle-Downloader/user_config.toml
Online (Colab environment is in the US, if you want to use it in another region please execute it locally)
- Save a copy in Drive
- Connect Colab
- Install the requirements (Click 1st play button)
- Depend the download platform and modify the text field (Click the play button next to it when modified completely)
- Download the subtitles from the left-side menu
-
Depending on the download platform and modify
Subtitle-Downloader/user_config.toml[subtitles] default-language = 'en' # all/en/zh-Hant/zh-Hans/zh-HK/ja/ko default-format = '.srt' # .srt/.ass archive = true # true/false [headers] User-Agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36' [credentials.DisneyPlus] email = '' password = '' [proxies] us = 'http:127.0.0.1:7890' # Clash [nordvpn] username = '' password = ''
-
Follow each platform's requirements and put cookies.txt into
Subtitle-Downloader/cookies -
Execute the program with the command line or
Subtitle-Downloader.bat(Paste the title's URL)python subtitle_downloader.py URL [OPTIONS]
-h, --help show this help message and exit
-s --season download season [0-9]
-e --episode download episode [0-9]
-l, --last-episode download last episode
-o, --output output directory
-slang, --subtitle-language languages of subtitles; use commas to separate multiple languages
default: Traditional Chinese
all: download all available languages
-alang, --audio-language languages of audio-tracks; use commas to separate multiple languages
-sf, --subtitle-format subtitles format: .srt or .ass
-locale, --locale interface language
-p, --proxy proxy
-d, --debug enable debug logging
-v, --version app's version
Disney+
| Codec | Language |
|---|---|
| en | English [CC] |
| zh-Hant | Chinese (Traditional) |
| zh-Hans | Chinese (Simplified) |
| zh-HK | Cantonese |
| da | Dansk |
| de | Deutsch |
| de-forced | Deutsch [forced] |
| es-ES | Español |
| es-ES-forced | Español [forced] |
| es-419 | Español (Latinoamericano) |
| es-419-forced | Español (Latinoamericano) [forced] |
| fr-FR | Français |
| fr-FR-forced | Français [forced] |
| fr-CA | Français (Canadien) |
| fr-CA-forced | Français (Canadien) [forced] |
| it | Italiano |
| it-forced | Italiano [forced] |
| ja | Japanese |
| ja-forced | Japanese [forced] |
| ko | Korean |
| ko-forced | Korean [forced] |
| nl | Nederlands |
| no | Norsk |
| pl | Polski |
| pl-forced | Polski [forced] |
| pt-PT | Português |
| pt-BR | Português (Brasil) |
| pt-BR-forced | Português (Brasil) [forced] |
| fi | Suomi |
| sv | Svenska |
HBO GO Asia
| Codec | Language |
|---|---|
| en | English |
| zh-Hant | Traditional Chinese |
| zh-Hans | Simplified Chinese |
| ms | Malay |
| th | Thai |
| id | Indonesian |
iQIYI iq.com
| Codec | Language |
|---|---|
| en | English |
| zh-Hant | Traditional Chinese |
| zh-Hans | Simplified Chinese |
| ms | Malay |
| vi | Vietnamese |
| th | Thai |
| id | Indonesian |
| es | Spanish |
| ko | Korean |
| ar | Arabic |
Viu
| Codec | Language |
|---|---|
| en | English |
| zh-Hant | Traditional Chinese |
| zh-Hans | Simplified Chinese |
| ms | Malay |
| th | Thai |
| id | Indonesian |
| my | Burmese |
WeTV
| Codec | Language |
|---|---|
| en | English |
| zh-Hant | Traditional Chinese |
| zh-Hans | Simplified Chinese |
| ms | |
| th | Thai |
| id | Indonesian |
| pt | Português |
| es | Spanish |
| ko | Korean |
- Login to meWATCH on the browser.
- Select a movie or series you want to download
- Open the
devtoolsin the browser (Windows: Ctrl + Shift + I or F12; macOS: ⌘ + ⌥ + I.) - Refresh the page and select
Networkondevtools - Type
https://www.mewatch.sg/api/account/profilein the filter to find the profile api - Copy profile token (X-Authorization) from profile API Request Headers (Do not include
Bearer, the profile token starts witheyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ) and paste inSubtitle-Downloader/user_config.toml ([credentials.meWATCH] profile_token='').
- Copy the user-agent from login browser https://www.whatsmyua.info/ and paste it in
Subtitle-Downloader/user_config.toml (User-Agent). The user-agent must be the same as login browser user-agent.
- Download all seasons and all episodes
python subtitle_downloader.py URL- Download season 1 episode 1
python subtitle_downloader.py URL -s 1 -e 1- Download season 1 episode 1's subtitle with all languages
python subtitle_downloader.py URL -s 1 -e 1 -slang all- Download all episode subtitles in all languages: en, zh-Hant
python subtitle_downloader.py https://www.disneyplus.com/series/loki/6pARMvILBGzF -slang en,zh-Hant- Download the latest episode
python subtitle_downloader.py URL -l- Download season 1 episode 1-10
python subtitle_downloader.py URL -s 1 -e 1-10- Download season 1 episode 1,3,5
python subtitle_downloader.py URL -s 1 -e 1,3,5- Download season 1 episodes with NordVPN (region=tw)
python subtitle_downloader.py URL -s 1 -p tw- Download season 1 episodes with proxy (Clash)
python subtitle_downloader.py URL -s 1 -p http:127.0.0.1:7890- Download season 1 episodes with .ass format subtitle
python subtitle_downloader.py URL -s 1 -sf .ass- Few streaming services have Geo-blocking, make sure you are in the same region or use a proxy to bypass restrictions.
- Disney+ doesn't support VPN.
- Viki has API protection, don't call API too often. (Only catch 100% completed subtitles)
- Any issue during downloading subtitles, upload the screenshot and log file (Please provide title, platform, and region).
- Make sure the video contains embedded subtitles (subtitles able to turn on and off) and it is playable in your region.
- Please ⭐️ this repository if this project helped you!
- Contributions of any kind are welcome!
- Netflix: Netflix subtitle downloader
- Amazon (Prime Video): Amazon subtitle downloader
