mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
* videos: an uploaded audio file never appeared in its Channel The upload flow asks Video.can_model, which only accepted video/*, so an uploaded .flac was indexed with no Video row -- and the batch modeler's `indexed != True` gate then excluded it on every later refresh, leaving the file permanently invisible in its Channel. can_model now accepts audio/* like the batch modeler always has, and the modeler gates on the Video row being missing (mirroring the doc_modeler fix for the same class of bug) so already-stuck files heal on the next refresh. Audio playlists (.m3u detects as audio/x-mpegurl) are excluded from both paths and unmodeled by video_cleanup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * review: widen the playlist denylist, prove modeler termination The denylist gains audio/x-scpls and audio/scpls -- .pls detection varies by libmagic version, and any audio/* playlist type must be refused wherever it comes back. Modeling one file is extracted as _model_video so a test can force persistent failure and prove the loop terminates; failed_ids is recorded before the PYTEST re-raise so no failure path can re-select an id forever. Playlist mimetypes are bound through json_each like the rest of video_cleanup, and the comments state the invariants instead of the history. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * test: the playlist test must not depend on libmagic's m3u opinion CI's libmagic detects .m3u as text/plain where a Mac's says audio/x-mpegurl. The invariant is that a playlist mimetype is never modeled by either path, so the test forces the mimetype like the other denylist tests instead of asserting what detection returned. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| archive | ||
| docs | ||
| flasher | ||
| inventory | ||
| map | ||
| videos | ||
| zim | ||
| __init__.py | ||