diff --git a/app/api/songs/route.ts b/app/api/songs/route.ts index ea8236b..b49421a 100644 --- a/app/api/songs/route.ts +++ b/app/api/songs/route.ts @@ -214,6 +214,7 @@ export async function POST(request: Request) { // Validate and extract metadata from file let metadata; + let releaseYear: number | null = null; let validationInfo = { isValid: true, hasCover: false, @@ -244,6 +245,11 @@ export async function POST(request: Request) { artist = metadata.common.albumartist; } + // Try to extract release year from tags (preferred over external APIs) + if (typeof metadata.common.year === 'number') { + releaseYear = metadata.common.year; + } + // Validation info validationInfo.hasCover = !!metadata.common.picture?.[0]; validationInfo.format = metadata.format.container || 'unknown'; @@ -338,17 +344,19 @@ export async function POST(request: Request) { console.error('Failed to extract cover image:', e); } - // Fetch release year from iTunes - let releaseYear = null; - try { - const { getReleaseYearFromItunes } = await import('@/lib/itunes'); - releaseYear = await getReleaseYearFromItunes(artist, title); + // Fetch release year from iTunes only if not already present from tags + if (releaseYear == null) { + try { + const { getReleaseYearFromItunes } = await import('@/lib/itunes'); + const fetchedYear = await getReleaseYearFromItunes(artist, title); - if (releaseYear) { - console.log(`Fetched release year ${releaseYear} from iTunes for "${title}" by "${artist}"`); + if (fetchedYear) { + releaseYear = fetchedYear; + console.log(`Fetched release year ${releaseYear} from iTunes for "${title}" by "${artist}"`); + } + } catch (e) { + console.error('Failed to fetch release year:', e); } - } catch (e) { - console.error('Failed to fetch release year:', e); } const song = await prisma.song.create({