diff --git a/backend/novasonic-server.js b/backend/novasonic-server.js index 0a41b80..4029fba 100644 --- a/backend/novasonic-server.js +++ b/backend/novasonic-server.js @@ -315,6 +315,20 @@ app.get('/api/itunes/:endpoint', (req, res) => { }).on('error', e => res.status(502).json({ error: e.message })); }); +app.get('/api/events/:artist', (req, res) => { + const artist = req.params.artist; + const target = `https://rest.bandsintown.com/artists/${encodeURIComponent(artist)}/events?app_id=novasonic`; + https.get(target, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36', + 'Accept': 'application/json', + } + }, upstream => { + res.setHeader('Content-Type', 'application/json'); + upstream.pipe(res); + }).on('error', e => res.status(502).json({ error: e.message })); +}); + app.get('/api/health', (req, res) => { res.json({ status: 'ok', ytdlpVersion, diff --git a/src/views/events.js b/src/views/events.js index b06a4ad..c4b4e81 100644 --- a/src/views/events.js +++ b/src/views/events.js @@ -1,8 +1,11 @@ import { esc } from '../utils.js'; +import { S } from '../state.js'; export async function fetchEvents(artistName) { + const base = S.cfg?.backendUrl; + if(!base) return []; try { - const r = await fetch(`https://rest.bandsintown.com/artists/${encodeURIComponent(artistName)}/events?app_id=novasonic`); + const r = await fetch(`${base}/api/events/${encodeURIComponent(artistName)}`); if(!r.ok) return []; const data = await r.json(); if(!Array.isArray(data)) return []; @@ -31,7 +34,7 @@ export function openEventsModal(events, artistName) {