TetoDL is a powerful, hybrid CLI & TUI media downloader built for Linux, WSL, and Android (Termux). It combines the speed of command-line tools with the aesthetics of a Terminal User Interface.
Focusing on Smart Metadata, TetoDL ensures your music library is always tidy with correct cover arts, artist names, and albums even from YouTube sources.
- Hybrid Interface: Use simple CLI commands for quick downloads or the TUI for a visual menu.
- Smart Metadata: Auto-embeds cover art and metadata (via iTunes).
- Smart Subfolder System: Intelligently manages download paths. It remembers your created subfolders (e.g., for Albums/Playlists) and auto-cleans "ghost" folders from the menu if they are deleted from the disk.
- TetoDL Analytics (Wrap): visualize your download habits (Top Artists, Albums, Total Duration) directly in your terminal.
- Advanced History: Searchable logs with filtering and sorting capabilities.
- System Diagnostics: Built-in tools to check system health, storage usage, and configuration.
- Cross-Platform: Optimized for Linux & WSL. (Legacy support for Termux available).
- Linux / WSL:
git,python3,ffmpeg - Termux:
git,python,ffmpeg
Clone the repository and run the universal installer:
# 1. Clone Repository
git clone https://github.com/rannd1nt/TetoDL.git
cd TetoDL# 2. Run Full Installer (Auto-detects OS & installs dependencies)
bash tetodl.shOR
# Without Spotdl Installation
bash tetodl.sh --liteNote for Termux Users: The current main branch is optimized for Linux/WSL.
If you want the old stable version specifically designed for Android/Termux mobile interface, please use the legacy tag:
git clone --branch legacy-termux-v1 https://github.com/rannd1nt/TetoDL.gitExperience the interactive menu by simply running tetodl without arguments.
WARNING: When using the CLI mode, ALWAYS wrap your URLs in quotes. Terminals interpret the
&symbol (common in YouTube URLs) as a background command.
Recommended Usage:tetodl "https://youtube.com/watch?v=..."
Not Recommended Usage:tetodl https://youtube.com/watch?v=...
-
Default Download (Auto-Detect): Without any flags, TetoDL automatically detects the content type from the link. It relies on your saved configuration (defined in
config.jsonor TUI settings) to determine the download path and quality preferences.tetodl "https://youtu.be/url" -
Audio Only (Music Mode): Download audio extraction specifically. The
-aflag enables audio mode, while-f m4aforces the output to M4A (AAC) format, which is ideal for maintaining metadata in music libraries.tetodl "https://youtu.be/url" -a -f m4a -
Video Only (Video Mode): Uses
-vfor video mode, forces the .mp4 container for maximum compatibility, and caps the resolution at 720p.tetodl "https://youtu.be/url" -v -f mp4 -r 720p -
Power User Mode Full control over the download. Fetches high-quality video in .mkv with a maximum resolution limit of 1080p, enforces the h264 codec for compatibility, and saves the file to a specific custom directory using the
-oflag.tetodl "https://youtu.be/url" -v -f mkv -r 1080p -c h264 -o "/home/user/Videos/Collection"
1. Download Options: Basic flags for downloading media.
| Flag | Argument | Description |
|---|---|---|
-a, --audio |
- | Download as Audio. |
-v, --video |
- | Download as Video (Default). |
-f, --format |
FORMAT | Force format: mp3, m4a, opus (audio) or mp4, mkv (video). |
-r, --resolution |
RES | Max video resolution limit: 480p, 720p, 1080p, 2k, 4k, 8k. |
-c, --codec |
CODEC | Set video codec: default (speed), h264 (compat), h265 (size). |
-o, --output |
PATH | Save to a custom output directory (Overrides TUI Base Path). |
2. Utility, Maintance & History: Manage data, view statistics, and perform system maintenance.
| Flag | Argument | Description |
|---|---|---|
--info |
- | Show current configuration, system paths, and storage usage. |
--wrap |
- | Show TetoDL Analytics (Top Artists, Albums, & Total Duration). |
--history |
LIMIT | Show download history (default last 20). Ex: tetodl --history 50. |
--reverse |
- | (Requires --history) Show oldest downloads first. |
--search |
QUERY | (Requires --history) Filter history by title (case-insensitive). |
--recheck |
- | Force dependency integrity check (ffmpeg, spotdl, etc). |
--reset |
TARGET | Reset data. Targets: history, cache, config, registry, all. |
--update |
- | Update TetoDL to latest version (Git Pull). |
--uninstall |
- | Remove TetoDL symlink, launcher, and cleanup user data. |
3. Configuration: Advanced settings that are often hidden from the TUI.
| Flag | Argument | Description |
|---|---|---|
--header |
NAME | Set TUI app header (default, classic or filename in assets/). |
--progress-style |
STYLE | Set progress bar: minimal, classic, modern. |
--lang |
CODE | Set language: en (English) or id (Indonesia). |
--delay |
SEC | Set delay between downloads (seconds). |
--retries |
NUM | Set max download retries. |
--media-scanner |
on/off | Enable/Disable Android Media Scanner (Termux Only). |
- TUI (Interactive Mode - Persistent):
Use the TUI to configure your Global Defaults. Any changes made here are saved permanently toconfig.jsonand will be used automatically for future downloads. This includes:- Base Path: Default download locations for Music and Video.
- Video Preferences: Default Resolution (e.g., Max 1080p), Container (MP4/MKV), and Codec.
- Audio Preferences: Default Quality/Format (M4A/MP3/Opus).
- CLI (Command Line - Runtime):
- One-Time Overrides: Flags like
-r 4k,-f mp3, or-o /tmponly apply to the current command. They temporarily override your TUI defaults but do not change them permanently. and do not change global settings. - Advanced Maintenance: System-level settings like
--retries,--delay,--media-scannerand--resetare exclusive to the CLI to prevent accidental changes in the TUI menu.
- One-Time Overrides: Flags like
TetoDL supports two languages:
en— Englishid— Indonesian
- Built on top yt-dlp and ffmpeg
- Inspired by various open-source downloader tools for YouTube and Spotify
Distributed under the MIT License. See LICENSE for more information.





