add fallback for navidrome release date

This commit is contained in:
jeffvli
2025-12-29 20:54:53 -08:00
parent 82a566aee1
commit 145dc5c99e
@@ -32,6 +32,22 @@ const normalizePlayDate = (item: WithDate): null | string => {
return !item.playDate || item.playDate.includes('0001-') ? null : item.playDate;
};
const matchesFullDate = (date: string) => {
return Boolean(date.match(/^\d{4}-\d{2}-\d{2}$/));
};
const normalizeReleaseDate = (item: { date?: string; releaseDate?: string }) => {
if (item.releaseDate && matchesFullDate(item.releaseDate)) {
return item.releaseDate;
}
if (item.date && matchesFullDate(item.date)) {
return item.date;
}
return null;
};
const getArtists = (
item:
| z.infer<typeof ndType._response.album>
@@ -192,7 +208,7 @@ const normalizeSong = (
: null,
playCount: item.playCount || 0,
playlistItemId,
releaseDate: item.releaseDate ? new Date(item.releaseDate).toISOString() : null,
releaseDate: normalizeReleaseDate(item),
releaseYear: item.year || null,
sampleRate: item.sampleRate || null,
size: item.size,
@@ -285,9 +301,9 @@ const normalizeAlbum = (
lastPlayedAt: normalizePlayDate(item),
mbzId: item.mbzAlbumId || null,
name: item.name,
originalDate: item.originalDate ? new Date(item.originalDate).toISOString() : null,
originalDate: item.originalDate || null,
playCount: item.playCount || 0,
releaseDate: item.releaseDate ? new Date(item.releaseDate).toISOString() : null,
releaseDate: normalizeReleaseDate(item),
releaseYear: item.maxYear || null,
size: item.size,
songCount: item.songCount,