- settings: playlists.materialize_path (separate root, mapped apart from the music library so the media server never double-scans it) + materialize_mode (symlink|copy). - core/playlists/materialize.py: pure filesystem engine that (re)builds a playlist folder of relative symlinks (or copies) into the real library — idempotent, prunes stale entries, disambiguates filename collisions, never escapes the root, and auto-falls-back to copy when the FS can't symlink. No DB, no app state; ops injectable. 13 unit tests. Isolated + additive — nothing live calls this yet (stitcher/trigger/routing come next). |
||
|---|---|---|
| .. | ||
| sources | ||
| __init__.py | ||
| explorer.py | ||
| lb_series.py | ||
| materialize.py | ||
| organize_download.py | ||
| pipeline.py | ||
| source_refs.py | ||