UNPKG

rsshub

Version:
88 lines (86 loc) 3.1 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 "./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 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/sensortower/blog.ts init_esm_shims(); const route = { path: "/blog/:language?", categories: ["new-media"], example: "/sensortower/blog", parameters: { language: "Language, see below, English by default" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: [ "sensortower.com/blog", "sensortower.com/zh-CN/blog", "sensortower.com/ja/blog", "sensortower.com/ko/blog", "sensortower.com/" ], target: "/blog" }], name: "Blog", maintainers: ["nczitzk"], handler, url: "sensortower.com/blog", description: `| English | Chinese | Japanese | Korean | | ------- | ------- | -------- | ------ | | | zh-CN | ja | ko |` }; async function handler(ctx) { const language = ctx.req.param("language") ?? ""; const rootUrl = "https://sensortower.com"; const currentUrl = `${rootUrl}${language ? `/${language}` : ""}/blog`; let items = (await got_default({ method: "get", url: currentUrl })).data.match(/"uri":"(\/blog\/.*?)"/g).map((item) => ({ link: `${rootUrl}${language ? `/${language}` : ""}${item.match(/"(\/blog\/.*?)"/)[1]}` })); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const detailResponse = await got_default({ method: "get", url: item.link }); const content = load(detailResponse.data); const detail = JSON.parse(`{${detailResponse.data.match(/("title":.*?),"body":/)[1]}}`); content("h1").remove(); content("h5").parent().remove(); content("div[data-testid=\"Text-embedded-entry-block\"]").remove(); content("img").each(function() { const image = (content(this).attr("srcset") ?? content(this).attr("src")).split("?w=")[0]; content(this).replaceWith(art(path.join(__dirname, "templates/description-3a29e514.art"), { image })); }); item.title = detail.title; item.author = detail.author.name; item.pubDate = parseDate(detail.pubDate, "MMMM YYYY"); item.category = [...detail.tags?.map((t) => t.title) ?? [], ...detail.category?.map((c) => c.title) ?? []]; item.description = art(path.join(__dirname, "templates/description-3a29e514.art"), { header: content("header[data-csk-entry-type=\"blog\"]").html(), description: content("div[data-csk-entry-type=\"blog\"] div[data-testid=\"Text-root\"]").html() }); return item; }))); return { title: "Sensor Tower - Blog", link: currentUrl, item: items, language: language || "en-US" }; } //#endregion export { route };