UNPKG

rsshub

Version:
135 lines (132 loc) 3.21 kB
import "./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 got_default } from "./got-KxxWdaxq.mjs"; //#region lib/routes/mihoyo/ys/news.ts const categories = { latest: { main: { id: 719, slug: 719, title: "最新" }, "zh-tw": { id: 395, slug: 395, title: "最新" } }, news: { main: { id: 720, slug: 720, title: "新闻" }, "zh-tw": { id: 396, slug: 396, title: "資訊" } }, notice: { main: { id: 721, slug: 721, title: "公告" }, "zh-tw": { id: 397, slug: 397, title: "公告" } }, activity: { main: { id: 722, slug: 722, title: "活动" }, "zh-tw": { id: 398, slug: 398, title: "活動" } } }; const rootUrls = { main: "https://ys.mihoyo.com", "zh-tw": "https://genshin.hoyoverse.com" }; const apiRootUrls = { main: "https://api-takumi-static.mihoyo.com", "zh-tw": "https://api-os-takumi-static.hoyoverse.com" }; const currentUrls = { main: "/main/news", "zh-tw": "/zh-tw/news" }; const apiUrls = { main: "/content_v2_user/app/16471662a82d418a/getContentList", "zh-tw": "/content_v2_user/app/a1b1f9d3315447cc/getContentList" }; const route = { path: "/ys/:location?/:category?", categories: ["game"], example: "/mihoyo/ys", parameters: { location: "区域,可选 `main`(简中)或 `zh-tw`(繁中)", category: "分类,见下表,默认为最新" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["genshin.hoyoverse.com/:location/news"], target: "/ys/:location" }], name: "原神", maintainers: ["nczitzk"], handler, description: `#### 新闻 {#mi-ha-you-yuan-shen-xin-wen} | 最新 | 新闻 | 公告 | 活动 | | ------ | ---- | ------ | -------- | | latest | news | notice | activity |` }; async function handler(ctx) { const location = ctx.req.param("location") ?? "main"; const category = ctx.req.param("category") ?? "latest"; const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 50; const params = { main: `iPage=1&sLangKey=zh-cn&iChanId=${categories[category][location].id}&iPageSize=${limit}`, "zh-tw": `iPage=1&sLangKey=zh-tw&iChanId=${categories[category][location].id}&iPageSize=${limit}` }; const rootUrl = rootUrls[location]; const apiUrl = `${apiRootUrls[location]}${apiUrls[location]}?${params[location]}`; const currentUrl = `${rootUrl}${currentUrls[location]}/${categories[category][location].slug}`; const items = (await got_default({ method: "get", url: apiUrl })).data.data.list.map((item) => ({ title: item.sTitle, description: item.sContent, link: `${rootUrl}${currentUrls[location]}/detail/${item.iInfoId}`, pubDate: parseDate(item.dtStartTime), category: item.sCategoryName })); return { title: `原神 - ${categories[category][location].title}`, link: currentUrl, item: items }; } //#endregion export { route };