Skip to main content

fm-dlp — Download from YouTube, YTMusic, and 1000+ sites

Python PyPI License Platform Ruff

CLI tool for searching YouTube/YTMusic and downloading audio/video from 1000+ sites


📑 Table of Contents


🚀 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"                 # Download audio

⚙️ Requirements

  • Python 3.10+ - Asyncio support required
  • FFmpeg - Required for audio/video processing. Install via:
    • macOS: brew install ffmpeg
    • Linux: sudo apt install ffmpeg (Debian) or sudo dnf install ffmpeg (Fedora)
    • Windows: Download from ffmpeg.org and add to PATH

🌈 Color Output

By default, fm-dlp uses colored output for better readability. To disable colors globally, use the --no-color flag before the command:

fm-dlp --no-color search "artist"
fm-dlp --no-color download "URL"
fm-dlp --no-color config ~/Music

📋 Commands

search

Search for music tracks, albums, or videos on YouTube/YTMusic.

fm-dlp search <query> [--limit LIMIT] [--yt-video] [--album] [--raw] [--only-url]
Option Default Description
query Required Search query string
--limit N, -l 10 Maximum number of results to return
--yt-video, -v False Search for YouTube videos instead of music tracks
--album, -a False Search for albums instead of individual tracks
--raw, -r False Output results in raw format (Python dict representation)
--only-url, -u False Output only the URLs without any formatting

download

Download audio or video content from supported platforms (YouTube, YTMusic, and 1000+ sites).

fm-dlp download <urls> [--codec CODEC] [--kbps KBPS] [--quality QUALITY] [--jobs JOBS] [--quiet] [--no-metadata] [--keep] [--save] [--path PATH] [--only-video] [--cookies COOKIES]
Option Default Description
urls Required Single URL, comma/space-separated list, or path to text file with URLs (one per line, # for comments)
--codec, -c m4a (macOS)
opus (others)
Audio: mp3, aac, flac, m4a, opus, vorbis, wav, alac
Video: mp4, mov, mkv, webm, avi, flv
--kbps, -K 256 Audio bitrate in kbps (64–320). Higher = better quality, larger file
--quality, -Q best Video quality preset: best, worst, 2160p, 1440p, 1080p, 720p, 480p, 360p, 240p, 144p, or custom height (e.g., 720)
--jobs, -j 5 Maximum number of concurrent downloads for faster batch processing
--quiet, -q False Suppress yt-dlp output messages (errors still shown)
--no-metadata False Disable embedding metadata (title, artist, album) and thumbnail into audio files
--keep, -k False Keep the original downloaded file after conversion/post-processing
--save, -s False Save settings (except URL) to config file
--use-config, -u False Use saved parameters from config file as defaults
--path, -p Configured path Custom download directory (overrides default config)
--only-video, -v False Download video file without audio track
--cookies, -C None Browser name: brave, chrome, chromium, edge, opera, vivaldi, whale, firefox, safari
Or path to cookies file (.txt, .sqlite, .db, .cookies)

Audio Codec Details:

  • Lossy: mp3 (universal), aac (Apple), m4a (Apple), opus (modern web) - smaller files
  • Lossless: flac (high quality), wav (uncompressed), alac (Apple lossless) - larger files
  • Recommended: opus for best quality/size ratio, flac for archival

Video Container Details:

  • mp4 - Most compatible, uses m4a audio
  • mkv - Open format, uses opus audio
  • webm - Web optimized, uses opus audio
  • mov - Apple format, uses m4a audio
  • avi - Legacy Windows, uses mp3 audio
  • flv - Flash video, uses aac audio

config

Configure the default download directory path.

fm-dlp config <path>
Option Default Description
path Required Default directory path for downloads. Use absolute path for best results (e.g., /home/user/Music or C:\Music)

Config Location:

  • Windows: %LOCALAPPDATA%/fm-dlp/config.json
  • macOS: ~/Library/Application Support/fm-dlp/config.json
  • Linux: ~/.config/fm-dlp/config.json

💡 Examples

Basic Download

Example of downloading a track from YouTube Music:

fm-dlp download https://music.youtube.com/watch?v=0KNxOBerr_8
📦 Example Output
Starting: https://music.youtube.com/watch?v=0KNxOBerr_8

[youtube] Extracting URL: https://music.youtube.com/watch?v=0KNxOBerr_8
[youtube] 0KNxOBerr_8: Downloading webpage
[youtube] 0KNxOBerr_8: Downloading android vr player API JSON
[info] 0KNxOBerr_8: Downloading 1 format(s): 251
[info] Downloading video thumbnail 41 ...
[info] Writing video thumbnail 41 to: /home/user/Music/Lexapro Delirium.webp
[download] Destination: /home/user/Music/Lexapro Delirium.webm
[download] 100% of    6.53MiB in 00:00:01 at 5.74MiB/s
[ExtractAudio] Destination: /home/user/Music/Lexapro Delirium.opus
Deleting original file /home/user/Music/Lexapro Delirium.webm (pass -k to keep)
[Metadata] Adding metadata to "/home/user/Music/Lexapro Delirium.opus"
[ThumbnailsConvertor] Converting thumbnail "/home/user/Music/Lexapro Delirium.webp" to png
[EmbedThumbnail] mutagen: Adding thumbnail to "/home/user/Music/Lexapro Delirium.opus"

Success: https://music.youtube.com/watch?v=0KNxOBerr_8

Search Examples

Search for tracks, albums, and videos:

# Search for tracks on YouTube Music
fm-dlp search "Sewerslvt" --limit 1

# Search for albums
fm-dlp search "Draining Love Story" --album -l 1

# Search for videos on YouTube
fm-dlp search "Sewerslvt goodbye" --yt-video -l 1

📊 Search Output Examples

Examples of formatting search results from different sources.

🎵 YTMusic (Track)

1. Mr. Kill Myself
    ├─ Sewerslvt
    ├─ Draining Love Story
    ├─ 13M │ 7:52
    └─ https://music.youtube.com/watch?v=y55fzyXZDSE
       ──────────────────────────────────────────────────

N. Title
    ├─ Artist
    ├─ Album
    ├─ Views │ Duration
    └─ URL
       ──────────────────────────────────────────────────

💿 YTMusic (Album)

1. Draining Love Story
    ├─ Sewerslvt
    ├─ 2020
    └─ https://music.youtube.com/playlist?list=OLAK5uy_lwWVcID2Sw8o6Jfa9vz8-a2hqEFffKb-g
       ──────────────────────────────────────────────────

N. Title
    ├─ Artist
    ├─ Year
    └─ URL
       ──────────────────────────────────────────────────

▶️ YouTube (Video)

1. Sewerslvt - goodbye
    ├─ Sewerslvt
    ├─ 2,405,647 │ 17:01
    └─ https://youtu.be/ABBpsy6rlVU
       ──────────────────────────────────────────────────

N. Title
    ├─ Artist
    ├─ Views │ Duration
    └─ URL
       ──────────────────────────────────────────────────

🧩 Formatting Legend

Element Description
N. Sequential number of search result
Title Track, album, or video title
Artist Artist or channel name
├─└─│ Tree branch characters
Views │ Duration View count and length (MM:SS or HH:MM:SS)
URL Direct link to content
─── Visual separator line

📄 License & Acknowledgments

AGPLv3 License — Built with:

Library Purpose
fm-dlp-core Main core

Author: Fkernel653

Project: GitHubPyPI

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fm_dlp-4.5.1.3.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fm_dlp-4.5.1.3-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file fm_dlp-4.5.1.3.tar.gz.

File metadata

  • Download URL: fm_dlp-4.5.1.3.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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

Hashes for fm_dlp-4.5.1.3.tar.gz
Algorithm Hash digest
SHA256 bd779d4308a238c27b1f11812ddacd625224c7d53fd67f054e62978f9dd88063
MD5 64300117f4a942c96ea08f724e410a34
BLAKE2b-256 44343c72a593b2523d096eb701e15183aa2cd24b31f2235c836ed9bc84b348cd

See more details on using hashes here.

File details

Details for the file fm_dlp-4.5.1.3-py3-none-any.whl.

File metadata

  • Download URL: fm_dlp-4.5.1.3-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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

Hashes for fm_dlp-4.5.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7094c4ac66a4a2d165172c9571f5ba80e6a5a4fff75e9284e8f4f1de488c6963
MD5 a75b23b0b9fcc99ea7c8276f68109d7a
BLAKE2b-256 3c2536053ac0b4ddfaef0abd115a8a42eab24b6befed66b446fabc524b9de1fd

See more details on using hashes here.

Release history Release notifications | RSS feed

4.6.0

2 files

4.5.9

2 files

4.5.8

2 files

4.5.7

2 files

4.5.6

2 files

4.5.5

2 files

4.5.4.3

2 files

4.5.4.2

2 files

4.5.4.1

2 files

4.5.4

2 files

4.5.3

2 files

4.5.2

2 files

4.5.1.4

2 files

This release

4.5.1.3 This release

2 files

4.5.1.2

2 files

4.5.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page