async function fetchCover(query, targetEl) { try { // In production, this should hit our /api/cover to avoid CORS and add caching, // but for the mockup functionality we can use iTunes directly if we don't have backend running. // The spec mentioned using server for CORS, but browser often allows GET to iTunes. // We will use the backend route to be safe. // For now, simple fallback to iTunes directly if backend is missing. let url = `/api/cover?q=${encodeURIComponent(query)}`; // Temporary direct fetch for local testing if no backend if (window.location.protocol === 'file:') { url = `https://itunes.apple.com/search?term=${encodeURIComponent(query)}&media=music&entity=song&limit=1`; } const r = await fetch(url); if (!r.ok) throw new Error('fetch error'); const data = await r.json(); let src = ''; if (data.url) { // our api src = data.url; } else if (data.results && data.results[0] && data.results[0].artworkUrl100) { // direct itunes src = data.results[0].artworkUrl100.replace('100x100bb', '300x300bb'); } if (src) { targetEl.innerHTML = `cover`; } } catch (e) { console.error('Cover fetch failed', e); } } window.fetchCover = fetchCover;