UNPKG

rsshub

Version:
59 lines (58 loc) 2.11 kB
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs"; import { t as parseDate } from "./parse-date-CjhZE69i.mjs"; import { t as cache_default } from "./cache-CiDoUSLo.mjs"; import { t as timezone } from "./timezone-DE--ze1V.mjs"; import { load } from "cheerio"; //#region lib/routes/asahi/utils.ts const rootUrl = "https://www.asahi.com"; const buildFeed = async (ctx, currentUrl) => { const limit = Number(ctx.req.query("limit")) || 6; const response = await rofetch(currentUrl); const $ = load(response); $(".Time").remove(); const slistVars = /slist_vars = (\{[^}]*\})/.exec(response)?.[1]; let list; if (slistVars) { const { theme, feature = "", pageper = "80" } = JSON.parse(slistVars.replaceAll(/([{,])\s*(\w+):/g, "$1\"$2\":")); const { docs } = await rofetch(`${rootUrl}/fusionlink/slist/`, { query: { theme, feature, pageper, page: 1 }, headers: { referer: currentUrl, "x-requested-with": "XMLHttpRequest" } }); list = docs.slice(0, limit).map((doc) => ({ link: doc.url, title: doc.title, pubDate: timezone(parseDate(doc.date, "YYYYMMDDHHmmss"), 9) })); } else list = [...new Set($("#MainInner .Section .List li a[href*=\"/articles/\"]").toArray().map((item) => { const url = new URL($(item).attr("href"), currentUrl); url.search = ""; return url.href; }))].slice(0, limit).map((link) => ({ link })); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const content = load(await rofetch(item.link)); content(".notPrint, svg").remove(); const pubDate = content("meta[name=\"pubdate\"]").attr("content"); return { ...item, description: content(".nfyQp").html(), title: content("meta[name=\"TITLE\"]").attr("content") ?? item.title, pubDate: pubDate ? parseDate(pubDate) : item.pubDate }; }))); return { title: $("title").text(), link: currentUrl, item: items, description: "朝日新聞社のニュースサイト、朝日新聞デジタルの社会ニュースについてのページです" }; }; //#endregion export { rootUrl as n, buildFeed as t };