mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-01 09:38:04 +08:00
46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
const got = require('@/utils/got');
|
|
const { parseDate } = require('@/utils/parse-date');
|
|
const { baseUrl, getBoards, renderDesc } = require('./utils');
|
|
|
|
module.exports = async (ctx) => {
|
|
let { board = 'all' } = ctx.params;
|
|
|
|
const boards = await getBoards(ctx.cache.tryGet);
|
|
let boardInfo;
|
|
if (board !== 'all') {
|
|
boardInfo = boards.find((b) => b.id === board || b.alias === board);
|
|
board = boardInfo.id;
|
|
}
|
|
|
|
const { data: response } = await got.post(`${baseUrl}/article/get_new_articles`, {
|
|
json: {
|
|
boardId: board,
|
|
isCollege: false,
|
|
page: 0,
|
|
pageSize: ctx.query.limit ? Number(ctx.query.limit) : 30,
|
|
},
|
|
});
|
|
|
|
const result = JSON.parse(decodeURIComponent(response.result));
|
|
|
|
const items = await Promise.all(
|
|
result.map((item) =>
|
|
ctx.cache.tryGet(`meteor:${item.id}`, () => ({
|
|
title: item.title,
|
|
description: renderDesc(item.content),
|
|
link: `${baseUrl}/article/${item.shortId}`,
|
|
author: item.authorAlias,
|
|
pubDate: parseDate(item.createdAt),
|
|
}))
|
|
)
|
|
);
|
|
|
|
ctx.state.data = {
|
|
title: `${board !== 'all' ? boardInfo.title : '全部看板'} | Meteor 學生社群`,
|
|
description: board !== 'all' ? boardInfo.feedDescription : null,
|
|
image: board !== 'all' ? (boardInfo.imgUrl !== 'not_set' ? boardInfo.imgUrl : null) : null,
|
|
link: `${board !== 'all' ? boardInfo.link : `${baseUrl}/board/all`}/new`,
|
|
item: items,
|
|
};
|
|
};
|