Skip to main content

maxqual

Build a music library at the highest quality the source serves, with complete tags, cover art and per-release organization.

maxqual is a standalone CLI for people who curate permanent local libraries (e.g. for Jellyfin/Plex/navidrome). It resolves release metadata, matches tracks, downloads audio natively (no re-encode), tags it properly, and organizes it into per-release folders with playlists and artwork.

What makes it different

  • Zero-transcode pipeline. Streams are kept in their native container. Audio is never re-encoded, so what you keep is exactly what the source served — no generational loss.
  • Quality-tier preference. When a higher audio tier is available to the session you supply, it is preferred automatically; otherwise the best publicly available stream is used.
  • Discography-aware. Point it at an artist and it fetches albums, EPs and singles as separate, properly numbered releases with an .m3u8 each.
  • Open metadata first. Release/track metadata comes from Deezer's public API (no key, no quota dance) for artist and album URLs; Spotify playlists/albums are supported with client credentials (your own app key, or a shared fallback with retries).
  • Cover art maintenance. maxqual covers re-embeds artwork when a strictly larger image can be found, and writes folder.jpg per release.

How it works

metadata source (Deezer / Spotify)
        │  release, tracklist, durations, artwork URL
        ▼
track matching (yt-dlp search, duration-scored)
        │
        ▼
audio download (yt-dlp; native formats only)
        │  m4a / opus, no conversion
        ▼
tagging + organization (mutagen)
   NN - Artists - Title.ext   +   Release.m3u8   +   folder.jpg

Install

Requires Python 3.10+, ffmpeg on PATH, and (recommended) a deno binary — YouTube's JS challenges need a JS runtime that yt-dlp can find.

pipx install maxqual        # or: pip install maxqual

From source:

git clone https://github.com/mareekkk/maxqual
pipx install ./maxqual

Usage

# an artist's discography (Deezer metadata; albums + EPs + singles)
maxqual download "Jeff Kaale" -o ~/Music

# a specific album or playlist
maxqual download "https://www.deezer.com/album/123456" -o ~/Music
maxqual download "https://open.spotify.com/playlist/..." -o ~/Music

# use a logged-in browser session (recommended; tokens rotate, so export fresh)
maxqual download "https://open.spotify.com/playlist/..." \
    --cookies-from-browser firefox --refresh-cookies -o ~/Music

# upgrade embedded cover art across a library
maxqual covers ~/Music

Resumable by design: existing files are skipped, so re-running a command retries only what is missing.

Optional: PO token provider

Some streams require a proof-of-origin token. If you run the community bgutil-ytdlp-pot-provider server locally (loopback only), yt-dlp picks it up automatically and maxqual benefits with no extra configuration:

docker run -d --init --restart unless-stopped \
    -p 127.0.0.1:4416:4416 brainicism/bgutil-ytdlp-pot-provider

Session cookies

Session cookies are credentials. maxqual exports them to a mode-600 file when you pass --refresh-cookies, never prints them, and you should delete the file when you are done. Anonymous operation also works and simply resolves to the best public stream.

Project layout

src/maxqual/
  audio.py    # yt-dlp wrapper: search, native download, cookie export
  sources.py  # Deezer + Spotify metadata
  tags.py     # mutagen tagging, covers, m3u, folder.jpg
  covers.py   # cover-art upgrade pass
  cli.py      # command line interface

maxqual is a tool. It does not host, index or redistribute any content, and it ships without credentials of any kind.

  • You are responsible for what you download and for complying with the terms of the platforms you interact with and the copyright of the material involved.
  • Intended uses include: content you own or created, content published under permissive licenses (e.g. Creative Commons, public domain), and anything you are licensed to archive.
  • The authors do not condone infringement and provide no support for it.

Extraction technology is a moving target; if a source changes its player response format, this tool inherits whatever yt-dlp handles.

License

MIT — see LICENSE.

Metadata

Release files for maxqual 1.0.1

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

Source distribution (sdist)

Source distribution for maxqual 1.0.1
File Size Uploaded Provenance Actions
maxqual-1.0.1.tar.gz 15.2 kB With provenance Details for maxqual-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for maxqual 1.0.1
File Interpreter ABI Platform Actions
maxqual-1.0.1-py3-none-any.whl Python 3 none any Details for maxqual-1.0.1-py3-none-any.whl

Total release size: 30.3 kB

Release files / maxqual-1.0.1.tar.gz

Download URL maxqual-1.0.1.tar.gz
Size 15.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e88f4f9e4705447c8f07d1e884c6432955ecb27dc4939a397a87ba17cba825ce
BLAKE2b-256 checksum
How to use checksums
d6bd54a79b4bd61c601f50705094fcc9abd7c34bf7d847dc8db0a870e1936b61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / maxqual-1.0.1-py3-none-any.whl

Download URL maxqual-1.0.1-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb12ab4e0e4f507ea26ec39f9be80d5d6d1d3af0e3cede0b4a13f6ee220e1e98
BLAKE2b-256 checksum
How to use checksums
73c837017755be28ced860505deade114bebc01629e1f869112fa14c3a377140
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Security for maxqual 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for maxqual-1.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files Full provenance

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