UNPKG

rsshub

Version:
94 lines (92 loc) 2.79 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 "./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 aesjs from "aes-js"; //#region lib/routes/duozhuayu/search.ts init_esm_shims(); const route = { path: "/search/:wd", categories: ["shopping"], example: "/duozhuayu/search/JavaScript", parameters: { wd: "搜索关键词" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["duozhuayu.com/search/book/:wd"] }], name: "搜索结果", maintainers: ["fengkx"], handler }; async function handler(ctx) { const wd = ctx.req.param("wd"); const baseUrl = "https://www.duozhuayu.com"; const type = "book"; const link = `${baseUrl}/search/${type}/${wd}`; const key = [..."DkOliWvFNR7C4WvR"].map((c) => c.charCodeAt()); const iv = [..."GQWKUE2CVGOOBKXU"].map((c) => c.charCodeAt()); const aesCfb = new aesjs.ModeOfOperation.cfb(key, iv); const encrypt = (text) => { const textBytes = aesjs.utils.utf8.toBytes(text); const encryptedBytes = aesCfb.encrypt(textBytes); return aesjs.utils.hex.fromBytes(encryptedBytes); }; const getCustomRequestHeaders = () => { const timestamp = Date.now(); const userId = 0; const securityKey = Math.floor(1e8 * Math.random()); const token = encrypt([ timestamp, userId, securityKey ].join(":")); const requestId = [ userId, timestamp, Math.round(1e5 * Math.random()) ].join("-"); return { "x-api-version": "0.0.48", "x-refer-request-id": requestId, "x-request-id": requestId, "x-request-misc": "{\"platform\":\"browser\",\"originSource\":\"search\",\"originFrom\":\"normal\",\"webVersion\":\"1.2.201774\"}", "x-request-token": token, "x-security-key": securityKey, "x-timestamp": timestamp, "x-user-id": userId }; }; const item = (await got_default({ method: "get", url: `${baseUrl}/api/search/book`, searchParams: { type: "normal", q: wd }, headers: getCustomRequestHeaders() })).data.data.filter((item$1) => item$1.type === type).map(({ [type]: item$1 }) => ({ title: item$1.title, link: `${baseUrl}/books/${item$1.id}`, pubDate: parseDate(item$1.updated), description: art(path.join(__dirname, "templates/book-97e9ed1e.art"), { item: item$1 }) })); return { title: `多抓鱼搜索-${wd}`, link, description: `多抓鱼搜索-${wd}`, item }; } //#endregion export { route };