Educational purpose only.
dloor is intended for learning, personal tooling experiments, and lawful personal archiving. Use it only with content you own, content in the public domain, or content you have explicit permission to download. You are responsible for complying with copyright law, platform terms of service, and any other rules that apply in your jurisdiction. This project does not encourage or support infringement, redistribution of copyrighted material, bypassing access controls, or downloading private content without authorization.
dloor is a Rust TUI multimedia downloader powered by yt-dlp and ffmpeg. It detects supported social/video URLs automatically and lets you download media as video or audio from a terminal UI.
Supported URL families:
- YouTube
- YouTube Shorts
- Instagram Reels
- TikTok
- X / Twitter
dloor is early-stage OSS software. The local download flow is the primary supported path today. Cloud upload support is designed around rclone, but should be treated as experimental while the project matures.
Install system prerequisites:
# macOS
brew install rust yt-dlp ffmpeg
# optional, only needed for cloud upload experiments
brew install rcloneClone and run:
git clone https://github.com/hamst-p/dloor.git
cd dloor
cargo run -p dloor-tuiInstall the dloor command locally:
cargo install --path dloor-tui --force
dloorIf Rust is already installed, you can install directly from the repository:
cargo install --git https://github.com/hamst-p/dloor.git --package dloor-tui --bin dloor
dloorThe executable is usually installed at ~/.cargo/bin/dloor. If your shell cannot find dloor, make sure ~/.cargo/bin is included in your PATH.
git clone https://github.com/hamst-p/dloor.git
cd dloor
cargo build --release
./target/release/dloorFor day-to-day development:
cargo run -p dloor-tuiInstall Rust with rustup if you do not already have it:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shThen restart your shell or source Cargo's environment file:
source "$HOME/.cargo/env"dloor shells out to existing media tools instead of bundling them.
Required:
yt-dlpffmpeg
Optional:
rclone, only needed for cloud upload experiments
macOS:
brew install yt-dlp ffmpeg rcloneDebian / Ubuntu:
sudo apt update
sudo apt install ffmpeg rclone
python3 -m pip install -U yt-dlpArch Linux:
sudo pacman -S ffmpeg rclone yt-dlpVerify your tools:
yt-dlp --version
ffmpeg -version
rclone versionrclone can be missing if you only use local downloads.
Start the app:
dloorOn first launch, choose where downloads should be saved.
- Local: save files to a local directory
- Cloud: upload files through an
rcloneremote and remote path
If you choose cloud storage, configure rclone first:
rclone configThen enter the remote name and remote path in dloor's setup screen.
- Paste a supported URL into the main screen.
- Press
Enter. - Choose
VideoorAudio. - Choose
BestorCompressed. - Wait for the progress bar to complete.
- Copy the final path shown on the completion screen.
- URL input: paste a URL and press
Enter /settings: open destination settings/howtouse: show the short usage guide/quit: quitq: quit from the URL input or completion screenEsc: go back, or quit from the URL input screen- Arrow keys: move between choices
Tab: move between setup fieldsEnter: confirm
- Video / Best: downloads
bestvideo*+bestaudio/bestand merges to mp4 - Video / Compressed: downloads up to 1080p, then re-encodes with
ffmpegusinglibx264 -crf 28 -preset fast - Audio / Best: extracts m4a at best available quality
- Audio / Compressed: extracts mp3 with
--audio-quality 5
Configuration is stored as config.toml in the operating system's standard config directory, resolved through the directories crate.
Typical locations:
- macOS:
~/Library/Application Support/com.dloor.dloor-tui/config.toml - Linux:
~/.config/dloor-tui/config.tomlor the path selected by your XDG environment
You can reopen the setup screen from inside the app with:
/settings
Make sure Cargo's binary directory is in your PATH:
export PATH="$HOME/.cargo/bin:$PATH"Add that line to your shell profile, such as ~/.zshrc or ~/.bashrc, if needed.
dloor checks for required tools on startup. Install the missing tool, then run dloor again.
Cloud upload requires rclone. Install it and run:
rclone configThen open /settings in dloor and enter your remote name.
Some platforms change frequently, require login, or block automated downloads. Update yt-dlp first:
yt-dlp -UIf that does not work, verify that the URL is public and that you have permission to download it.
Run checks before opening a pull request:
cargo fmt --all
cargo test
cargo clippy -- -D warningsProject layout:
dloor-core: UI-independent core library for platform detection, configuration, dependency checks, and download jobsdloor-tui: Ratatui / crossterm terminal frontend
The core download logic is intentionally separated from the TUI. Future chat integrations, such as Telegram or Slack agents, can reuse dloor-core by subscribing to the same DownloadEvent stream.
Issues and pull requests are welcome. Please keep changes focused, run the checks above, and avoid adding code paths that bypass platform terms, access controls, or privacy boundaries.
Licensed under the MIT License. See LICENSE for details.