diff --git a/server.js b/server.js index cf43e1a..837dd4a 100644 --- a/server.js +++ b/server.js @@ -23,8 +23,8 @@ fastify.register(require('@fastify/static'), { }); fastify.register(require('@fastify/static'), { - root: path.join(__dirname, 'src'), - prefix: '/src/', + root: path.join(__dirname, 'src', 'scripts'), + prefix: '/src/scripts/', decorateReply: false }); diff --git a/src/scripts/anime/anime.js b/src/scripts/anime/anime.js index 29878ff..f41e2b1 100644 --- a/src/scripts/anime/anime.js +++ b/src/scripts/anime/anime.js @@ -20,35 +20,70 @@ async function loadAnime() { return; } - const title = data.title.english || data.title.romaji; + const title = data.title?.english || data.title?.romaji || "Unknown Title"; document.title = `${title} | WaifuBoard`; document.getElementById('title').innerText = title; - document.getElementById('poster').src = data.coverImage.extraLarge; + if (data.coverImage?.extraLarge) { + document.getElementById('poster').src = data.coverImage.extraLarge; + } const rawDesc = data.description || "No description available."; handleDescription(rawDesc); document.getElementById('score').innerText = (data.averageScore || '?') + '% Score'; - document.getElementById('year').innerText = data.seasonYear || '????'; - document.getElementById('genres').innerText = data.genres ? data.genres.slice(0, 3).join(' • ') : ''; - + document.getElementById('year').innerText = data.seasonYear || data.startDate?.year || '????'; + document.getElementById('genres').innerText = data.genres?.length > 0 ? data.genres.slice(0, 3).join(' • ') : ''; document.getElementById('format').innerText = data.format || 'TV'; - document.getElementById('episodes').innerText = data.episodes || '?'; document.getElementById('status').innerText = data.status || 'Unknown'; - document.getElementById('season').innerText = `${data.season || ''} ${data.seasonYear || ''}`; - if (data.studios && data.studios.nodes.length > 0) { - document.getElementById('studio').innerText = data.studios.nodes[0].name; + let seasonText = ''; + if (data.season && data.seasonYear) { + seasonText = `${data.season} ${data.seasonYear}`; + } else if (data.startDate?.year) { + const months = ['', 'Winter', 'Winter', 'Spring', 'Spring', 'Spring', 'Summer', 'Summer', 'Summer', 'Fall', 'Fall', 'Fall', 'Winter']; + const month = data.startDate.month || 1; + const estimatedSeason = months[month] || ''; + seasonText = `${estimatedSeason} ${data.startDate.year}`.trim(); + } + document.getElementById('season').innerText = seasonText || 'Unknown'; + + let studioName = 'Unknown Studio'; + if (data.studios?.nodes?.length > 0) { + studioName = data.studios.nodes[0].name; + } else if (data.studios?.edges?.length > 0) { + studioName = data.studios.edges[0]?.node?.name || 'Unknown Studio'; + } + document.getElementById('studio').innerText = studioName; + + const charContainer = document.getElementById('char-list'); + charContainer.innerHTML = ''; + + let characters = []; + + if (data.characters?.nodes?.length > 0) { + characters = data.characters.nodes.slice(0, 5); + } + else if (data.characters?.edges?.length > 0) { + characters = data.characters.edges + .filter(edge => edge?.node?.name?.full) + .slice(0, 5) + .map(edge => edge.node); } - if (data.characters && data.characters.nodes) { - const charContainer = document.getElementById('char-list'); - data.characters.nodes.slice(0, 5).forEach(char => { - charContainer.innerHTML += ` -