From 0852371ab82190a10864062c7aaa02511afc8540 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 11 Jan 2026 19:57:18 +0100 Subject: [PATCH] Fix image and data rendering for artist/album/playlist views --- ui.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ui.ts b/ui.ts index 693ba91..ead1bf6 100644 --- a/ui.ts +++ b/ui.ts @@ -341,18 +341,21 @@ async function viewArtist(id){ try{ var res=await fetch('/api/artists/'+encodeURIComponent(id)); var data=await res.json(); + var artist=data.artist||data; var tracks=[]; - // Get songs from artist + // Get songs from artist - check both structures + if(data.topSongs)tracks.push(...data.topSongs.map(s=>({...s,resultType:'song',videoId:s.videoId,thumbnails:[{url:s.thumbnail}]}))); if(data.songs?.results)tracks.push(...data.songs.results.map(s=>({...s,resultType:'song'}))); - if(data.albums?.results){ - data.albums.results.forEach(a=>{tracks.push({...a,resultType:'album'})}); + if(data.albums){ + data.albums.forEach(a=>{tracks.push({...a,resultType:'album',browseId:a.browseId,thumbnails:[{url:a.thumbnail}]})}); } - if(data.singles?.results){ - data.singles.results.forEach(a=>{tracks.push({...a,resultType:'album'})}); + if(data.singles){ + data.singles.forEach(a=>{tracks.push({...a,resultType:'album',browseId:a.browseId,thumbnails:[{url:a.thumbnail}]})}); } songs=tracks; // Show artist header - var header='
'+esc(data.name||'Artist')+'
'+(data.subscribers||'')+'
'; + var thumb=artist.thumbnail||artist.thumbnails?.[0]?.url||''; + var header='
'+esc(artist.name||'Artist')+'
'+(artist.subscribers||'')+'
'; document.getElementById('results').innerHTML=header; render(null,true); }catch(e){document.getElementById('results').innerHTML='
Failed to load artist
';} @@ -365,9 +368,12 @@ async function viewAlbum(id){ try{ var res=await fetch('/api/albums/'+encodeURIComponent(id)); var data=await res.json(); - songs=(data.tracks||[]).map(t=>({...t,resultType:'song',thumbnails:data.thumbnails})); + var album=data.album||data; + var albumThumb=album.thumbnail||album.thumbnails?.[0]?.url||''; + songs=(data.tracks||[]).map(t=>({...t,resultType:'song',thumbnails:[{url:albumThumb}]})); // Show album header - var header='
'+esc(data.title||'Album')+'
'+esc(data.artists?.map(a=>a.name).join(', ')||'')+'
'+(data.year||'')+' - '+(data.trackCount||songs.length)+' tracks
'; + var artistName=data.artist?.name||album.artists?.map(a=>a.name).join(', ')||''; + var header='
'+esc(album.title||'Album')+'
'+esc(artistName)+'
'+(album.year||'')+' - '+(album.trackCount||songs.length)+' tracks
'; document.getElementById('results').innerHTML=header; render(null,true); }catch(e){document.getElementById('results').innerHTML='
Failed to load album
';} @@ -382,9 +388,10 @@ async function viewPlaylist(id){ var playlistId=id.startsWith('VL')?id.substring(2):id; var res=await fetch('/api/playlists/'+encodeURIComponent(playlistId)); var data=await res.json(); + var playlistThumb=data.thumbnail||data.thumbnails?.[0]?.url||''; songs=(data.tracks||[]).map(t=>({...t,resultType:'song'})); // Show playlist header - var header='
'+esc(data.title||'Playlist')+'
'+esc(data.author?.name||'')+'
'+(data.trackCount||songs.length)+' tracks
'; + var header='
'+esc(data.title||'Playlist')+'
'+esc(data.author||'')+'
'+(data.trackCount||songs.length)+' tracks
'; document.getElementById('results').innerHTML=header; render(null,true); }catch(e){document.getElementById('results').innerHTML='
Failed to load playlist
';}