From 7f455053e7ab9b270863fde6b5ceb4089ff63ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Mon, 24 Nov 2025 14:36:27 +0100 Subject: [PATCH] fix: Improve iTunes API call success rate by increasing rate limit delay and adding a User-Agent header. --- app/api/admin/refresh-years/route.ts | 4 ++-- lib/itunes.ts | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/api/admin/refresh-years/route.ts b/app/api/admin/refresh-years/route.ts index 871ac01..eba73d2 100644 --- a/app/api/admin/refresh-years/route.ts +++ b/app/api/admin/refresh-years/route.ts @@ -36,8 +36,8 @@ export async function POST(request: Request) { for (const song of songs) { try { - // Rate limiting: wait 500ms between requests to be safe - await sleep(500); + // Rate limiting: wait 2000ms between requests to be safe (iTunes can be strict) + await sleep(2000); const year = await getReleaseYearFromItunes(song.artist, song.title); diff --git a/lib/itunes.ts b/lib/itunes.ts index 0c696ba..4b3ee25 100644 --- a/lib/itunes.ts +++ b/lib/itunes.ts @@ -33,7 +33,11 @@ export async function getReleaseYearFromItunes(artist: string, title: string): P const term = encodeURIComponent(`${artist} ${title}`); const url = `https://itunes.apple.com/search?term=${term}&entity=song&limit=10`; - const response = await fetch(url); + const response = await fetch(url, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' + } + }); if (!response.ok) { console.error(`iTunes API error: ${response.status} ${response.statusText}`);