Robust ViX season downloader with automatic scrolling, MPD capture, resume support and VTT→SRT conversion.
- Auto‑scrolls & clicks through "Episodios …" ranges to harvest all episodes
- Grabs the first .mpd URL from Chrome perf‑logs
- Uses N_m3u8DL‑RE to download highest‑bit‑rate video & selected audio tracks
- Multi‑language support – download multiple audio and subtitle tracks in one pass
- Converts WebVTT subtitles to SRT (
.{lang}.srt) for every requested language - Resume support – skips already‑downloaded episodes on re‑run
- Generates
titles.csvandfailures.log
- Python 3.8+
- Chrome ≥115 + matching Chromedriver
- N_m3u8DL‑RE in
$PATH
git clone https://github.com/FlashZ/vix-season-ripper.git cd vix-season-ripper pip install selenium rich tqdm unidecode
Note: ensure N_m3u8DL-RE & ffmpeg are installed and in PATH
python vix_downloader.py \
"https://vix.com/es-es/detail/series-XXXX" \
--season 1 \
--aud-lang es,en \
--sub-lang es,en \
--out /path/to/downloads \
[--headless] [--debug]| Flag | Description | Default |
|---|---|---|
url |
Base series URL | (required) |
--season |
Season number | 1 |
--aud-lang |
Audio language(s), comma‑separated | es |
--sub-lang |
Subtitle language(s), comma‑separated | es |
--lang |
(Deprecated) Sets both audio & subtitle to a single language. Overridden by --aud-lang / --sub-lang. |
— |
--out |
Output directory | cwd |
--headless |
Run Chrome headless | off |
--debug |
Enable DEBUG logging | off |
Download Spanish audio + English & Spanish subtitles:
python vix_downloader.py "https://vix.com/…" --aud-lang es --sub-lang es,enDownload both English and Spanish audio tracks with Spanish subs:
python vix_downloader.py "https://vix.com/…" --aud-lang es,en --sub-lang esLegacy single‑language shorthand (still works):
python vix_downloader.py "https://vix.com/…" --lang esYou can tweak behavior by editing the top of vix_downloader.py:
# at top of script
MPD_TIMEOUT = 45 # time to wait for .mpd URL (seconds)
SAFE = "-_.() abc…0123456789" # allowed filename charsOr adjust:
- Scroll delays:
time.sleep(...)after selections max_scrollsinscroll_and_extract_metadata()- N_m3u8DL‑RE flags (bitrate selection, threads)
Already‑downloaded episodes (detected via titles.csv or existing .mp4) are skipped on re‑run.
- titles.csv stores:
EP_CODE, Episode Title, Filename - failures.log records episodes that failed to download or convert.
If you find this tool useful, I'd appreciate a coffee:
Fork the repo
Create a feature branch
Submit a PR with tests/examples
Please follow code style and update this README where appropriate.
This project is licensed under the AGPL‑3.0 license. See LICENSE for details.