UNPKG

rsshub

Version:
70 lines (68 loc) 2.23 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./md5-C8GRvctM.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import { i as parseReviews, n as fixImages, r as headers, t as baseUrl } from "./utils-BnUyXqXW.mjs"; import { load } from "cheerio"; //#region lib/routes/techpowerup/review.ts const route = { path: "/review/:keyword?", categories: ["new-media"], example: "/techpowerup/review/amd", parameters: { keyword: "Search Keyword" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["techpowerup.com/review/search", "techpowerup.com/review"], target: "" }], name: "Reviews", maintainers: ["TonyRL"], handler, url: "www.techpowerup.com/review/" }; async function handler(ctx) { const keyword = ctx.req.param("keyword"); const url = new URL(`${baseUrl}/review/${keyword ? "search/" : ""}`); if (keyword) { url.searchParams.set("q", keyword); url.searchParams.set("_", Date.now().toString()); } const $ = load(await ofetch_default(url.href, { headers })); const list = $(".reviewlist-bit").toArray().map((item) => { const $item = $(item); const a = $item.find(".title a"); return { title: a.text(), link: baseUrl + a.attr("href"), pubDate: parseDate($item.find(".date time").attr("datetime")), author: $item.find(".author").contents().filter((_, c) => c.type === "text").text().trim(), category: $item.find(".category").contents().filter((_, c) => c.type === "text").text().trim() }; }); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const $$1 = load(await ofetch_default(item.link, { headers })); fixImages($$1); await parseReviews($$1, item); return item; }))); return { title: "Reviews | TechPowerUp", link: url.href, language: "en", image: "https://tpucdn.com/apple-touch-icon-v1684568903519.png", item: items }; } //#endregion export { route };