UNPKG

rsshub

Version:
136 lines (131 loc) 3.14 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import { t as ViewType } from "./types-D84BRIt4.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { a as getBuildId, c as parseList, i as getBParam, o as getGToken, r as favicon, s as parseItem, t as apiUrl } from "./utils-B2Ngnh7l.mjs"; //#region lib/routes/followin/index.ts const route = { path: "/:categoryId?/:lang?", categories: ["finance"], view: ViewType.Articles, example: "/followin", parameters: { categoryId: { description: "Category ID", options: [ { value: "1", label: "For You" }, { value: "9", label: "Market" }, { value: "13", label: "Meme" }, { value: "14", label: "BRC20" }, { value: "3", label: "NFT" }, { value: "5", label: "Thread" }, { value: "6", label: "In-depth" }, { value: "8", label: "Tutorials" }, { value: "11", label: "Videos" } ], default: "1" }, lang: { description: "Language", options: [ { value: "en", label: "English" }, { value: "zh-Hans", label: "简体中文" }, { value: "zh-Hant", label: "繁體中文" }, { value: "vi", label: "Tiếng Việt" } ], default: "en" } }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Home", maintainers: ["TonyRL"], handler, description: `Category ID | For You | Market | Meme | BRC20 | NFT | Thread | In-depth | Tutorials | Videos | | ------- | ------ | ---- | ----- | --- | ------ | -------- | --------- | ------ | | 1 | 9 | 13 | 14 | 3 | 5 | 6 | 8 | 11 | Language | English | 简体中文 | 繁體中文 | Tiếng Việt | | ------- | -------- | -------- | ---------- | | en | zh-Hans | zh-Hant | vi |` }; async function handler(ctx) { const { categoryId = "1", lang = "en" } = ctx.req.param(); const { limit = 20 } = ctx.req.query(); const gToken = await getGToken(cache_default.tryGet); const bParam = getBParam(lang); const { data: response } = await got_default.post(`${apiUrl}/feed/list/recommended`, { headers: { "x-bparam": JSON.stringify(bParam), "x-gtoken": gToken }, json: { category_id: Number.parseInt(categoryId), count: Number.parseInt(limit) } }); if (response.code !== 2e3) throw new Error(response.msg); const buildId = await getBuildId(cache_default.tryGet); const list = parseList(response.data.list, lang, buildId); return { title: "Followin", link: "https://followin.io", image: favicon, item: await Promise.all(list.map((item) => parseItem(item, cache_default.tryGet))) }; } //#endregion export { route };