rsshub
Version:
Make RSS Great Again!
126 lines (122 loc) • 3.62 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import "./parse-date-BrP7mxXf.mjs";
import "./md5-C8GRvctM.mjs";
import "./cache-Bo__VnGm.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as utils_default } from "./utils-Brm8ba_H.mjs";
//#region lib/routes/coolapk/hot.ts
const getLinkAndTitle = (type, period) => {
const baseURL = "https://api.coolapk.com/v6/page/dataList?url=";
let link;
const res = {};
const types = {
jrrm: {
title: "今日热门",
url: baseURL + "%2Ffeed%2FstatList%3FcacheExpires%3D300%26statType%3Dday%26sortField%3Ddetailnum%26title%3D%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&title=%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&subTitle=&page=1"
},
dzb: {
title: "点赞榜",
sortField: "likenum"
},
scb: {
title: "收藏榜",
sortField: "favnum"
},
plb: {
title: "评论榜",
sortField: "replynum"
},
ktb: {
title: "酷图榜",
sortField: "likenum"
}
};
const periods = {
daily: {
description: "日榜",
statType: "day"
},
weekly: {
description: "周榜",
statType: "7days"
}
};
if (type === "jrrm") {
res.link = types.jrrm.url;
res.title = types.jrrm.title;
return res;
} else if (type === "ktb") {
const trans = {
daily: {
description: "周榜",
statDays: "7days"
},
weekly: {
description: "月榜",
statDays: "30days"
}
};
link = `#/feed/coolPictureList?statDays=` + trans[period].statDays + `&listType=statFavNum&buildCard=1&title=` + trans[period].description + `&page=1`;
res.title = "酷图榜-" + trans[period].description;
} else {
link = `#/feed/statList?statType=` + periods[period].statType + `&sortField=` + types[type].sortField + `&title=` + periods[period].description + `&page=1`;
res.title = types[type].title + `-` + periods[period].description;
}
res.link = baseURL + encodeURIComponent(link);
return res;
};
const route = {
path: "/hot/:type?/:period?",
categories: ["social-media"],
example: "/coolapk/hot",
parameters: {
type: "默认为`jrrm`",
period: "默认为`daily`"
},
features: {
requireConfig: [{
name: "ALLOW_USER_HOTLINK_TEMPLATE",
optional: true,
description: "设置为`true`并添加`image_hotlink_template`参数来代理图片"
}],
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "热榜",
maintainers: ["xizeyoupan"],
handler,
description: `| 参数名称 | 今日热门 | 点赞榜 | 评论榜 | 收藏榜 | 酷图榜 |
| -------- | -------- | ------ | ------ | ------ | ------ |
| type | jrrm | dzb | plb | scb | ktb |
| 参数名称 | 日榜 | 周榜 |
| -------- | ----- | ------ |
| period | daily | weekly |
::: tip
今日热门没有周榜,酷图榜日榜的参数会变成周榜,周榜的参数会变成月榜。
:::`
};
async function handler(ctx) {
const { link, title } = getLinkAndTitle(ctx.req.param("type") || "jrrm", ctx.req.param("period") || "daily");
const data = (await got_default(link, { headers: utils_default.getHeaders() })).data.data;
const t = [];
for (const i of data) if (i.entityType === "card") for (const k of i.entities) t.push(k);
else t.push(i);
let out = await Promise.all(t.map((item) => utils_default.parseDynamic(item)));
out = out.filter(Boolean);
return {
title,
link: "https://www.coolapk.com/",
description: `热榜-` + title,
item: out
};
}
//#endregion
export { route };