CLI tool for searching YouTube/YTMusic and downloading audio/video from 1000+ platforms
Project description
fm-dlp — Download from YouTube, YTMusic, and 1000+ sites
CLI tool for searching YouTube/YTMusic and downloading audio/video from 1000+ platforms
🚀 Quick Start
pip install fm-dlp # Python 3.10+ & FFmpeg required
fm-dlp config ~/Music # Set download directory
fm-dlp search "artist" # Search tracks
fm-dlp download "URL" --codec flac # Download audio
📋 Commands
search
fm-dlp search <query> [--limit 10] [--yt-video] [--album] [--raw] [--only-url] [--no-color]
| Option | Description |
|---|---|
--limit N |
Maximum number of results (default: 10) |
--yt-video |
Search YouTube videos instead of YouTube Music |
--album |
Search for albums instead of individual tracks |
--raw |
Output raw JSON/Python dict format |
--only-url |
Output only URLs without any formatting |
--no-color |
Disable colored output in search results |
download
fm-dlp download <urls> [--codec CODEC] [--kbps 256] [--jobs 5] [--quiet] [--no-metadata] [--path PATH] [--cookies COOKIES] [--no-color]
URLs: Single, multiple (space/comma), or file path (one URL per line, # for comments)
| Option | Description |
|---|---|
--codec |
Audio: mp3, aac, flac, m4a, opus, vorbis, wav, alac Video: mp4, mkv, webm, mov, avi, flv |
--kbps |
Audio bitrate 64–320 (default: 256) |
--jobs |
Number of parallel downloads (default: 5) |
--quiet |
Suppress yt-dlp output messages |
--no-metadata |
Skip metadata and thumbnail embedding |
--path |
Override download directory |
--cookies |
Browser name (brave, chrome, chromium, edge, opera, vivaldi, whale, firefox, safari) or path to cookies file |
--no-color |
Disable colored output in download messages |
config
fm-dlp config <path> [--no-color]
| Option | Description |
|---|---|
path |
Default download directory |
--no-color |
Disable colored output in configuration messages |
update
fm-dlp update [--no-color]
Self-update to the latest version from GitHub with automatic OS detection.
| Option | Description |
|---|---|
--no-color |
Disable colored output in update messages |
| Behavior | Description |
|---|---|
| Binary mode (PyInstaller) | Downloads the appropriate executable for your OS (.exe on Windows, no extension on macOS/Linux) and replaces the current binary |
| Script mode (pip install) | Updates the package via pip or uv (whichever is available, uv preferred for faster installation) |
Features:
- Automatic OS detection (Windows, macOS, Linux)
- Always updates to the latest GitHub release (no version checking)
- Cross-platform support
- Fallback to pip if uv is not installed
- Preserves executable permissions on Unix systems
- Error handling with user-friendly messages:
- GitHub API connection failures
- Missing assets for current OS
- Permission denied (with admin/sudo suggestion)
- Package installation errors (with detailed output)
Note: The application may need to be restarted after updating, especially when running as a binary.
📄 License & Acknowledgments
MIT License — Built with:
| Library | Purpose |
|---|---|
| yt-dlp | Download engine |
| ytmusicapi | YouTube Music API |
| mutagen | Metadata tagging |
| platformdirs | Config paths |
| argss | CLI framework |
Author: Fkernel653
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fm_dlp-4.2.3.tar.gz.
File metadata
- Download URL: fm_dlp-4.2.3.tar.gz
- Upload date:
- Size: 30.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
093fc2f72608aca627c81a44dff80401913df71d223e0e0e9f4b3f3234fd5f95
|
|
| MD5 |
e83d67a6cf674211fe15c1ca0c426b00
|
|
| BLAKE2b-256 |
54308471c9b5a5f8e0df8366535cbc8692fafdef848ab4f7ac7338e50b5c6e9e
|
File details
Details for the file fm_dlp-4.2.3-py3-none-any.whl.
File metadata
- Download URL: fm_dlp-4.2.3-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9af4282ee36c9df7d1866a9a6f2d863086f43d82890d9194730898d6bd4c66f9
|
|
| MD5 |
57100058fbfa99baccc9b858b6a1d013
|
|
| BLAKE2b-256 |
dc924526f71f9f74c7243642b6bf4896699f8ad384fc35b875d2cc724424d25f
|