UNPKG

rsshub

Version:
95 lines (93 loc) 2.96 kB
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 };