From 5db10b552d0dddad1d9c47d86876b900fe8639f2 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Thu, 12 Mar 2026 10:26:35 -0700 Subject: [PATCH] Fix Tidal/Qobuz enrichment backfill failing on dict-type copyright and isrc fields --- core/qobuz_worker.py | 12 +++++++++--- core/tidal_worker.py | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/core/qobuz_worker.py b/core/qobuz_worker.py index 06067fe9..fc227c76 100644 --- a/core/qobuz_worker.py +++ b/core/qobuz_worker.py @@ -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 = '') diff --git a/core/tidal_worker.py b/core/tidal_worker.py index 6e39b336..27f5a78d 100644 --- a/core/tidal_worker.py +++ b/core/tidal_worker.py @@ -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 = '')