rsshub
Version:
Make RSS Great Again!
66 lines (64 loc) • 1.99 kB
JavaScript
import "./config-C37vj7VH.mjs";
import { t as logger_default } from "./logger-Czu8UMNd.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import "./proxy-Db7uGcYb.mjs";
import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs";
import { load } from "cheerio";
//#region lib/routes/apkpure/versions.ts
const route = {
path: "/versions/:pkg/:region?",
categories: ["program-update"],
example: "/apkpure/versions/jp.co.craftegg.band/jp",
parameters: {
pkg: "Package name",
region: "Region code, `en` by default"
},
features: {
requireConfig: false,
requirePuppeteer: true,
antiCrawler: true,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "Versions",
maintainers: ["maple3142"],
handler
};
async function handler(ctx) {
const { pkg, region = "en" } = ctx.req.param();
const baseUrl = "https://apkpure.com";
const link = `${baseUrl}/${region}/${pkg}/versions`;
const browser = await puppeteer_default();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on("request", (request) => {
request.resourceType() === "document" ? request.continue() : request.abort();
});
logger_default.http(`Requesting ${link}`);
await page.goto(link, { waitUntil: "domcontentloaded" });
const r = await page.evaluate(() => document.documentElement.innerHTML);
await browser.close();
const $ = load(r);
const img = new URL($(".ver-top img").attr("src"));
img.searchParams.delete("w");
const items = $(".ver li").toArray().map((ver) => {
ver = $(ver);
return {
title: ver.find(".ver-item-n").text(),
description: ver.html(),
link: `${baseUrl}${ver.find("a").attr("href")}`,
pubDate: parseDate(ver.find(".update-on").text().replaceAll(/年|月/g, "-").replace("日", ""))
};
});
return {
title: $(".ver-top-h1").text(),
description: $(".ver-top-title p").text(),
image: img.href,
language: region ?? "en",
link,
item: items
};
}
//#endregion
export { route };