UNPKG

rsshub

Version:
127 lines (123 loc) 3.98 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 "./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"; //#region lib/routes/jump/discount.ts init_esm_shims(); const discountUrl = "https://switch.jumpvg.com/jump/discount/find4Discount/5/v2"; const platformObject = { switch: 1, steam: 4, ps4: 51, ps5: 52 }; const filterObject = { switch: { jx: 16, all: 17, sd: 18 }, steam: { jx: 26, all: 27, dl: 28, sd: 29 }, ps4: { jx: 19, all: 20, sd: 21, vip: 22 }, ps5: { all: 23, sd: 24, vip: 25 } }; const filterName = { jx: "精选", sd: "史低", all: "全部", vip: "会员", dl: "独立" }; const getDiscountNum = async (platform) => { const data = (await got_default.get(`https://switch.jumpvg.com/jump/platform/order/v2?needCount=1&needFilter=1&version=3`)).data.data; let totalNum = 0; for (const index in data) if (data[index].platformAlias.toLocaleLowerCase() === platform.toLocaleLowerCase()) { totalNum = data[index].gameNum; break; } return totalNum; }; const getSinglePageDiscountItem = async (countries, offset, platform, termsId) => { return (await got_default.get(`${discountUrl}?countries=${countries}&offset=${offset}&platform=${platform}&size=10&termsId=${termsId}&version=3`)).data.data; }; const getAllPageDiscountItem = async (countries, platform, termsId, totalNum) => { let allDiscountItem = []; for (let idx = 0; idx <= Math.round(totalNum / 10); idx++) { const itemList = await getSinglePageDiscountItem(countries, idx * 10, platform, termsId); allDiscountItem = [...allDiscountItem, ...itemList]; } return allDiscountItem; }; const route = { path: "/discount/:platform/:filter?/:countries?", categories: ["game"], example: "/jump/discount/ps5/all", parameters: { platform: "平台:switch,ps4,ps5,xbox,steam,epic", filter: "过滤参数,all-全部,jx-精选,sd-史低,dl-独立,vip-会员", countries: "地区,具体支持较多,可自信查看地区简写" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "游戏折扣", maintainers: ["zytomorrow"], handler, description: `| switch | ps4 | ps5 | xbox | steam | epic | | ------ | ---- | ---- | ------ | ----- | ------ | | 可用 | 可用 | 可用 | 不可用 | 可用 | 不可用 | | filter | switch | ps4 | ps5 | steam | | ------ | ------ | --- | --- | ----- | | all | ✔ | ✔ | ✔ | ✔ | | jx | ✔ | ✔ | ❌ | ✔ | | sd | ✔ | ✔ | ✔ | ✔ | | dl | ❌ | ✔ | ❌ | ✔ | | vip | ❌ | ❌ | ✔ | ❌ | | 北美 | 欧洲(英语) | 法国 | 德国 | 日本 | | ---- | ------------ | ---- | ---- | ---- | | na | eu | fr | de | jp |` }; async function handler(ctx) { const platform = ctx.req.param("platform"); const filter = ctx.req.param("filter") || "all"; const countries = ctx.req.param("countries") || ""; const discountNum = await getDiscountNum(platform); const allDiscountItem = await getAllPageDiscountItem(countries, platformObject[platform.toLocaleLowerCase()], filterObject[platform.toLocaleLowerCase()][filter], discountNum); return { title: `jump 折扣-${platform}-${filterName[filter]}${countries ? `-${countries}` : ""}`, link: "https://jumpvg.com/", description: "jump 发现游戏", item: allDiscountItem.map((item) => ({ title: `${item.name}-${item.cutOff}%-¥${item.price}`, description: art(path.resolve(__dirname, "templates/discount-be0245e0.art"), { item }), link: item.banner, guid: `${platform}-${item.oldGameId}-${item.cutOff}` })) }; } //#endregion export { route };