rsshub
Version:
Make RSS Great Again!
42 lines (41 loc) • 1.45 kB
JavaScript
import { t as config } from "./config-Bpyy15zS.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import Parser from "rss-parser";
//#region lib/routes/letterboxd/utils.ts
const parser = new Parser({
customFields: { item: [
"letterboxd:filmTitle",
"letterboxd:watchedDate",
"letterboxd:rewatch",
"letterboxd:memberRating",
"letterboxd:memberLike"
] },
headers: { "User-Agent": config.ua }
});
async function getData(username, title) {
const feed = await parser.parseURL(`https://letterboxd.com/${username}/rss/`);
const item = feed.items.filter((entry) => entry["letterboxd:watchedDate"]).map((entry) => {
const watchedDate = entry["letterboxd:watchedDate"];
const rating = entry.title?.match(/[★½]+$/)?.[0] ?? "";
let description = `<b>${entry["letterboxd:filmTitle"]}</b><br />watched by ${username}<br />Date: ${new Date(watchedDate).toDateString()}<br />Rating: ${rating}`;
if (entry["letterboxd:memberLike"] === "Yes") description += "<br />Liked";
if (entry["letterboxd:rewatch"] === "Yes") description += "<br />Rewatch";
description += `<br />${entry.content}`;
return {
title: entry["letterboxd:filmTitle"],
link: entry.link,
author: username,
guid: entry.link,
pubDate: parseDate(watchedDate),
description
};
});
return {
title,
link: `https://letterboxd.com/${username}/diary/`,
description: feed.description,
item
};
}
//#endregion
export { getData as t };