From 8be257753973a809f0cc22d71c9c976ec96086e5 Mon Sep 17 00:00:00 2001 From: CrystalSplitter Date: Fri, 23 Oct 2026 21:39:15 -0700 Subject: [PATCH 1/2] Use `atom:updated` feed if available to infer date This is apparently a valid (though rare) namespace extension for RSS. Let's make use of it. --- src/scripts/models/item.ts | 4 +++- src/scripts/utils.ts | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/scripts/models/item.ts b/src/scripts/models/item.ts index 5763812b..6ca4d2a8 100644 --- a/src/scripts/models/item.ts +++ b/src/scripts/models/item.ts @@ -55,7 +55,9 @@ export class RSSItem { this.title = item.title || null; this.link = item.link || ""; this.fetchedDate = new Date(); - this.date = new Date(item.isoDate ?? item.pubDate ?? this.fetchedDate); + this.date = new Date( + item.isoDate ?? item.pubDate ?? item.updated ?? this.fetchedDate, + ); this.thumbnails = []; this.thumbnailJobs = []; this.creator = item.creator; diff --git a/src/scripts/utils.ts b/src/scripts/utils.ts index 54539ff2..8d4e2bc9 100644 --- a/src/scripts/utils.ts +++ b/src/scripts/utils.ts @@ -56,6 +56,9 @@ const rssParser = new Parser({ item: [ "thumb", "image", + // Part of an atom namespace even in RSS. + // xmlns:atom="http://www.w3.org/2005/Atom" + ["atom:updated", "updated"], ["media:thumbnail", "mediaThumbnails", { keepArray: true }], ["content:encoded", "fullContent"], ["media:content", "mediaContent", { keepArray: true }], From d74ebf131f1c2d508e9cec35896d70cd64faf15d Mon Sep 17 00:00:00 2001 From: CrystalSplitter Date: Sat, 24 Oct 2026 10:40:43 -0700 Subject: [PATCH 2/2] Track atom tags --- src/scripts/utils.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scripts/utils.ts b/src/scripts/utils.ts index 8d4e2bc9..2cdd85fe 100644 --- a/src/scripts/utils.ts +++ b/src/scripts/utils.ts @@ -59,6 +59,7 @@ const rssParser = new Parser({ // Part of an atom namespace even in RSS. // xmlns:atom="http://www.w3.org/2005/Atom" ["atom:updated", "updated"], + ["updated", "updated"], ["media:thumbnail", "mediaThumbnails", { keepArray: true }], ["content:encoded", "fullContent"], ["media:content", "mediaContent", { keepArray: true }],