@tanzimur/tudl
v0.1.0
Published
TUDL — Nothing Universal Downloader. Windows-native yt-dlp/gallery-dl frontend with a Nothing OS dot-matrix TUI, format picker with file-size estimates, themes, cookies, aria2c multi-thread and bulk queue.
Readme
████████╗██╗ ██╗██████╗ ██╗ TUDL
╚══██╔══╝██║ ██║██╔══██╗██║ Nothing Universal Downloader
██║ ██║ ██║██║ ██║██║ Windows-native · Nothing OS look
██║ ██║ ██║██║ ██║██║
██║ ╚██████╔╝██████╔╝███████╗
╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
TUDL is a Windows-native universal media downloader with a Nothing OS dot-matrix TUI. It merges the best of two worlds:
- from the WSL downloader: gallery-dl photo mode, bulk queue, MP3 320k + album art, M4A, subtitles, aria2c 8x multi-thread, deno runtime, cookies.txt auth, engine self-update
- from yoinks: zero-install (npx), full-screen scrollback-safe TUI, format picker with estimated file sizes, adaptive themes (auto/light/dark + the Nothing red), mouse-friendly layout, scriptable flags
Install
npm install -g tudlOr try it without installing anything (Node 18+ required):
npx tudlEverything else is automatic: on first run TUDL fetches a standalone
yt-dlp binary to ~/.tudl/bin (no Python needed), and detects ffmpeg,
aria2c, deno, gallery-dl and your cookies.txt when present.
Usage
tudl # interactive — paste one or many links
tudl https://youtu.be/… # straight to the format picker
tudl url1 url2 url3 # bulk queue — pick a format once, run all
tudl --best <url> # skip the picker, grab best quality
tudl --mp3 <url> # 320k MP3 + embedded album art
tudl --m4a <url> # M4A audio
tudl --subs <url> # video + subtitles
tudl --photos <url> # Instagram/pinterest-style gallery mode (gallery-dl)
tudl --list <url> # print formats with sizes, no download
tudl --update # update yt-dlp / gallery-dlOptions: --theme auto|light|dark|nothing, -o/--output <dir>
(default: ~/Downloads/Media), -h, -v.
TUI
- Full-screen, centered, restores your scrollback on exit
- Format picker shows estimated file sizes per resolution
↑/↓orj/knavigate,1-9pick,escback,^cquit^tcycles themes:auto(follows your terminal) →light→dark→nothing(the red-on-black brand look)- Bulk paste: multiple links in one go (space/newline separated)
Engines & auth
| Engine | Used for | When |
|-------------|-----------------------|-----------------------------------------|
| yt-dlp | video/audio/subs | system install or auto-fetched binary |
| gallery-dl | photo galleries | system install (pip install gallery-dl) |
| aria2c | 8x parallel downloads | if on PATH |
| deno | YouTube signature JS | if on PATH |
| ffmpeg | MP3/M4A conversion | required for audio modes |
| cookies.txt | logged-in content | newest of ~/.config/yt-dlp/cookies.txt, Downloads/Media/cookies.txt, ~/cookies.txt |
Security notes
- cookies.txt is never uploaded anywhere — passed locally to yt-dlp only
- the auto-fetched yt-dlp binary comes from the official yt-dlp GitHub releases page; verify with the upstream checksums if you care
.gitignoreexcludes cookies.txt and media files
Roadmap
- [ ] clickable elements (Ink pointer support) — keyboard nav is done
- [ ] playlist-aware format ladder
- [ ]
ytdl://protocol handler registration for browsers - [ ] progress ETA / speed line
- [ ] per-task format override in bulk mode
License
MIT
