RSSHub/lib/v2/cls/telegraph.js

55 lines
1.5 KiB
JavaScript

const got = require('@/utils/got');
const { parseDate } = require('@/utils/parse-date');
const { art } = require('@/utils/render');
const path = require('path');
const { rootUrl, getSearchParams } = require('./utils');
const categories = {
watch: '看盘',
announcement: '公司',
explain: '解读',
red: '加红',
jpush: '推送',
remind: '提醒',
fund: '基金',
hk: '港股',
};
module.exports = async (ctx) => {
const category = ctx.params.category ?? '';
const limit = ctx.query.limit ? parseInt(ctx.query.limit) : 50;
let apiUrl = `${rootUrl}/nodeapi/updateTelegraphList`;
if (category) {
apiUrl = `${rootUrl}/v1/roll/get_roll_list`;
}
const currentUrl = `${rootUrl}/telegraph`;
const response = await got({
method: 'get',
url: apiUrl,
searchParams: getSearchParams({
category,
hasFirstVipArticle: 1,
}),
});
const items = response.data.data.roll_data.slice(0, limit).map((item) => ({
title: item.title || item.content,
link: item.shareurl,
description: art(path.join(__dirname, 'templates/telegraph.art'), {
item,
}),
pubDate: parseDate(item.ctime * 1000),
category: item.subjects?.map((s) => s.subject_name),
}));
ctx.state.data = {
title: `财联社 - 电报${category === '' ? '' : ` - ${categories[category]}`}`,
link: currentUrl,
item: items,
};
};