Respect MP3 release year when fetching iTunes metadata

This commit is contained in:
Hördle Bot
2025-12-04 13:19:06 +01:00
parent b033c3a1bc
commit de6eadfe62

View File

@@ -214,6 +214,7 @@ export async function POST(request: Request) {
// Validate and extract metadata from file // Validate and extract metadata from file
let metadata; let metadata;
let releaseYear: number | null = null;
let validationInfo = { let validationInfo = {
isValid: true, isValid: true,
hasCover: false, hasCover: false,
@@ -244,6 +245,11 @@ export async function POST(request: Request) {
artist = metadata.common.albumartist; 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 // Validation info
validationInfo.hasCover = !!metadata.common.picture?.[0]; validationInfo.hasCover = !!metadata.common.picture?.[0];
validationInfo.format = metadata.format.container || 'unknown'; validationInfo.format = metadata.format.container || 'unknown';
@@ -338,18 +344,20 @@ export async function POST(request: Request) {
console.error('Failed to extract cover image:', e); console.error('Failed to extract cover image:', e);
} }
// Fetch release year from iTunes // Fetch release year from iTunes only if not already present from tags
let releaseYear = null; if (releaseYear == null) {
try { try {
const { getReleaseYearFromItunes } = await import('@/lib/itunes'); const { getReleaseYearFromItunes } = await import('@/lib/itunes');
releaseYear = await getReleaseYearFromItunes(artist, title); const fetchedYear = await getReleaseYearFromItunes(artist, title);
if (releaseYear) { if (fetchedYear) {
releaseYear = fetchedYear;
console.log(`Fetched release year ${releaseYear} from iTunes for "${title}" by "${artist}"`); console.log(`Fetched release year ${releaseYear} from iTunes for "${title}" by "${artist}"`);
} }
} catch (e) { } catch (e) {
console.error('Failed to fetch release year:', e); console.error('Failed to fetch release year:', e);
} }
}
const song = await prisma.song.create({ const song = await prisma.song.create({
data: { data: {