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.1.0.tar.gz (10.4 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.1.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vidsrc_dlp-0.1.0.tar.gz
  • Upload date:
  • Size: 10.4 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.1.0.tar.gz
Algorithm Hash digest
SHA256 35dea34d463626f7c3f55a323478242a4e5db6f364e62e7bdad67354dc520a67
MD5 569ca84fa11a566007784ce50e9318a1
BLAKE2b-256 1d996619396f48a5f0d220a2dce9f62d8f2d841139b692ed5805fefdbcb1f8f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vidsrc_dlp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b04bb508837c819f62ca8bc6a17c5de0799f1652b77f5ad77373a3014f3608a
MD5 302664693ea50d16a540b3e9be85d24c
BLAKE2b-256 7b688895606785c1e951b24ba925e16cccb5cafc60f74a090d8e55ebc1fbe794

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