Skip to main content

App for various music-file-collection analyses (for example, chart of most popular artists in your MP3 collection) and AI playlist generation

Project description

muziqa

Analyze your music collection and generate interesting charts using command-line:

  • Top artists by track count
  • Tracks by decade
  • Tracks by year, with a 5-year rolling average of mean tracks per artist
  • Tracks by country (optional, see below)
  • Tracks by genre (optional, see below)

muziqa chart muziqa chart

Also create MP3 playlist using Anthropic Claude LLM. The generated playlist is an MP3 file of your songs, picked by AI, per your prompt. Example:

$ muziqa Music --playlist "Playlist of rock tunes where lead guitar is as close as possible to the picking style of Mark Knopfler. Max 1 hour. Max one song per artist." --playlist-output mark.mp3

Install

Linux / Mac:

$ pipx install muziqa

Windows (PowerShell; NOTE: untested):

winget install Python.Python.3   # if Python not already installed
pip install pipx
pipx ensurepath                  # restart terminal after this
pipx install muziqa

Windows + --playlist: also install ffmpeg: winget install ffmpeg

Usage

No API keys, no accounts, no streaming service — just point muziqa to a folder of music files:

$ muziqa /path/to/music

Reads tags from all supported files in the folder and subfolders, and saves two charts:

  • muziqa.png — top artists + tracks by decade
  • muziqa_years.png — tracks by year with rolling average

Supported formats: MP3, FLAC, WAV, M4A, OGG

Country and genre charts

$ muziqa /path/to/music --country
$ muziqa /path/to/music --genre
$ muziqa /path/to/music --country --genre

Looks up each artist's country of origin and genre from MusicBrainz and saves additional charts:

  • muziqa_country.png — tracks by country
  • muziqa_genre.png — tracks by genre

muziqa chart muziqa chart

Note: The first run with --country or --genre queries MusicBrainz for every unique artist at 1 request/second (required by their API). For a large collection this can take a bit of time. Using both flags together does not double the time — data is fetched in a single pass. Results are cached in muziqa_mb_cache.json so subsequent runs are instant.

Note on "Unknown" genre: This means MusicBrainz either didn't find the artist or has no community-submitted genre tags for them. It does not affect the rest of the chart.

All options

Option Description
DIR Directory of music files to analyze
--flat Search only the given folder, not subfolders
--country Fetch artist countries from MusicBrainz and plot by country
--genre Fetch artist genres from MusicBrainz and plot by genre
--output FILE Output image filename (default: muziqa.png)
--top N Number of top entries to show (default: 20)
-playlist DESC Create a playlist MP3 matching the given description (requires ANTHROPIC_API_KEY and ffmpeg)
--playlist-output FILE Output file for playlist (default: playlist.mp3)
--model MODEL Claude model for --playlist (default: claude-sonnet-4-6). Tip: use 'llm-models -p Anthropic' to list available models --> github.com/ljbuturovic/llm-models

Examples

$ muziqa ~/Music
$ muziqa ~/Music --flat
$ muziqa ~/Music --country --genre
$ muziqa ~/Music --top 30 --output top30.png

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

muziqa-1.1.2.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.

muziqa-1.1.2-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file muziqa-1.1.2.tar.gz.

File metadata

  • Download URL: muziqa-1.1.2.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.4

File hashes

Hashes for muziqa-1.1.2.tar.gz
Algorithm Hash digest
SHA256 d692554f5a50c41784a51ae0ab968f519bbce16c03441088146e9c6b94129a7e
MD5 57275b5c36f3a4ec894b4ef6c193ea2b
BLAKE2b-256 30bb4f26cf67863a2d2aea408bdee05568c274689372f5168a3cd6d2165c562a

See more details on using hashes here.

File details

Details for the file muziqa-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: muziqa-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.4

File hashes

Hashes for muziqa-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8a8ea6a45a0a571bd705cb1f740009fd1c3e626c4cec3661a728d7c0ba5e14c7
MD5 6567124d8621479ec61b0475bc4bfef6
BLAKE2b-256 6c58ce2a4b7193dc36579d33d40395de47474bd9ad1a3262d9e95d555aacf943

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