Archive dead/manual scripts to pipeline/lib/manual (R8)

Move six scripts that are not wired into the app, scheduler, or web UI out of
the active pipeline/lib into pipeline/lib/manual, so the scheduled scripts are
easy to see and these stay available for hands-on use: convert-m4a.sh,
fix-empty-album.sh, backfill-spotify-tags.sh, backfill-buy-url.py,
recover-azuracast-playlists.py, import-dj-collection.py. Adds a README
explaining each, and extends the Dockerfile chmod to cover the new folder.
Nothing referenced these from active code (verified), so no wiring changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
andrew
2026-07-10 10:52:44 -06:00
parent db13890fe1
commit 2d7243332d
8 changed files with 32 additions and 1 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ COPY pipeline/ /app/pipeline/
COPY schema/ /app/schema/
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh /app/pipeline/sldl /app/pipeline/bin/*.sh /app/pipeline/lib/*.sh /app/pipeline/configs/regen.sh && \
RUN chmod +x /app/entrypoint.sh /app/pipeline/sldl /app/pipeline/bin/*.sh /app/pipeline/lib/*.sh /app/pipeline/lib/manual/* /app/pipeline/configs/regen.sh && \
chown -R alembic:alembic /app
USER alembic
+31
View File
@@ -0,0 +1,31 @@
# Manual / archived scripts
These scripts are kept for occasional hands-on use but are **not** wired into
the app, the scheduler, or the web UI. Nothing here runs automatically. They
live outside `pipeline/lib/` so the active, scheduled scripts there stay easy
to see at a glance.
Run one by hand inside the container when you actually need it, e.g.:
```bash
docker exec -it alembic bash /app/pipeline/lib/manual/convert-m4a.sh
docker exec -it alembic python /app/pipeline/lib/manual/import-dj-collection.py --help
```
What's here and why it's manual-only:
- **convert-m4a.sh** — one-off bulk M4A to FLAC/MP3 conversion. Not part of the
normal download flow.
- **fix-empty-album.sh** — repairs tracks with an empty album tag. A cleanup
tool for a specific past problem, not a recurring job.
- **backfill-spotify-tags.sh** — re-pulls Spotify tags for already-imported
tracks. A migration/backfill aid.
- **backfill-buy-url.py** — one-time backfill of buy-link tags across the
library (the scheduled `enrich-buy-url.py` handles new tracks going forward).
- **recover-azuracast-playlists.py** — rebuilds AzuraCast playlist assignments
after a GROUPING-tag loss. Recovery tool, only relevant if you run AzuraCast.
- **import-dj-collection.py** — bulk-imports a personal DJ set collection with
fingerprint dedup against the existing library. A large one-off importer.
These have not all been hardened with `set -euo pipefail`; treat them as
run-and-watch tools rather than unattended automation.