fix feed time

This commit is contained in:
ld3zian 2025-02-05 16:03:44 -07:00
parent 01734e8ce5
commit 06025b567e
3 changed files with 44 additions and 6 deletions

View file

@ -214,16 +214,26 @@ export async function getChaptersByHid(
for (const chap of rawChapters) { for (const chap of rawChapters) {
try { try {
if (!chap.id || !chap.chap || !chap.updated_at) { // Add created_at check
if (!chap.id || !chap.chap || !chap.created_at) {
console.warn(`Skipping chapter with missing fields in ${hid}:`, chap); console.warn(`Skipping chapter with missing fields in ${hid}:`, chap);
continue; continue;
} }
// Validate both dates
const isValidCreated = !isNaN(Date.parse(chap.created_at));
const isValidUpdated = !isNaN(Date.parse(chap.updated_at));
if (!isValidCreated || !isValidUpdated) {
console.warn(`Invalid dates for chapter ${chap.id}`);
continue;
}
chapters.push({ chapters.push({
id: chap.id, id: chap.id,
chap: chap.chap.toString(), chap: chap.chap.toString(),
title: chap.title || `Chapter ${chap.chap}`, title: chap.title || `Chapter ${chap.chap}`,
updated_at: chap.updated_at, created_at: new Date(chap.created_at).toISOString(), // Use created_at
md_comics: { md_comics: {
title: comicTitle, title: comicTitle,
slug: slug, slug: slug,
@ -231,7 +241,7 @@ export async function getChaptersByHid(
} }
}); });
} catch (e) { } catch (e) {
console.error(`Error processing chapter ${chap.id} for ${hid}:`, e); console.error(`Error processing chapter ${chap.id}:`, e);
} }
} }
@ -352,7 +362,7 @@ export async function getChaptersForSlugs(
const deduplicatedChapters = deduplicateChapters(allChapters); const deduplicatedChapters = deduplicateChapters(allChapters);
return deduplicatedChapters.sort((a, b) => return deduplicatedChapters.sort((a, b) =>
parseFloat(b.chap) - parseFloat(a.chap) || parseFloat(b.chap) - parseFloat(a.chap) ||
new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime() new Date(b.created_at).getTime() - new Date(a.created_at).getTime()
); );
} }

View file

@ -39,3 +39,15 @@ export interface Announcement {
url: string; url: string;
}; };
} }
export interface ChapterDetail {
id: string;
chap: string;
title: string;
created_at: string;
md_comics: {
title: string;
slug: string;
md_covers?: ComicCover[];
};
}

View file

@ -48,7 +48,19 @@ export const GET: APIRoute = async ({ params, request }) => {
}); });
chapters.forEach((chapter) => { chapters.forEach((chapter) => {
if (!chapter?.created_at) {
console.error('Chapter missing created_at:', chapter);
return;
}
const chapterUrl = `https://comick.io/comic/${chapter.md_comics.slug}`; const chapterUrl = `https://comick.io/comic/${chapter.md_comics.slug}`;
const rawDate = chapter.created_at.endsWith('Z')
? chapter.created_at
: `${chapter.created_at}Z`;
const pubDate = isValidDate(rawDate) ? new Date(rawDate) : new Date();
feed.addItem({ feed.addItem({
title: `${chapter.md_comics.title} - Chapter ${chapter.chap}`, title: `${chapter.md_comics.title} - Chapter ${chapter.chap}`,
id: `${chapter.md_comics.slug}-${chapter.chap}`, id: `${chapter.md_comics.slug}-${chapter.chap}`,
@ -64,7 +76,7 @@ export const GET: APIRoute = async ({ params, request }) => {
<p>New chapter available: Chapter ${chapter.chap}</p> <p>New chapter available: Chapter ${chapter.chap}</p>
</div> </div>
`, `,
date: new Date(chapter.updated_at), date: pubDate,
}); });
}); });
@ -74,3 +86,7 @@ export const GET: APIRoute = async ({ params, request }) => {
}, },
}); });
}; };
function isValidDate(dateString: string): boolean {
return !isNaN(Date.parse(dateString));
}