Search YouTube for music, identify songs, download as tagged MP3s
Project description
music-genie
Search YouTube for music, identify songs from mic recordings, and download them as tagged MP3s.
Invoked as mg or music-genie.
Installation
Requires Python 3.11+ and uv.
uv tool install music-genie # from PyPI
uv tool install . # local dev
Recording also requires a system ffmpeg (the bundled download binary cannot access audio devices):
sudo apt install ffmpeg # Debian/Ubuntu
brew install ffmpeg # macOS
sudo dnf install ffmpeg # Fedora
Usage
Search and download by query:
mg search "tame impala let it happen"
Presents up to 10 YouTube results, prompts for a selection, downloads as MP3, and embeds metadata (artist, album, year, cover art) sourced from MusicBrainz.
Identify a song from the microphone:
mg listen
Records an 8-second snippet, identifies it via Shazam, then flows into search and download. Pass --save to queue the snippet for later identification instead.
List unidentified snippets:
mg pending
Process queued snippets:
mg process
Attempts to identify each pending snippet and prompts to search and download. Unidentifiable snippets can be deleted.
Tag existing MP3 files:
mg tag ~/Music
Scans a folder for MP3 files and enriches them with metadata (artist, album, year, cover art, lyrics) sourced from MusicBrainz and LRCLib. Pass --skip-tagged to skip files that already have complete tags, or --force to overwrite existing tags.
Output layout
Files are saved to ~/Music/<artist>/<title>.mp3 by default.
Configuration
Settings can be overridden via environment variables or a TOML file at ~/.config/music-genie/config.toml.
| Key | Default | Description |
|---|---|---|
output_dir |
~/Music |
Download destination |
audio_format |
mp3 |
Output format (mp3, m4a, opus, โฆ) |
audio_quality |
192 |
Bitrate in kbps |
record_duration |
8 |
Snippet length in seconds |
Environment variables use the prefix MUSIC_GENIE_, e.g. MUSIC_GENIE_OUTPUT_DIR=/tmp/music.
Example config file:
output_dir = "/home/user/Music"
audio_format = "mp3"
audio_quality = 320
record_duration = 10
Data storage
Snippets and their metadata are stored in ~/.local/share/music-genie/snippets/ as .wav + .json pairs.
๐ค AI Disclaimer
This project uses AI-assisted development tools. See the AI usage policy for details.
Tools
- Claude Code (Anthropic) ยท
claude-sonnet-4-6ยท Agentic
Contribution Profile
Phase Humanโ AI
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ
Requirements & Scope 85% โโโโโโโโโโโ 15%
Architecture & Design 50% โโโโโโโโโโโ 50%
Implementation 5% โโโโโโโโโโโ 95%
Testing n/a
Documentation 5% โโโโโโโโโโโ 95%
Oversight: Autonomous
AI drives end-to-end; human reviews final output only.
Process
AI agent operated autonomously across multi-step tasks. Human reviewed diffs, resolved conflicts, and approved merges.
Accountability
The human author(s) are solely responsible for the content, accuracy, and fitness-for-purpose of this project.
Last updated: 2026-02-20 ยท Generated with ai-disclaimer
Project details
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 music_genie-0.4.0.tar.gz.
File metadata
- Download URL: music_genie-0.4.0.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bde9b74b7e4b0994ec64f431dccd7c709efd699a904935b2afe9446be32e47a
|
|
| MD5 |
9bc36a223329183b6443d6a7e1414200
|
|
| BLAKE2b-256 |
cb20d05db3933faedf1c82676099c1db377759d041900b8f69bac6017fa1d71f
|
File details
Details for the file music_genie-0.4.0-py3-none-any.whl.
File metadata
- Download URL: music_genie-0.4.0-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
908668807fe426b2dd54b66c216c88d8e441f9752a805e4d22c385478c015f77
|
|
| MD5 |
676588aff56790dd1f1125f197e8293c
|
|
| BLAKE2b-256 |
1e16fccb100080015bbdb877d118b73f010b6513765141b64d2e8db3cbfe780b
|