rsshub
Version:
Make RSS Great Again!
95 lines (93 loc) • 2.96 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import path from "node:path";
import { load } from "cheerio";
//#region lib/routes/penguin-random-house/utils.ts
init_esm_shims();
const parseBookInList = (element) => {
const $ = load(element);
const title = $("h2").first().text();
const author = $("h2.author").first().text();
const description = $(".desc").first().text();
let imageSrc = $("img.cover__backcover").attr("src");
let imageAlt = $("img.cover__backcover").attr("alt");
if (!imageSrc) {
imageSrc = $("img.img-responsive").attr("data-src");
imageAlt = $("img.img-responsive").attr("alt");
}
return art(path.join(__dirname, "templates/book-e2535a5a.art"), {
title,
author,
description,
imageSrc,
imageAlt
});
};
const parsePubDate = (data) => {
const dateString = data("script").toArray().find((element) => {
const fullString = element.children[0];
if (!fullString || !fullString.data) return false;
return fullString.data.includes("post_date");
});
if (dateString.length === 0) return;
const dateMatch = dateString.children[0].data.match(/(?<="post_date":").*?(?=")/);
if (!dateMatch) return;
return parseDate(dateMatch[0]);
};
const parseBooks = (element) => {
const $ = load(element);
const description = $("h2.read-down-text").first().html();
let mainBlock = "";
$(".awesome-list>li").map((i, element$1) => {
const appending = parseBookInList(element$1);
mainBlock += appending;
return appending;
});
return {
description,
content: mainBlock,
pubDate: parsePubDate($)
};
};
const parseArticle = (element) => {
const $ = load(element);
const description = $("h2.hdr-smalltxt").first().html();
const imageSrc = $("div.img-block>img").first().attr("src");
const imageAlt = $("div.img-block>img").first().attr("alt");
let mainBlock = "";
const descriptionBlock = art(path.join(__dirname, "templates/articleHeader-7457abf4.art"), {
description,
imageSrc,
imageAlt
});
$("div.main-content>p,div.main-content>ul").map((i, element$1) => {
const appending = load(element$1);
mainBlock += appending.html();
return appending;
});
return {
description: descriptionBlock,
content: mainBlock,
pubDate: parsePubDate($)
};
};
const parseList = (items, ctx, contentParser) => Promise.all(items.map((item) => cache_default.tryGet(item.url, async () => {
const itemPage = (await got_default(item.url)).data;
const itemParsed = contentParser(itemPage);
return {
title: item.title,
description: itemParsed.description + "<br>" + itemParsed.content,
pubDate: itemParsed.pubDate,
link: item.url
};
})));
var utils_default = {
parseList,
parseBooks,
parseArticle
};
//#endregion
export { utils_default as t };