data endpoint for entity 90008 (aka. a website)

show artist in listening to

ptr.pet ba3349e2 bced32a4

verified
Waiting for spindle ...
+28 -11
+11 -6
eunomia/src/lib/lastfm.ts
··· 29 29 } 30 30 }; 31 31 32 - const getTrackCoverArt = (releaseMbId: string | null | undefined, originUrl: string | null | undefined) => { 32 + const getTrackCoverArt = ( 33 + releaseMbId: string | null | undefined, 34 + originUrl: string | null | undefined 35 + ) => { 33 36 let mb: string | null = null; 34 37 let yt: string | null = null; 35 38 36 39 if (releaseMbId) mb = `https://coverartarchive.org/release/${releaseMbId}/front-250`; 37 - 40 + 38 41 try { 39 42 if (originUrl) { 40 43 let videoId: string | null = null; ··· 45 48 } 46 49 if (videoId) yt = `https://img.youtube.com/vi/${videoId}/mqdefault.jpg`; 47 50 } 48 - } catch { 49 - } 51 + } catch {} 50 52 51 53 return { mb, yt }; 52 54 }; 53 55 54 56 const joinArtists = (artists: any[]) => { 55 57 if (!artists || artists.length === 0) return null; 56 - return artists.map((a) => a.artistName).join(', '); 58 + // remove duplicates 59 + const uniqueArtists = [...new Set(artists.map((a) => a.artistName))]; 60 + return uniqueArtists.join(', '); 57 61 }; 58 62 59 63 export const updateNowPlayingTrack = async () => { ··· 72 76 const metadata = statusData.value; 73 77 track = statusData.value.item; 74 78 if (track.playedTime) when = new Date(track.playedTime).getTime(); 75 - status = ((Date.now() / 1000) >= (parseInt(metadata.time) + track.duration)) ? 'played' : 'playing'; 79 + status = 80 + Date.now() / 1000 >= parseInt(metadata.time) + track.duration ? 'played' : 'playing'; 76 81 } 77 82 } 78 83 } catch (err) {
+1 -1
eunomia/src/routes/(site)/+layout.svelte
··· 239 239 {#snippet tooltipContent()} 240 240 <p> 241 241 {#if data.ipv6} 242 - yay!!!!! good thing :3 you get a cookie! 242 + yay!!!!! good thing :3 you get a cookie! 🍪 243 243 {:else} 244 244 wow u're using ipv4.... you suck!!!!! <br />(or ur isp sucks sorgy) 245 245 {/if}
+16 -4
eunomia/src/routes/(site)/+page.svelte
··· 170 170 {#if data.lastTrack} 171 171 {@const images = data.lastTrack.images} 172 172 {@const initialUrl = images.mb ?? images.yt} 173 + {@const showAlbum = 174 + data.lastTrack.album && data.lastTrack.name !== data.lastTrack.album} 173 175 <div class="flex flex-row gap-0.5 m-1.5 border-4 border-double bg-ralsei-black"> 174 176 <!-- svelte-ignore a11y_missing_attribute --> 175 177 <img 176 - class="border-4 w-[4.5rem] h-[4.5rem] {initialUrl ? 'object-cover' : 'p-2'}" 178 + class="border-4 {showAlbum 179 + ? 'w-[5.75rem] h-[5.75rem]' 180 + : 'w-[4.5rem] h-[4.5rem]'} {initialUrl ? 'object-cover' : 'p-2'}" 177 181 style="border-style: none double none none; {initialUrl 178 182 ? '' 179 183 : 'image-rendering: pixelated;'}" ··· 193 197 /> 194 198 <div class="flex flex-col max-w-[60ch] p-2 text-ellipsis overflow-hidden"> 195 199 <p 196 - class="text-shadow-green text-ralsei-green-light text-sm text-ellipsis text-nowrap overflow-hidden max-w-[50ch]" 200 + class="text-shadow-green text-ralsei-green-light text-sm text-ellipsis text-nowrap overflow-hidden max-w-[45ch]" 197 201 > 198 202 <span class="text-sm text-shadow-white text-ralsei-white" 199 203 >{data.lastTrack.status === 'playing' ··· 208 212 >{data.lastTrack.name}</a 209 213 > 210 214 </p> 215 + {#if showAlbum} 216 + <p 217 + class="text-blue-500 text-sm text-ellipsis text-nowrap overflow-hidden max-w-[45ch]" 218 + > 219 + <span class="text-shadow-white text-ralsei-white">in</span> 220 + <span title={data.lastTrack.album}>{data.lastTrack.album}</span> 221 + </p> 222 + {/if} 211 223 <p 212 - class="text-shadow-pink text-ralsei-pink-regular text-sm text-ellipsis text-nowrap overflow-hidden max-w-[50ch]" 224 + class="text-ralsei-pink-regular/80 text-sm text-ellipsis text-nowrap overflow-hidden max-w-[45ch]" 213 225 > 214 226 <span class="text-shadow-white text-ralsei-white">by</span> 215 227 <span title={data.lastTrack.artist}>{data.lastTrack.artist}</span> 216 228 </p> 217 229 <p 218 - class="text-shadow-white text-ralsei-white text-xs text-ellipsis text-nowrap overflow-hidden max-w-[50ch]" 230 + class="text-shadow-white text-ralsei-white text-xs text-ellipsis text-nowrap overflow-hidden max-w-[45ch]" 219 231 > 220 232 …{renderRelativeDate(data.lastTrack.when)} 221 233 </p>