Previously hardcoded at 3s (5s for tracks >10min) — files drifting past that got quarantined with no user override. Live recordings, alternate masterings, and some legitimate uploads routinely drift further. New setting `post_processing.duration_tolerance_seconds`. Default 0 means "use auto-scaled defaults" (unchanged behavior for users who don't touch it). Positive value overrides the per-track defaults. Capped at 60s — past that the check is effectively off. Logic lifted to pure helper `resolve_duration_tolerance` in file_integrity.py. Coerces every plausible input (None / empty / zero / negative / unparseable / above-cap / numeric string / float) to either a float override or None for auto. 12 tests pin every shape. Wired into `core/imports/pipeline.py` at the integrity-check call site — runs for ALL matched downloads (Soulseek / Tidal / Qobuz / HiFi / YouTube / Deezer-direct) since they all share that pipeline. Settings UI input under Settings → Metadata → Post-Processing. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| album.py | ||
| album_matching.py | ||
| album_naming.py | ||
| context.py | ||
| file_integrity.py | ||
| file_ops.py | ||
| filename.py | ||
| guards.py | ||
| paths.py | ||
| pipeline.py | ||
| resolution.py | ||
| routes.py | ||
| side_effects.py | ||
| staging.py | ||