diff --git a/backend/spotify_resolve.py b/backend/spotify_resolve.py index 9b461d8..fafe861 100644 --- a/backend/spotify_resolve.py +++ b/backend/spotify_resolve.py @@ -111,19 +111,21 @@ def resolve(sp_type, sp_id): except Exception as e: eprint(f'[spotapi] JSON-LD parse failed: {e}') - # 2) OG tags — artist is desc_parts[0], then type ("Song"), then year - if not track_name: + # 2) OG tags — fill in any fields still missing after JSON-LD + # Real format: "Artist · Song · Year" — artist is index 0 + if not track_name or not artist_name: og = {} for m in re.finditer(r']+(?:property|name)=["\']og:([^"\']+)["\']', page): og[m.group(2)] = _html.unescape(m.group(1)) desc_parts = [p.strip() for p in og.get('description', '').split('·')] - track_name = og.get('title', '') - # Real format: "Artist · Song · Year · N songs." — artist is index 0 - artist_name = desc_parts[0] if desc_parts else '' - album_name = '' - art_url = og.get('image', '') + if not track_name: + track_name = og.get('title', '') + if not artist_name: + artist_name = desc_parts[0] if desc_parts else '' + if not art_url: + art_url = og.get('image', '') eprint(f'[spotapi] OG scrape: name={track_name!r} artist={artist_name!r}') if track_name: