rsshub
Version:
Make RSS Great Again!
94 lines (92 loc) • 2.79 kB
JavaScript
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 };