Skip to main content

A metadata-link between iTunes and MusicBrainz

Project description

Mink-db

A metadata-link between iTunes and MusicBrainz. A CLI tool that catalogs a music library by scanning iTunes libraries and retrieving MusicBrainz artist IDs.

How It Works

  1. Reads iTunes XML: Parses iTunes Music Library.xml for album metadata
  2. Deduplicates: Groups tracks by (artist, album) to avoid duplicate queries
  3. Queries MusicBrainz: Searches release groups using exact artist + album matching
  4. Caches Results: Stores album and artist data in .minkdb/album.json and .minkdb/artist.json
  5. Outputs: Prints matched IDs to stdout or file

On subsequent runs, Mink-db will skip already-matched albums and only query MusicBrainz for new ones.

Installation

Mink-db requires Python 3.13 or later.

# Run directly with uvx (no installation required)
uvx minkdb --help

# Or install as a tool
git clone https://github.com/thomaseleff/minkdb.git
cd minkdb
uv tool install .

Quick Start

Catalog your iTunes library and get MusicBrainz IDs:

minkdb --path "M:\Music\iTunes"

Usage

# Basic usage (defaults to current directory)
minkdb

# Specify iTunes library path
minkdb --path "M:\Music\iTunes"

# Limit number of albums processed
minkdb --path "M:\Music\iTunes" --limit 10

# Save output to file
minkdb --path "M:\Music\iTunes" -o ids.json

# Retry matching for previously unmatched albums
minkdb --path "M:\Music\iTunes" --rematch

# Publish curated exact albums to Lidarr
LIDARR_API_KEY="<your-api-key>" minkdb publish --path "M:\Music\iTunes"

# Publish to a non-default Lidarr URL
LIDARR_API_KEY="<your-api-key>" minkdb publish --path "M:\Music\iTunes" --url "http://lidarr.local:8686"

Output Format

Mink-db outputs a JSON array of unique matched MusicBrainz artist IDs:

[
  {"MusicBrainzArtistId": "11111111-1111-1111-1111-111111111111"},
  {"MusicBrainzArtistId": "22222222-2222-2222-2222-222222222222"}
]

Data Storage

  • Album database: <library_path>/.minkdb/album.json
  • Artist database: <library_path>/.minkdb/artist.json (unique by artist MusicBrainz ID)
  • Album FK: Each album row includes artist_musicbrainz_id referencing artist.json

Lidarr Publish

  • Uses lidarr-py for API integration
  • Reads curated matched album metadata from .minkdb/album.json
  • Requires LIDARR_API_KEY in environment
  • Adds artists with broad monitoring disabled and monitors only exact albums from Mink-db

Requirements

  • Python 3.13+
  • iTunes Music Library.xml file
  • Internet connection (for MusicBrainz queries)

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

minkdb-0.2.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

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

minkdb-0.2.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file minkdb-0.2.0.tar.gz.

File metadata

  • Download URL: minkdb-0.2.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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 minkdb-0.2.0.tar.gz
Algorithm Hash digest
SHA256 113382c3aec609ff4ce053d470c688f4b64de8959e51f922ac4f45d3cd9d40c8
MD5 386bedae775a658bbe4a8c30497ee3cb
BLAKE2b-256 36b3bf2be37265b6e4c12311347f0b00b476db7624060a9bfcf80febaa8ecb3b

See more details on using hashes here.

File details

Details for the file minkdb-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: minkdb-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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 minkdb-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 67b89d6f5836bffd6a2fa35e81a5162cf808a4bb770465869b40cee895d59418
MD5 6729a87a3271a108e06b70403ea1c6a4
BLAKE2b-256 0af55b928b7a15e229e62b16969e1aba0ea396ce1aba14c3eea4dfe5e41cc045

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page