UNPKG

rsshub

Version:
85 lines (74 loc) 2.4 kB
import { Route } from '@/types'; import got from '@/utils/got'; import { parseDate } from '@/utils/parse-date'; import { art } from '@/utils/render'; import path from 'node:path'; import { rootUrl, getSearchParams } from './utils'; const categories = { watch: '看盘', announcement: '公司', explain: '解读', red: '加红', jpush: '推送', remind: '提醒', fund: '基金', hk: '港股', }; export const route: Route = { path: '/telegraph/:category?', categories: ['finance'], example: '/cls/telegraph', parameters: { category: '分类,见下表,默认为全部' }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, radar: [ { source: ['cls.cn/telegraph', 'cls.cn/'], target: '/telegraph', }, ], name: '电报', maintainers: ['nczitzk'], handler, url: 'cls.cn/telegraph', description: `| 看盘 | 公司 | 解读 | 加红 | 推送 | 提醒 | 基金 | 港股 | | ----- | ------------ | ------- | ---- | ----- | ------ | ---- | ---- | | watch | announcement | explain | red | jpush | remind | fund | hk |`, }; async function handler(ctx) { const category = ctx.req.param('category') ?? ''; const limit = ctx.req.query('limit') ? Number.parseInt(ctx.req.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), })); return { title: `财联社 - 电报${category === '' ? '' : ` - ${categories[category]}`}`, link: currentUrl, item: items, }; }