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