import { getStore } from '@netlify/blobs' const emojiMap = (genre, artist) => { const DEFAULT = "๐ŸŽง" const normalizedArtist = artist?.toLowerCase() if (normalizedArtist === "afi") return "โ›ต๏ธ๐ŸŒ…" if (normalizedArtist === "agalloch") return "๐Ÿ”๏ธ" if (normalizedArtist === "augury") return "โ˜„๏ธ" if (normalizedArtist === "autopsy") return "๐ŸงŸ" if (normalizedArtist === "balance and composure") return "๐Ÿช‚" if (normalizedArtist === "bedsore") return "๐Ÿ›๏ธ" if (normalizedArtist === "birds in row") return "๐Ÿฆ…๐Ÿฆ‰๐Ÿฆข" if (normalizedArtist === "black flag") return "๐Ÿด" if (normalizedArtist === "blink-182") return "๐Ÿ˜ต" if (normalizedArtist === "blood incantation") return "๐Ÿ‘ฝ" if (normalizedArtist === "bolt thrower") return "โš”๏ธ" if (normalizedArtist === "bruce springsteen") return "๐Ÿ‡บ๐Ÿ‡ธ" if (normalizedArtist === "carcass") return "๐Ÿฅผ" if (normalizedArtist === "counting crows") return "๐Ÿฆโ€โฌ›" if (normalizedArtist === "david bowie") return "๐Ÿ‘จ๐Ÿปโ€๐ŸŽค" if (normalizedArtist === "devoid of thought") return "๐Ÿšซ๐Ÿ’ญ" if (normalizedArtist === "deftones") return "๐Ÿฆ‰" if (normalizedArtist === "drug church") return "๐Ÿ’Šโ›ช๏ธ" if (normalizedArtist === "fleshwater") return "๐Ÿค" if (normalizedArtist === "full of hell & nothing") return "๐Ÿซจ๐ŸŽธ" if (normalizedArtist === "imperial triumphant") return "๐ŸŽญ" if (normalizedArtist === "mastodon") return "๐Ÿ‹" if (normalizedArtist === "minor threat") return "๐Ÿ‘จ๐Ÿปโ€๐Ÿฆฒ" if (normalizedArtist === "nomeansno") return "๐Ÿต๐Ÿฎ๐Ÿšฌ" if (normalizedArtist === "nothing") return "๐Ÿณ๏ธ" if (normalizedArtist === "panopticon") return "๐Ÿช•๐Ÿชฆ" if (normalizedArtist === "radiohead") return "๐Ÿ“ป" if (normalizedArtist === "taylor swift") return "๐Ÿ‘ธ๐Ÿผ" if (normalizedArtist === "the mars volta") return "๐Ÿ’ก๐Ÿ˜ฎ" if (normalizedArtist === "thrice") return "๐Ÿ‘จโ€๐ŸŽจ๐Ÿš‘" if (normalizedArtist === "tom waits") return "๐Ÿคน๐Ÿป" if (normalizedArtist === "webbed wing") return "๐Ÿคก" // early return for bad input if (!genre) return DEFAULT if (genre.includes("death metal") || genre.includes("death-doom")) return "๐Ÿ’€" if (genre.includes("black metal") || genre.includes("blackgaze")) return "๐Ÿชฆ" if (genre.includes("metal")) return "๐Ÿค˜" if (genre.includes("emo") || genre.includes("blues")) return "๐Ÿ˜ข" if (genre.includes("grind") || genre.includes("powerviolence")) return "๐Ÿซจ" if ( genre.includes("country") || genre.includes("americana") || genre.includes("bluegrass") || genre.includes("folk") || genre.includes("songwriter") ) return "๐Ÿช•" if (genre.includes("post-punk")) return "๐Ÿ˜”" if (genre.includes("dance-punk")) return "๐Ÿชฉ" if (genre.includes("punk") || genre.includes("hardcore")) return "โœŠ" if (genre.includes("hip hop")) return "๐ŸŽค" if (genre.includes("progressive") || genre.includes("experimental")) return "๐Ÿค“" if (genre.includes("jazz")) return "๐ŸŽบ" if (genre.includes("psychedelic")) return "๐Ÿ’Š" if (genre.includes("dance") || genre.includes("electronic")) return "๐Ÿ’ป" if (genre.includes("ambient")) return "๐Ÿคซ" if ( genre.includes("alternative") || genre.includes("rock") || genre.includes("shoegaze") || genre.includes("screamo") || genre.includes("grunge") ) return "๐ŸŽธ" return DEFAULT } export default async () => { const scrobbles = getStore('scrobbles') const headers = { "Content-Type": "application/json", "Cache-Control": "public, s-maxage=360, stale-while-revalidate=1080", } const scrobbleData = await scrobbles.get('now-playing', { type: 'json'}) if (!scrobbleData) return new Response(JSON.stringify({}, { headers })) return new Response(JSON.stringify({ content: `${emojiMap( scrobbleData['genre'], scrobbleData['artist'] )} ${scrobbleData['track']} by ${ scrobbleData['artist'] }`, }), { headers } ) } export const config = { cache: "manual", path: "/api/now-playing" }