UNPKG

rsshub

Version:
74 lines (72 loc) 2.63 kB
import "./config-MQ-7ebJ_.mjs"; import "./logger-C4avouvV.mjs"; import { t as parseDate } from "./parse-date-r5WDWHno.mjs"; import "./is-worker-DESPicPc.mjs"; import { t as cache_default } from "./cache-SV6W5EPy.mjs"; import "./proxy-CjvoY5ys.mjs"; import { n as puppeteer_default } from "./puppeteer-9J9JS5H4.mjs"; import * as cheerio from "cheerio"; //#region lib/routes/bluestacks/release.ts const pageUrl = "https://support.bluestacks.com/hc/en-us/articles/360056960211-Release-Notes-BlueStacks-5"; const route = { path: "/release/5", categories: ["program-update"], example: "/bluestacks/release/5", parameters: {}, features: { requireConfig: false, requirePuppeteer: true, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["bluestacks.com/hc/en-us/articles/360056960211-Release-Notes-BlueStacks-5", "bluestacks.com/"] }], name: "BlueStacks 5 Release Notes", maintainers: ["TonyRL"], handler, url: "bluestacks.com/hc/en-us/articles/360056960211-Release-Notes-BlueStacks-5" }; async function handler() { const browser = await puppeteer_default(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" || request.resourceType() === "script" ? request.continue() : request.abort(); }); await page.goto(pageUrl, { waitUntil: "domcontentloaded" }); const res = await page.evaluate(() => document.documentElement.innerHTML); await page.close(); const $ = cheerio.load(res); const items = $("div h3 a").toArray().map((item) => { item = $(item); return { title: item.text(), link: item.attr("href") }; }); await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" || request.resourceType() === "script" ? request.continue() : request.abort(); }); await page.goto(item.link, { waitUntil: "domcontentloaded" }); const res = await page.evaluate(() => document.documentElement.innerHTML); const $ = cheerio.load(res); await page.close(); item.description = $("div.article__body").html(); item.pubDate = parseDate($("div.meta time").attr("datetime")); return item; }))); await browser.close(); return { title: $(".article__title").text().trim(), description: $("meta[name=description]").text().trim(), link: pageUrl, image: $("link[rel=\"shortcut icon\"]").attr("href"), item: items }; } //#endregion export { route };