rsshub
Version:
Make RSS Great Again!
128 lines (126 loc) • 3.59 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
import { load } from "cheerio";
//#region lib/routes/nltimes/news.ts
const map = new Map([
["top-stories", {
title: "NL Times -- Top Stories",
suffix: "/top-stories"
}],
["health", {
title: "NL Times -- Health",
suffix: "/categories/health"
}],
["crime", {
title: "NL Times -- Crime",
suffix: "/categories/crime"
}],
["politics", {
title: "NL Times -- Politics",
suffix: "/categories/politics"
}],
["business", {
title: "NL Times -- Business",
suffix: "/categories/business"
}],
["tech", {
title: "NL Times -- Tech",
suffix: "/categories/tech"
}],
["culture", {
title: "NL Times -- Culture",
suffix: "/categories/culture"
}],
["sports", {
title: "NL Times -- Sports",
suffix: "/categories/sports"
}],
["weird", {
title: "NL Times -- Weird",
suffix: "/categories/weird"
}],
["1-1-2", {
title: "NL Times -- 1-1-2",
suffix: "/categories/1-1-2"
}]
]);
const route = {
path: "/news/:category?",
categories: ["new-media"],
example: "/nltimes/news/top-stories",
parameters: { category: "category" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{
source: ["nltimes.nl/categories/:category"],
target: "/news/:category"
}],
name: "News",
maintainers: ["Hivol"],
handler,
description: `| Top Stories (default) | Health | Crime | Politics | Business | Tech | Culture | Sports | Weird | 1-1-2 |
| --------------------- | ------ | ----- | -------- | -------- | ---- | ------- | ------ | ----- | ----- |
| top-stories | health | crime | politics | business | tech | culture | sports | weird | 1-1-2 |`
};
async function handler(ctx) {
const category = ctx.req.param("category") ?? "top-stories";
const suffix = map.get(category).suffix;
const rootUrl = "https://www.nltimes.nl";
const apiUrl = rootUrl + suffix;
const $ = load((await got_default({
method: "get",
url: apiUrl
})).data);
const list = $(".news-card").slice(0, 10).toArray().map((elem) => {
return {
link: $(elem).children(".news-card__title").first().children("a").first().attr("href"),
title: $(elem).children(".news-card__title").first().children("a").first().text(),
date: $(elem).children(".news-card__date").first().text(),
category: $(elem).children(".news-card__categories").first().children("a").toArray().map((elem$1) => $(elem$1).text())
};
});
const ProcessFeed = (data) => {
return load(data)(".news-article--body").html();
};
const items = await Promise.all(list.map((item) => {
const title = item.title;
const date = timezone(parseDate(item.date, "DD MMMM YYYY - HH:mm"), 1);
const link = rootUrl + item.link;
const category$1 = item.category;
return cache_default.tryGet(link, async () => {
return {
title,
category: category$1,
description: ProcessFeed((await got_default({
method: "get",
url: link
})).data),
pubDate: date,
link
};
});
}));
return {
title: map.get(category).title,
language: "en",
link: apiUrl,
description: map.get(category).title,
item: items
};
}
//#endregion
export { route };