Fix Tidal/Qobuz enrichment backfill failing on dict-type copyright and isrc fields

This commit is contained in:
Broque Thomas 2026-03-12 10:26:35 -07:00
parent ef43e4b5a6
commit 5db10b552d
2 changed files with 19 additions and 7 deletions

View file

@ -608,7 +608,9 @@ class QobuzWorker:
""", (duration_ms, album_id))
copyright_text = data.get('copyright')
if copyright_text:
if isinstance(copyright_text, dict):
copyright_text = copyright_text.get('text', copyright_text.get('name', ''))
if copyright_text and isinstance(copyright_text, str):
cursor.execute("""
UPDATE albums SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '')
@ -669,7 +671,9 @@ class QobuzWorker:
""", (1 if parental else 0, track_id))
isrc = data.get('isrc')
if isrc:
if isinstance(isrc, dict):
isrc = isrc.get('value', isrc.get('id', ''))
if isrc and isinstance(isrc, str):
cursor.execute("""
UPDATE tracks SET isrc = ?
WHERE id = ? AND (isrc IS NULL OR isrc = '')
@ -684,7 +688,9 @@ class QobuzWorker:
""", (duration_ms, track_id))
copyright_text = data.get('copyright')
if copyright_text:
if isinstance(copyright_text, dict):
copyright_text = copyright_text.get('text', copyright_text.get('name', ''))
if copyright_text and isinstance(copyright_text, str):
cursor.execute("""
UPDATE tracks SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '')

View file

@ -621,9 +621,11 @@ class TidalWorker:
WHERE id = ? AND duration IS NULL
""", (duration_ms, album_id))
# Backfill copyright
# Backfill copyright (can be string or dict with 'text' key in JSON:API)
copyright_text = data.get('copyright')
if copyright_text:
if isinstance(copyright_text, dict):
copyright_text = copyright_text.get('text', copyright_text.get('name', ''))
if copyright_text and isinstance(copyright_text, str):
cursor.execute("""
UPDATE albums SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '')
@ -693,7 +695,9 @@ class TidalWorker:
""", (1 if explicit else 0, track_id))
isrc = data.get('isrc')
if isrc:
if isinstance(isrc, dict):
isrc = isrc.get('value', isrc.get('id', ''))
if isrc and isinstance(isrc, str):
cursor.execute("""
UPDATE tracks SET isrc = ?
WHERE id = ? AND (isrc IS NULL OR isrc = '')
@ -707,7 +711,9 @@ class TidalWorker:
""", (duration_ms, track_id))
copyright_text = data.get('copyright')
if copyright_text:
if isinstance(copyright_text, dict):
copyright_text = copyright_text.get('text', copyright_text.get('name', ''))
if copyright_text and isinstance(copyright_text, str):
cursor.execute("""
UPDATE tracks SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '')