navidrome: beets writes tags (write: yes, beet write) (REN-350)
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
ci/woodpecker/pr/pr-review Pipeline was successful

Two dry runs were checked; the spot check now matches original releases.
Music mount becomes writable for tag writes; move/copy/delete stay off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
atlas-bot
2026-09-29 07:17:34 +00:00
co-authored by Claude Opus 5.5
parent b670c94bf0
commit af0c0829af
+16 -8
View File
@@ -2,9 +2,9 @@
# It never moves, copies, renames or deletes a file: Lidarr and Navidrome
# paths stay valid. Navidrome picks up the new tags on its hourly scan.
#
# Safety gate (REN-350): `import.write: no` and the art plugins off. Tags go
# into the beets DB only; `beet write -p` prints what a write would change.
# After the report and a 5-album spot check, a follow-up PR sets write: yes.
# REN-350: two dry runs with write: no were checked (match report and a
# 5-album spot check), so beets now writes tags. Art plugins stay off: they
# would add or embed cover files, a separate change.
#
# Lidarr does not write tags: lidarr-reconcile sets writeAudioTags "no" on
# every pod start (lidarr.yaml), so it cannot undo the beets tags.
@@ -42,7 +42,7 @@ data:
media: ['CD', 'Digital Media|File']
original_year: yes
import:
write: no
write: yes
copy: no
move: no
link: no
@@ -55,7 +55,7 @@ data:
resume: no
# Never "remove": that deletes files.
duplicate_action: skip
# Both write files into /music; off until write: yes.
# Both add or change cover art in /music; not part of the tag fix.
fetchart:
auto: no
embedart:
@@ -79,12 +79,20 @@ data:
echo "== albums in library: $(beet ls -a | wc -l)"
echo "== skipped this run: $(grep -c '^skip ' "$LOG")"
echo "== duplicates skipped: $(grep -c '^duplicate-skip ' "$LOG")"
# Incremental import does not revisit albums matched in the dry runs;
# `beet write` puts their DB tags into the files (tags only, no move).
beet write -p > /config/logs/write-preview.txt 2>&1
echo "== items whose file tags differ from the DB: $(grep -vc '^ ' /config/logs/write-preview.txt)"
echo "== items to write: $(grep -vc '^ ' /config/logs/write-preview.txt)"
beet write
wrc=$?
echo "== write exit $wrc"
beet write -p > /config/logs/write-after.txt 2>&1
echo "== items still differing after write: $(grep -vc '^ ' /config/logs/write-after.txt)"
echo "== skipped albums"
grep '^skip ' "$LOG"
echo "== write preview (first 600 lines)"
echo "== written changes (first 600 lines)"
head -n 600 /config/logs/write-preview.txt
[ "$rc" -eq 0 ] && rc=$wrc
exit $rc
---
apiVersion: batch/v1
@@ -140,9 +148,9 @@ spec:
- name: beets-config
mountPath: /etc/beets
readOnly: true
# Writable for tag writes; move/copy/delete stay off above.
- name: music
mountPath: /music
readOnly: true
resources:
requests:
cpu: 100m