89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
import path from 'node:path';
|
|
|
|
import { config } from '@/config';
|
|
import type { Route } from '@/types';
|
|
import { ViewType } from '@/types';
|
|
import cache from '@/utils/cache';
|
|
import got from '@/utils/got';
|
|
import { parseDate } from '@/utils/parse-date';
|
|
import { art } from '@/utils/render';
|
|
import timezone from '@/utils/timezone';
|
|
|
|
export const route: Route = {
|
|
path: '/:important?',
|
|
categories: ['finance'],
|
|
view: ViewType.Notifications,
|
|
example: '/jin10',
|
|
parameters: { important: '只看重要,任意值开启,留空关闭' },
|
|
features: {
|
|
requireConfig: false,
|
|
requirePuppeteer: false,
|
|
antiCrawler: false,
|
|
supportBT: false,
|
|
supportPodcast: false,
|
|
supportScihub: false,
|
|
},
|
|
radar: [
|
|
{
|
|
source: ['jin10.com/'],
|
|
target: '',
|
|
},
|
|
],
|
|
name: '市场快讯',
|
|
maintainers: ['laampui'],
|
|
handler,
|
|
url: 'jin10.com/',
|
|
};
|
|
|
|
async function handler(ctx) {
|
|
const { important = false } = ctx.req.param();
|
|
const data = await cache.tryGet(
|
|
'jin10:index',
|
|
async () => {
|
|
const { data: response } = await got('https://flash-api.jin10.com/get_flash_list', {
|
|
headers: {
|
|
'x-app-id': 'bVBF4FyRTn5NJF5n',
|
|
'x-version': '1.0.0',
|
|
},
|
|
searchParams: {
|
|
channel: '-8200',
|
|
vip: '1',
|
|
},
|
|
});
|
|
return response.data.filter((item) => item.type !== 1);
|
|
},
|
|
config.cache.routeExpire,
|
|
false
|
|
);
|
|
|
|
const item = data.map((item) => {
|
|
const titleMatch = item.data.content.match(/^【(.*?)】/);
|
|
let title;
|
|
let content = item.data.content;
|
|
if (titleMatch) {
|
|
title = titleMatch[1];
|
|
content = content.replace(titleMatch[0], '');
|
|
} else {
|
|
title = item.data.vip_title || item.data.content;
|
|
}
|
|
|
|
return {
|
|
title,
|
|
description: art(path.join(__dirname, 'templates/description.art'), {
|
|
content,
|
|
pic: item.data.pic,
|
|
}),
|
|
pubDate: timezone(parseDate(item.time), 8),
|
|
link: item.data.link,
|
|
guid: `jin10:index:${item.id}`,
|
|
important: item.important,
|
|
};
|
|
});
|
|
|
|
return {
|
|
title: '金十数据',
|
|
link: 'https://www.jin10.com/',
|
|
item: important ? item.filter((item) => item.important) : item,
|
|
};
|
|
}
|