The library quality scanner judged quality by FILE EXTENSION only (get_quality_tier_from_extension) and read the legacy v2 `qualities` dict — so every FLAC was "lossless tier 1" regardless of bit depth / sample rate. It could never flag a 16-bit FLAC as upgradeable under a 24-bit profile, and it ignored the v3 ranked_targets entirely. Completely inconsistent with the download guard. Now both share one core: - selection.targets_from_profile(profile) — single profile→targets conversion (v2→v3 migration), reused by load_profile_targets. - selection.quality_meets_profile(aq, targets) — strict: meets iff the real measured quality satisfies a ranked target (fallback ignored — it's a download concession, not a definition of "good enough"). - guards.check_quality_target refactored to use both. - quality_scanner probes real quality (probe_audio_quality) and checks against the v3 targets via quality_meets_profile. Extension tier kept only as a fallback label when a file can't be probed. Result: the scan flags exactly what the download gate would reject — 16-bit when you want 24-bit, wrong sample rate, MP3 when you want FLAC. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| beatport.py | ||
| deezer.py | ||
| endpoints.py | ||
| hero.py | ||
| listenbrainz.py | ||
| manual_match.py | ||
| matching.py | ||
| playlist.py | ||
| qobuz.py | ||
| quality_scanner.py | ||
| scoring.py | ||
| spotify_public.py | ||
| sync.py | ||
| tidal.py | ||
| youtube.py | ||