Skip to content

Jacke/doradura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

895 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Doradura Logo

doradura

Two ways to download the internet. One codebase. Pure Rust.

Rust Telegram Bot TUI License: MIT


A media-download ecosystem built entirely in Rust. Two production products share one high-performance core:

  • dora β€” a Catppuccin-themed terminal client for your desktop
  • doradura bot β€” a Telegram bot with audio FX, 9+ output formats, and 1000+ supported platforms

dora TUI β€” terminal media downloader

dora β€” Terminal Media Downloader

A pixel-perfect TUI built with ratatui and the Catppuccin Mocha palette β€” 7 logo themes, full mouse support, 60 fps.

Paste a URL β†’ preview with ASCII thumbnail β†’ pick quality β†’ download. History, lyrics search, and persistent settings included.

Install

# macOS
brew tap Jacke/dora && brew install dora

# Ubuntu / Debian
curl -fsSL https://iamjacke.com/doradura/KEY.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/dora.gpg
echo "deb [signed-by=/etc/apt/keyrings/dora.gpg] https://iamjacke.com/doradura stable main" \
  | sudo tee /etc/apt/sources.list.d/dora.list
sudo apt update && sudo apt install dora

# Arch Linux
yay -S dora-bin

# From source
cargo install --path crates/doratui

Requires: yt-dlp and ffmpeg


doradura β€” Telegram Bot

YouTube Β· SoundCloud Β· TikTok Β· Instagram Β· VK Β· Spotify Β· Bandcamp Β· Twitter/X Β· and 1000+ more via yt-dlp.

Formats Audio FX (Premium) Features
MP3 Β· MP4 Β· WAV Β· FLAC Β· OGG Β· M4A Pitch Β· Tempo Β· Bass Boost Video notes (auto-split circles)
GIF Β· SRT Β· Opus Β· AAC Lofi Β· Wide Β· Morph profiles Ringtones (iPhone .m4r / Android)
128k–320k audio Β· up to 4K video Archive ZIP download of history
Share pages with streaming links

Commands: /start Β· /download <url> Β· /info <url> Β· /history Β· /settings Β· /plan

Languages: English Β· Русский Β· FranΓ§ais Β· Deutsch

Self-host

cp .env.example .env   # add TELOXIDE_TOKEN, TELEGRAM_API_ID/HASH, ADMIN_USERNAME
cargo run -p doradura

Or deploy with Docker / Railway:

# Docker
docker build -t doradura .
docker run -e TELOXIDE_TOKEN=... -e TELEGRAM_API_ID=... \
           -e TELEGRAM_API_HASH=... -v doradura-data:/data doradura

# Railway β€” just connect repo and set env vars, auto-deploy on push
railway up
Environment variables
Variable Required Description
TELOXIDE_TOKEN βœ… Telegram bot token
TELEGRAM_API_ID βœ… Telegram API ID
TELEGRAM_API_HASH βœ… Telegram API hash
ADMIN_USERNAME βœ… Bot username (without @)
DATABASE_URL SQLite path (default: /data/database.sqlite)
WARP_PROXY SOCKS5 proxy β€” required for YouTube on Railway
BOT_API_URL Local Bot API for files up to 2 GB
WEB_BASE_URL Base URL for share pages & admin dashboard
DOWNSUB_GRPC_ENDPOINT Subtitle service endpoint

Architecture

doradura/
β”œβ”€β”€ crates/
β”‚   β”œβ”€β”€ doracore/      Shared library β€” download pipeline, storage, i18n, lyrics
β”‚   β”‚   β”œβ”€β”€ download/  SourceRegistry β†’ YtDlpSource / HttpSource β†’ Pipeline
β”‚   β”‚   β”œβ”€β”€ storage/   SQLite + Postgres (SharedStorage), migrations, TempDirGuard
β”‚   β”‚   └── core/      Config, web server (share pages + admin), metrics
β”‚   β”‚
β”‚   β”œβ”€β”€ health-monitor/  Bot health watchdog β€” auto-recovers title & checks /health
β”‚   β”‚
β”‚   β”œβ”€β”€ dorabot/       Telegram bot β€” handlers, menus, callbacks, audio/video
β”‚   β”‚
β”‚   └── doratui/       Terminal UI β€” ratatui, settings, preview, lyrics
β”‚
β”œβ”€β”€ locales/           Fluent i18n (en, ru, fr, de)
β”œβ”€β”€ migrations/        39 SQLite migrations
└── Dockerfile         Multi-stage build (cargo-chef + s6-overlay runtime)

Tech stack

Language Rust 1.93+ Β· async Tokio
TUI ratatui Β· crossterm Β· Catppuccin Mocha
Telegram teloxide Β· local Bot API support
Database SQLite + Postgres (SharedStorage) Β· rusqlite Β· sqlx Β· Redis
Media FFmpeg Β· yt-dlp (nightly + Deno)
Web Axum Β· HMAC-SHA256 Telegram auth
Observability Tracing with per-task op IDs Β· Prometheus metrics Β· health monitor
Deploy Railway Β· Docker Β· s6-overlay
i18n fluent-templates (4 languages)

Docs

EXTENDING_SOURCES.md Add custom download backends
SUBSCRIPTIONS.md Subscription tier management
PROXY_SYSTEM.md WARP/Tailscale proxy for YouTube
HEALTH_CHECK.md Health monitoring & avatar status
YTDLP.md yt-dlp setup, updates & troubleshooting

MIT License Β· Made with Rust Β· Jacke/doradura

Download anything. From anywhere. Beautifully.

About

Dora – 🎬 Telegram media bot in Rust β€” download, convert & manage videos, audio, and files with a clean two-level UI

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors