Skip to main content

Sync Lidarr metadata into the musefs SQLite store

Project description

lidarr-musefs

A Lidarr integration that lets Lidarr import into a placeholder library tree while musefs serves the real consumer-facing, re-tagged FUSE view.

The supported workflow keeps Lidarr as the downloader, matcher, and metadata source, but prevents Lidarr from copying, moving, or rewriting backing audio bytes. Lidarr's destination tree exists so Lidarr can track files. Point Navidrome, Plex, Jellyfin, or other consumers at the musefs mount instead.

Required Lidarr settings

  • Settings -> Media Management -> Import Using Script: enabled.
  • Import Script Path: musefs-lidarr-import.
  • Metadata Provider -> Write Audio Tags: Never.
  • File Date: None.
  • Linux permission management: disabled.

Do not rely on Lidarr's built-in "Use Hardlinks instead of Copy" for this workflow. Lidarr uses a hardlink-or-copy transfer mode internally, so a hardlink failure can copy bytes. musefs-lidarr-import creates the destination entry itself and fails closed.

Environment

Import script:

MUSEFS_LIDARR_LINK_MODE=symlink   # default; use hardlink only if symlinks are unsuitable

Sync script:

MUSEFS_DB=/path/to/musefs.db
MUSEFS_BIN=musefs
MUSEFS_LIDARR_URL=http://localhost:8686
MUSEFS_LIDARR_API_KEY=your-api-key
MUSEFS_LIDARR_AUTOSCAN=1

API keys are redacted from logs and errors.

Lidarr Custom Script

Configure a Custom Script notification:

  • On Release Import: enabled.
  • On Rename: enabled.
  • Path: musefs-lidarr-sync.

Test events exit successfully without touching files or the database. TrackRetag events are skipped with a warning because they fire after Lidarr writes tags.

Manual backfill

Run:

musefs-lidarr-sync --all

Manual backfill requires MUSEFS_LIDARR_URL and MUSEFS_LIDARR_API_KEY. It queries all Lidarr artists and syncs their known track files into the musefs DB.

Doctor

Run:

musefs-lidarr-sync --doctor

The doctor checks Lidarr's API for:

  • writeAudioTags = no
  • fileDate = none
  • setPermissionsLinux = false

If MUSEFS_LIDARR_URL and MUSEFS_LIDARR_API_KEY are not configured, doctor and sync fail because the integration cannot verify safe settings or build complete per-track metadata.

Smoke test

  1. Build and install musefs.
  2. Install python-musefs and lidarr-musefs into the environment Lidarr uses for custom scripts.
  3. Configure Import Using Script and Custom Script as described above.
  4. Import a small album.
  5. Confirm Lidarr's destination entry is a symlink by default.
  6. Run musefs mount /tmp/mnt --db "$MUSEFS_DB".
  7. Confirm the mount shows Lidarr metadata.
  8. Confirm the source file's bytes and mtime did not change.

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

lidarr_musefs-0.0.1.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

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

lidarr_musefs-0.0.1-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file lidarr_musefs-0.0.1.tar.gz.

File metadata

  • Download URL: lidarr_musefs-0.0.1.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for lidarr_musefs-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f043dc82f35f7048f4de29321b188dd72fe1bedc5ed886701be3e2dca2a1afc2
MD5 6f446c9ee628088460513023400ad9f2
BLAKE2b-256 409972cf914cdb8ba1117f66a99c8992d5e07ab566910c04d2f5982e060f5fa5

See more details on using hashes here.

File details

Details for the file lidarr_musefs-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: lidarr_musefs-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for lidarr_musefs-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4f17537b5cae7fdac7c1de07109b0c63e1dc3cfb741c3d738674334ad35e0303
MD5 fd1a1f3819f4abb6d28d0ab31e25a3c7
BLAKE2b-256 28984f9157181a4f5df88b1aabbb9aade3aa9a0afc2973869109ccc35eb3e6dc

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