Skip to content

crippledgeek/rdlp

rdlp

A video downloader that extracts metadata and media from supported sites, downloads via HTTP, HLS, or DASH with parallel chunking, and post-processes with FFmpeg library bindings. Inspired by yt-dlp.

Features

  • HTTP, HLS, and DASH (static VoD) downloads with resume support
  • Parallel chunked transfers with adaptive controller
  • FFmpeg-based post-processing (remux, transcode, audio extraction, metadata/thumbnail embedding)
  • Audio normalization (peak / EBU R128 loudnorm) with limiter-boost fallback
  • Subtitle download, format conversion, and embedding
  • yt-dlp-compatible format selection and output templates
  • Browser cookie extraction (Chrome, Firefox) and Netscape cookie files
  • Browser TLS fingerprint impersonation for sites that block other downloaders
  • Keyword search across supported sites with filters (13 search-capable extractors)
  • Signed WASM plugin system for adding new sites without recompiling
  • Rate limiting, download archive, JSON metadata export
  • Interactive format and container selection

Supported Sites

PornHub, XHamster, RedTube, HQPorner, XTits, TNAFlix, EMPFlix, MovieFap, NineAnime, KoreanPornMovie, XVideos, XNXX, EPorner, ABXXX, plus a generic fallback extractor.

See rdlp --list-extractors for the current list.

Building

Requires Rust 1.85+ and FFmpeg shared libraries.

git clone https://github.com/crippledgeek/rdlp.git
cd rdlp
cargo build --release                    # library crates only
cargo build --release -p rdlp-cli        # CLI binary
cargo build --release -p rdlp-desktop    # Tauri desktop app
cargo build --release --workspace        # everything

The workspace uses default-members so cargo build compiles only library crates. Use -p to target a specific binary.

See BUILDING.md for platform-specific FFmpeg setup and troubleshooting.

Usage

rdlp URL                              # download best quality
rdlp -i URL                           # interactive format selection
rdlp --remux=mp4 URL                  # remux to MP4
rdlp -f "bv[height<=720]+ba" URL      # format selection
rdlp --audio-multistreams URL         # use bv+ba/b instead of bv*+ba/b
rdlp -x --audio-format=flac URL       # extract audio
rdlp --cookies-from-browser chrome URL # use browser cookies
rdlp --dump-json URL                  # metadata as JSON
rdlp --search "query" --search-site redtube  # keyword search

Run rdlp --help for the full option list.

Architecture

19-crate Cargo workspace. Three-stage pipeline: extract, download, post-process.

Crate Purpose
rdlp-types Data types (Config, Format, InfoDict)
rdlp-core Traits and error types
rdlp-api Frontend-agnostic download engine
rdlp-security SSRF protection, URL validation
rdlp-http HTTP client factory with TLS fingerprint impersonation
rdlp-ratelimit Token-bucket rate limiter
rdlp-crypto URL decryption
rdlp-extractor Site extractors and search
rdlp-downloader HTTP, HLS, and DASH downloaders
rdlp-ffmpeg FFmpeg library bindings
rdlp-postprocess Post-processing pipeline
rdlp-cookies Browser cookie extraction
rdlp-jsinterp JavaScript interpreter
rdlp-plugin-manifest WASM plugin manifest schema
rdlp-plugin WASM plugin host (Wasmtime + WASI 0.2)
rdlp-probe Extractor authoring CLI (fetch, eval, extract, record)
rdlp-table Format selection table layout
rdlp-desktop Tauri v2 desktop GUI
rdlp-cli CLI application

Contributing

See CONTRIBUTING.md and CODING_RULES.md. For adding a new site extractor, start at EXTRACTORS.md.

License

Dual-licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

FFmpeg licensing note

rdlp links against FFmpeg shared libraries at build time via ffmpeg-the-third. The Rust source code in this repository is dual MIT/Apache-2.0 licensed and does not contain any GPL or nonfree code.

Release binaries are built against LGPL-only FFmpeg (system packages) and can be freely distributed.

Local builds may link against a custom FFmpeg compiled with --enable-gpl or --enable-nonfree (e.g., libfdk-aac). Binaries built this way are subject to FFmpeg's license terms and must not be redistributed if nonfree codecs are included. See the FFmpeg Legal page for details.

About

One command delivers a clean video file with embedded metadata, normalized audio, and proper subtitles — works on sites that block other downloaders.

Topics

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors