Skip to main content

CLI to search TMDB, resolve VidSrc streams, and download via yt-dlp

Project description

vidsrc-dlp

Search TMDB, resolve a playable HLS stream via VidSrc's 4-hop chain, and download via yt-dlp.

Install

pip install vidsrc-dlp
cp .env.example .env  # add your TMDB_API_KEY

Or for local development:

git clone https://github.com/jeevan/vidsrc-dlp
cd vidsrc-dlp
python -m venv .venv && source .venv/bin/activate
pip install -e .
cp .env.example .env  # add your TMDB_API_KEY

Usage

# Movies
moviefinder "Inception"
moviefinder "The Matrix" --year 1999
moviefinder "Interstellar" --quality 1080p --no-confirm --verbose

# TV Shows
moviefinder "Breaking Bad" --type tv --season 1 --episode 1
moviefinder "Severance" --type tv --season 2 --episode 5

# Test with main.py (no install needed)
python main.py "Inception"

Output paths

Configure in .env or override via CLI:

MOVIES_DIR=./downloads/movies
TV_DIR=./downloads/tv
moviefinder "Inception" --movies-dir "/Volumes/Media/Movies"
moviefinder "Breaking Bad" --type tv --season 1 --episode 1 --tv-dir "/Volumes/Media/TV"

Naming convention

Movies:  {MOVIES_DIR}/Inception (2010)/Inception (2010).mp4
TV:      {TV_DIR}/Breaking Bad/Season 01/Breaking Bad - S01E01 - Pilot.mp4

Architecture

  1. TMDB — search API for movie/TV metadata
  2. VidSrc Resolverrequests-only 4-hop chain to extract an HLS URL
  3. Downloaderyt-dlp + ffmpeg to download and transcode to MP4

How the resolver works

vidsrc.to/embed/{movie|tv}/{tmdb_id}[/{season}/{episode}]
  → vsembed.ru iframe (parse src attr)
    → cloudorchestranova.com/rcp/{hash} (parse prorcp hash)
      → cloudorchestranova.com/prorcp/{hash} (m3u8 URLs with __TOKEN__ placeholders)
        → generate.php endpoints (JWT tokens)
          → final m3u8 URL

Adding a new stream provider

Implement StreamProvider from moviefinder.utils.

Acknowledgements

  • MaheshSharan/vidsrc — The request-based 4-hop resolution chain was reverse-engineered from this open-source PHP scraper. Critical reference for the VidSrc token flow.
  • TMDB — Movie and TV metadata API. All search, detail, episode info sourced from their free tier.
  • yt-dlp — The download engine. Handles HLS fragment fetching, decryption, and ffmpeg transcoding.
  • requests — HTTP library for the resolver chain.
  • python-dotenv — Environment variable loading from .env.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vidsrc_dlp-0.2.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vidsrc_dlp-0.2.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file vidsrc_dlp-0.2.0.tar.gz.

File metadata

  • Download URL: vidsrc_dlp-0.2.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for vidsrc_dlp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 963718121ce102faac64f8e39a5f148d63ce634e8c2a17ec1e6189ff31fd8f7f
MD5 e66099611260968cb8d44781ce463cc7
BLAKE2b-256 be440fb4a2f5f5d1c01fe2e227a05637b1fca81c91bf87d6295e69ca62951971

See more details on using hashes here.

File details

Details for the file vidsrc_dlp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vidsrc_dlp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for vidsrc_dlp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42f6a96039cf8342b5348ea5e1cdc42622e7f0491942b204d848ad8879f2b9c5
MD5 c6fbb593aafffaef2d3fbfe8e080dd80
BLAKE2b-256 c05de57c7f9632bda4f00baf38dd07addfc4e91588c83910b19528b0eb9148bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page