UNPKG

rsshub

Version:
77 lines (75 loc) 2.96 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import { r as getSubPath } from "./common-utils-vrWQFAEk.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/aljazeera/index.ts init_esm_shims(); const languages = { arabic: { rootUrl: "https://www.aljazeera.net", rssUrl: "rss" }, chinese: { rootUrl: "https://chinese.aljazeera.net", rssUrl: void 0 }, english: { rootUrl: "https://www.aljazeera.com", rssUrl: "xml/rss/all.xml" } }; const route = { path: "*", name: "Unknown", maintainers: ["nczitzk"], handler }; async function handler(ctx) { const params = getSubPath(ctx) === "/" ? ["arabic"] : getSubPath(ctx).replace(/^\//, "").split("/"); if (!Object.hasOwn(languages, params[0])) params.unshift("arabic"); const language = params.shift(); const isRSS = params.length === 1 && params.at(-1) === "rss" && languages[language].rssUrl; const rootUrl = languages[language].rootUrl; const currentUrl = `${rootUrl}/${isRSS ? languages[language].rssUrl : params.join("/")}`; const response = await ofetch_default(currentUrl); const $ = load(response); let items = isRSS ? response.data.match(new RegExp("<link>" + rootUrl + "/(.*?)</link>", "g")).map((item) => ({ link: item.match(/<link>(.*?)<\/link>/)[1] })) : $(".u-clickable-card__link").toArray().map((item) => { item = $(item); return { link: `${rootUrl}${item.attr("href")}` }; }); items = await Promise.all(items.slice(0, ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 50).map((item) => cache_default.tryGet(item.link, async () => { const detailResponse = await ofetch_default(item.link); const content = load(detailResponse); content(".more-on").parent().remove(); content(".responsive-image img").removeAttr("srcset"); let pubDate; const datePublished = detailResponse.match(/"datePublished": ?"(.*?)",/); if (datePublished && datePublished.length > 1) pubDate = detailResponse.match(/"datePublished": ?"(.*?)",/)[1]; else { const uploadDate = detailResponse.match(/"uploadDate": ?"(.*?)",/)[1]; pubDate = uploadDate && uploadDate.length > 1 ? uploadDate : content("div.date-simple > span:nth-child(2)").text(); } item.title = content("h1").first().text(); item.author = content(".author").text(); item.pubDate = pubDate; item.description = art(path.join(__dirname, "templates/description-96c51509.art"), { image: content(".article-featured-image").html(), description: content(".wysiwyg").html() }); return item; }))); return { title: $("title").first().text(), link: currentUrl, item: items }; } //#endregion export { route };