rsshub
Version:
Make RSS Great Again!
81 lines (78 loc) • 2.64 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import { t as config } from "./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 { load } from "cheerio";
//#region lib/routes/chinafactcheck/utils.ts
const siteLink = "https://chinafactcheck.com";
const cleanDom = (dom) => {
dom("*[style]").removeAttr("style");
dom("br").remove();
dom("span:empty").remove();
dom("span").each((_, el) => {
if (dom(el).html().trim() === " ") dom(el).remove();
});
dom("p:empty").remove();
dom("p").each((_, el) => {
if (dom(el).html().trim() === "") dom(el).remove();
});
return dom;
};
const getArticleDetail = async (link) => {
const $ = cleanDom(load((await got_default(link, { headers: { "user-agent": config.trueUA } })).data));
return new ArticleDetail($(".content-head h2").text().trim(), $(".content-persons p span:last").text().trim(), parseDate($(".content-time").text().trim(), "YYYY-MM-DD"), $("div[class=content-list-box]").html(), $(".content-tags a[rel=\"tag\"]").toArray().map((item) => $(item).text().trim()));
};
var ArticleDetail = class {
constructor(title, author, pubDate, description, category) {
this.title = title;
this.author = author;
this.pubDate = pubDate;
this.description = description;
this.category = category;
}
};
var utils_default = {
siteLink,
cleanDom,
getArticleDetail,
ArticleDetail,
trueUA: config.trueUA
};
//#endregion
//#region lib/routes/chinafactcheck/index.ts
const route = {
path: "/",
radar: [{
source: ["chinafactcheck.com/"],
target: ""
}],
name: "Unknown",
maintainers: ["kdanfly"],
handler,
url: "chinafactcheck.com/"
};
async function handler() {
const $ = load((await got_default(utils_default.siteLink, { headers: { "user-agent": utils_default.trueUA } })).data);
const articlesLink = $(".post-info-box .post-thumb a").toArray().map((item) => ({ link: $(item).attr("href") }));
const articles = await Promise.all(articlesLink.map((item) => cache_default.tryGet(item.link, async () => {
const { title, author, pubDate, description, category } = await utils_default.getArticleDetail(item.link);
item.title = title;
item.author = author;
item.pubDate = pubDate;
item.description = description;
item.category = category;
return item;
})));
return {
title: $("head title").text(),
link: utils_default.siteLink,
item: articles
};
}
//#endregion
export { route };