rsshub
Version:
Make RSS Great Again!
67 lines (65 loc) • 2.31 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import { t as config } from "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as config_not_found_default } from "./config-not-found-Dyp3RlZZ.mjs";
import { t as getHeaders } from "./utils-BXkxCuHO.mjs";
import { load } from "cheerio";
//#region lib/routes/smzdm/product.ts
const route = {
path: "/product/:id",
categories: ["shopping"],
example: "/smzdm/product/zm5vzpe",
parameters: { id: "商品 id,网址上直接可以看到" },
features: {
requireConfig: [{
name: "SMZDM_COOKIE",
description: "什么值得买登录后的 Cookie 值"
}],
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{
source: ["wiki.smzdm.com/p/:id"],
target: "/product/:id"
}],
name: "商品",
maintainers: ["chesha1"],
handler
};
async function handler(ctx) {
if (!config.smzdm.cookie) throw new config_not_found_default("什么值得买排行榜 is disabled due to the lack of SMZDM_COOKIE");
const link = `https://wiki.smzdm.com/p/${ctx.req.param("id")}`;
const $ = load(await ofetch_default(link, { headers: getHeaders() }));
const title = $("title").text();
const items = $("ul#feed-main-list li").toArray().map((elem) => {
const altText = $(elem).find("img").attr("alt");
const link$1 = $(elem).find("h5.feed-block-title a").attr("href");
const price = $(elem).find(".z-highlight").text();
return {
title: altText + " " + price,
link: link$1,
description: $(elem).find(".feed-block-descripe").text().replaceAll(/\s+/g, "")
};
});
return {
title,
link,
item: (await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const $$1 = load(await ofetch_default(item.link, { headers: getHeaders() }));
if ($$1("span.old").length > 0) return null;
else {
item.pubDate = $$1("meta[name=\"weibo:webpage:create_at\"]").attr("content");
if (item.description === "阅读全文") item.description = $$1("p[itemprop=\"description\"]").first().html();
return item;
}
})))).filter((result) => result !== null)
};
}
//#endregion
export { route };