Skip to main content

Noqlen Meta

Noqlen Meta is a beets plugin for multi-provider metadata enrichment and MusicBrainz identity tools. beets remains the matcher and library manager: Noqlen enriches releases and tracks that beets has already selected, and it offers separate workflows to audit MusicBrainz identity and synchronize four confirmed MusicBrainz IDs to audio-file tags.

Noqlen previews by default. Database changes require --apply; specialized identity-tag file replacement requires --identity-tags --write. There is no --force option.

Capabilities

  • Enrich selected releases from Discogs, MusicBrainz, Last.fm, and iTunes.
  • Add selected-track plain lyrics from LRCLIB during import.
  • Preview or apply ordinary enrichment to albums already in a beets library.
  • Audit and repair release, release-group, recording, and release-track MBIDs.
  • Synchronize those four coherent database MBIDs to supported audio files.
  • Keep provider lookup, database application, and file writing separately authorized.

Noqlen does not rematch ordinary enrichment targets. It does not call Navidrome APIs; Navidrome is a possible consumer of resulting file tags.

Documentation

The complete manual is available on Read the Docs. The site-docs/ source is available for contributions.

Start with:

Installation

Install Noqlen Meta in the same Python environment as beets:

pip install beets-noqlenmeta

Discogs search needs the optional client:

pip install "beets-noqlenmeta[discogs]"

Enable the plugin in the beets config.yaml:

plugins:
  - noqlenmeta

noqlenmeta:
  preview: true

Run beet config -p to print the configuration path. beets chooses the normal platform-specific configuration directory; do not assume the same path on Linux, macOS, and Windows.

Verify that the plugin loaded:

beet help noqlenmeta

The command is beet noqlenmeta; beet nm is the preferred alias.

First Preview

Enable at least one provider before ordinary enrichment. For example, MusicBrainz enrichment uses the exact release MBID already known by beets:

noqlenmeta:
  providers:
    musicbrainz:
      enabled: true

Preview one existing album:

beet nm album:"Example Album"

The command may use the network, but preview does not change the beets database or audio files. Review KEEP, PROPOSE, REVIEW, and BLOCKED results before continuing.

Apply To The Database

After reviewing the same query, explicitly apply ordinary safe changes:

beet nm --apply album:"Example Album"

This changes ordinary metadata in the beets database only. It does not write audio-file tags. Strict mode is the default: one review or mapping blocker withholds every ordinary Noqlen change for that album.

Partial mode is explicit:

beet nm --apply --partial album:"Example Album"

Partial mode can store already-safe ordinary fields while leaving blocked or review fields unchanged. Partial is not force: it never accepts ambiguity, lowers confidence, bypasses stale-state checks, or applies identity/file work partially.

Commands And Write Boundaries

Command Purpose Network Database Audio files
beet nm QUERY Ordinary preview Enabled providers No No
beet nm --apply QUERY Ordinary application Enabled providers Ordinary album metadata No
beet nm --identity QUERY Identity audit MusicBrainz No No
beet nm --identity --apply QUERY Identity repair MusicBrainz Four MBID columns No
beet nm --identity-tags QUERY Identity-tag preview No No No
beet nm --identity-tags --write QUERY Four-MBID synchronization No Operational mtime only Four MBID tags
beet write QUERY Native beets tag sync No Operational state Generic beets fields

The importer has another boundary: Noqlen may update the metadata selected by beets, then beets performs its normal persistence and optional tag write. import.write, native beet write, and Noqlen --identity-tags --write are different controls. See How Noqlen interacts with beets.

Providers

All providers are disabled by default.

Provider Current scope Current contribution
Discogs Releases Genres, styles, labels, catalog numbers, barcodes, country, year, media, format descriptions
MusicBrainz enrichment Releases with an exact release MBID Labels, catalog numbers, barcode, country, year, media
Last.fm Releases Filtered album genres
iTunes Releases Album genre and release year
LRCLIB Importer-selected tracks Plain lyrics; synchronized lyrics preview as blocked
MusicBrainz identity source Separate identity modes Four MusicBrainz identity fields

Discogs direct-ID lookup can work without credentials; search requires the optional client and generally a token. Set the token in the NOQLENMETA_DISCOGS_TOKEN environment variable rather than committing it.

Fields And Formats

Ordinary release fields include genres, styles, labels, catalog numbers, barcodes, country, year, media, and format descriptions. Mood, lyrics, synchronized lyrics, and cover settings are present for explicit capability control, but a field is usable only where an enabled provider and a lossless target mapping exist.

Noqlen v1 does not apply synchronized lyrics or cover art. Existing-library ordinary enrichment is album-only. Importer plain-lyrics enrichment applies to selected tracks only.

Identity-tag round trips are tested with:

  • FLAC
  • MP3
  • M4A/MP4
  • Ogg Vorbis
  • Opus

The identity-tag filesystem workflow requires proven no-atime, no-follow, and same-directory atomic-replacement guarantees. Unsupported operating systems, filesystems, or files block before replacement. This narrower limitation does not imply that ordinary database enrichment is Linux-only.

beets And Navidrome

The beets database is information managed privately by beets. Audio-file tags are metadata stored inside media files. Navidrome normally scans those files; it does not normally read the private beets database.

Therefore beet nm --apply alone does not update what Navidrome sees. Use native beet write for generic beets database-to-file synchronization, or use beet nm --identity-tags --write only for the specialized four-MBID workflow. Then let Navidrome rescan according to its own configuration.

Compatibility

  • Python 3.10 through 3.14 (>=3.10,<3.15) are supported and covered by the release CI matrix. Version 1.0.0 does not claim Python 3.15 support.
  • beets 2.12 or later within the 2.x series is required.
  • Ordinary enrichment and database identity operations are Python/beets based.
  • Identity-tag replacement is supported only where its filesystem guarantees can be proven at runtime.
  • Navidrome compatibility describes a file-tag workflow, not a direct API integration.

See the compatibility reference for the tested matrix and limitations.

Project

Version 1.0.0 is ready for the release tag. The first successful OIDC publication will create and establish ownership of the PyPI project. The package has not been published to PyPI yet.

License

Noqlen Meta is distributed under the MIT License.

Copyright © 2026 João Pedro Rosa dos Santos.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beets_noqlenmeta-1.0.0.tar.gz (77.8 kB view details)

Uploaded Source

Built Distribution

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

beets_noqlenmeta-1.0.0-py3-none-any.whl (102.9 kB view details)

Uploaded Python 3

File details

Details for the file beets_noqlenmeta-1.0.0.tar.gz.

File metadata

  • Download URL: beets_noqlenmeta-1.0.0.tar.gz
  • Upload date:
  • Size: 77.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for beets_noqlenmeta-1.0.0.tar.gz
Algorithm Hash digest
SHA256 79f9ebfb354aab84769a003b75d0e78190ea27ed74d4a1ab995126f9385030b6
MD5 e2fb4184c298558ae9799663e3c3f140
BLAKE2b-256 735d08a2ecba3b79d5ba4a192f8bb70dac76edf4f8037c31c520f7ad0bfc9377

See more details on using hashes here.

Provenance

The following attestation bundles were made for beets_noqlenmeta-1.0.0.tar.gz:

Publisher: release.yml on jssantogit/noqlen-meta-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file beets_noqlenmeta-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for beets_noqlenmeta-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5804fca69f92117aa2fc2087f271c9364c620402f2b8007caeda9c551e84f8a
MD5 a0447c2e887e3397923156e0b5f361cb
BLAKE2b-256 262cb175944981d32821181a4b12e79fd505c0218bf93d65befb1fd5451bf2a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for beets_noqlenmeta-1.0.0-py3-none-any.whl:

Publisher: release.yml on jssantogit/noqlen-meta-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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