rsshub
Version:
Make RSS Great Again!
156 lines (154 loc) • 3.26 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import "./parse-date-BrP7mxXf.mjs";
import "./cache-Bo__VnGm.mjs";
import { n as getCategoryBrief, o as parseList, t as ProcessFeed } from "./utils-Do7XKeOT.mjs";
//#region lib/routes/juejin/trending.ts
const route = {
path: "/trending/:category/:type",
categories: ["programming"],
example: "/juejin/trending/ios/monthly",
parameters: {
category: {
description: "分类名",
options: [
{
value: "android",
label: "Android"
},
{
value: "frontend",
label: "前端"
},
{
value: "ios",
label: "iOS"
},
{
value: "backend",
label: "后端"
},
{
value: "design",
label: "设计"
},
{
value: "product",
label: "产品"
},
{
value: "freebie",
label: "工具资源"
},
{
value: "article",
label: "阅读"
},
{
value: "ai",
label: "人工智能"
},
{
value: "devops",
label: "运维"
},
{
value: "all",
label: "全部"
}
],
default: "all"
},
type: {
description: "类型",
options: [
{
value: "weekly",
label: "本周最热"
},
{
value: "monthly",
label: "本月最热"
},
{
value: "historical",
label: "历史最热"
}
],
default: "weekly"
}
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "热门",
maintainers: ["moaix"],
handler
};
async function handler(ctx) {
const { category, type } = ctx.req.param();
let id = "";
let name = "";
let url = "recommended";
const cat = (await getCategoryBrief()).find((item) => item.category_url === category);
if (cat) {
id = cat.category_id;
name = cat.category_name;
url = cat.category_url;
}
const p = {
monthly: {
period: "month",
title: "本月",
link: "monthly_hottest",
sort_type: 30
},
weekly: {
period: "week",
title: "本周",
link: "weekly_hottest",
url: "get_entry_by_period",
sort_type: 7
},
historical: {
period: "",
title: "历史",
link: "hottest",
sort_type: 0
}
}[type];
const title = `掘金${name}${p.title}最热`;
const link = `https://juejin.im/${url}?sort=${p.link}`;
let getUrl = "https://api.juejin.cn/recommend_api/v1/article/recommend_all_feed";
const getJson = {
cursor: "0",
id_type: 2,
limit: 20,
sort_type: p.sort_type
};
if (url !== "recommended") {
getUrl = "https://api.juejin.cn/recommend_api/v1/article/recommend_cate_feed";
getJson.cate_id = id;
}
const trendingResponse = await ofetch_default(getUrl, {
method: "POST",
body: getJson
});
let entrylist = trendingResponse.data;
if (category === "all" || category === "devops" || category === "product" || category === "design") entrylist = trendingResponse.data.filter((item) => item.item_type === 2).map((item) => item.item_info);
return {
title,
link,
item: await ProcessFeed(parseList(entrylist))
};
}
//#endregion
export { route };