Fix AcoustID scanner creating thousands of no-match findings
The scanner was creating a finding for every file that couldn't be identified by AcoustID, flooding the findings list with non-actionable entries. Users saw the scanner "stuck scanning the same files over and over" because the no-match findings were dismissed but recreated on every run. Now only genuine mismatches (AcoustID identifies a different track) create findings. Errors are counted and shown in the job log with actual error messages for debugging.
This commit is contained in:
parent
963a003ca0
commit
7cfd1cae3f
1 changed files with 9 additions and 19 deletions
|
|
@ -175,33 +175,23 @@ class AcoustIDScannerJob(RepairJob):
|
||||||
fp_result = acoustid_client.fingerprint_and_lookup(fpath)
|
fp_result = acoustid_client.fingerprint_and_lookup(fpath)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug("Fingerprint failed for %s: %s", fname, e)
|
logger.debug("Fingerprint failed for %s: %s", fname, e)
|
||||||
|
result.errors += 1
|
||||||
|
if context.report_progress:
|
||||||
|
context.report_progress(
|
||||||
|
log_line=f'Error: {fname} — {e}',
|
||||||
|
log_type='error'
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
if not fp_result or not fp_result.get('recordings'):
|
if not fp_result or not fp_result.get('recordings'):
|
||||||
# No match — could be a very rare/new track
|
# No match — could be API error, rare track, or invalid key
|
||||||
|
# Don't create findings for "no match" — these flood the list
|
||||||
|
# and are usually not actionable. Only log for visibility.
|
||||||
if context.report_progress:
|
if context.report_progress:
|
||||||
context.report_progress(
|
context.report_progress(
|
||||||
log_line=f'No match: {fname}',
|
log_line=f'No match: {fname}',
|
||||||
log_type='skip'
|
log_type='skip'
|
||||||
)
|
)
|
||||||
if context.create_finding:
|
|
||||||
context.create_finding(
|
|
||||||
job_id=self.job_id,
|
|
||||||
finding_type='acoustid_no_match',
|
|
||||||
severity='info',
|
|
||||||
entity_type='track',
|
|
||||||
entity_id=str(expected.get('track_id') or ''),
|
|
||||||
file_path=fpath,
|
|
||||||
title=f'No AcoustID match: {fname}',
|
|
||||||
description='File could not be identified by AcoustID fingerprint',
|
|
||||||
details={
|
|
||||||
'expected_title': expected['title'],
|
|
||||||
'expected_artist': expected['artist'],
|
|
||||||
'album_thumb_url': expected.get('album_thumb_url'),
|
|
||||||
'artist_thumb_url': expected.get('artist_thumb_url'),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
result.findings_created += 1
|
|
||||||
return
|
return
|
||||||
|
|
||||||
# Check best recording match
|
# Check best recording match
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue