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)) """, (duration_ms, album_id))
copyright_text = data.get('copyright') 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(""" cursor.execute("""
UPDATE albums SET copyright = ? UPDATE albums SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '') WHERE id = ? AND (copyright IS NULL OR copyright = '')
@ -669,7 +671,9 @@ class QobuzWorker:
""", (1 if parental else 0, track_id)) """, (1 if parental else 0, track_id))
isrc = data.get('isrc') 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(""" cursor.execute("""
UPDATE tracks SET isrc = ? UPDATE tracks SET isrc = ?
WHERE id = ? AND (isrc IS NULL OR isrc = '') WHERE id = ? AND (isrc IS NULL OR isrc = '')
@ -684,7 +688,9 @@ class QobuzWorker:
""", (duration_ms, track_id)) """, (duration_ms, track_id))
copyright_text = data.get('copyright') 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(""" cursor.execute("""
UPDATE tracks SET copyright = ? UPDATE tracks SET copyright = ?
WHERE id = ? AND (copyright IS NULL OR copyright = '') WHERE id = ? AND (copyright IS NULL OR copyright = '')

View file

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