Skip to main content

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

Metadata

Release files for music-genie 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for music-genie 0.4.0
File Size Uploaded
music_genie-0.4.0.tar.gz 15.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for music-genie 0.4.0
File Interpreter ABI Platform
music_genie-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 36.6 kB

Release files / music_genie-0.4.0.tar.gz

Download URL music_genie-0.4.0.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5bde9b74b7e4b0994ec64f431dccd7c709efd699a904935b2afe9446be32e47a
BLAKE2b-256 checksum
How to use checksums
cb20d05db3933faedf1c82676099c1db377759d041900b8f69bac6017fa1d71f
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / music_genie-0.4.0-py3-none-any.whl

Download URL music_genie-0.4.0-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
908668807fe426b2dd54b66c216c88d8e441f9752a805e4d22c385478c015f77
BLAKE2b-256 checksum
How to use checksums
1e16fccb100080015bbdb877d118b73f010b6513765141b64d2e8db3cbfe780b
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release 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