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 Release Group IDs.

How-it-works

  1. Locates your iTunes Library: Scans a directory for the iTunes Music Library.xml file.
  2. Parses Tracks: Reads and indexes individual track metadata from the XML library.
  3. Aggregates Albums: Groups tracks into unique album entities based on tags.
  4. References the Catalog: Compares found albums against the local ./minkdb database of existing matches.
  5. Reconciles (MusicBrainz): Queries the MusicBrainz API to link local albums to official IDs.
  6. Generates Output: Finalizes the metadata-link and updates the local data store.

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

Output Format

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

[
  {"MusicBrainzId": "41656317-c512-456f-9fe7-1f7fb8482a34"},
  {"MusicBrainzId": "8ccd44fb-1c4a-4c5f-98b5-cf3b35a2aa5c"}
]

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 for Release Group IDs using exact artist + album matching
  4. Caches Results: Stores results in .minkdb/catalog.json (append-only)
  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.

Data Storage

  • Catalog database: <library_path>/.minkdb/catalog.json
  • Append-only: Previous entries are preserved and updated

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.1.0.tar.gz (9.2 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.1.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: minkdb-0.1.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.1.0.tar.gz
Algorithm Hash digest
SHA256 8ff796d660a5670779b498dfa664284ec4e1b3ba4582e800ec0c4dc06b5441e0
MD5 a4f5417538cd61c53f2e6e8c24079505
BLAKE2b-256 0f4970add4e5741e4bd13b3f867dbc98ee6e8642cadf11bcdec3a44a7e12d456

See more details on using hashes here.

File details

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

File metadata

  • Download URL: minkdb-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0179faa266a5d3fe92ebd9d7fcf0d2a136ad46a9aec5045f4846d90caae47725
MD5 c2fcaff6b07816383eddb15661c706a6
BLAKE2b-256 1fd6a2bb3aad16c58f2f1c7658ced95a6f5244b6fed8546e7bdb890e72582fd8

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