rsshub
Version:
Make RSS Great Again!
52 lines (46 loc) • 1.5 kB
text/typescript
import { Route } from '@/types';
import cache from '@/utils/cache';
import { getProviderList } from './utils';
import InvalidParameterError from '@/errors/types/invalid-parameter';
export const route: Route = {
path: '/news/providers/:region/list',
categories: ['new-media'],
example: '/yahoo/news/providers/tw/list',
parameters: { region: '地区, 同路由"新闻来源"中的支持地区, 即 hk 或 tw' },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['hk.news.yahoo.com/'],
},
{
source: ['tw.news.yahoo.com/'],
},
],
name: '新聞來源列表',
maintainers: ['TonyRL', 'williamgateszhao'],
handler,
};
async function handler(ctx) {
const region = ctx.req.param('region');
if (!['hk', 'tw'].includes(region)) {
throw new InvalidParameterError(`Unknown region: ${region}`);
}
const providerList = await getProviderList(region, cache.tryGet);
const items = providerList.map((provider) => ({
...provider,
description: provider.key,
}));
return {
title: 'Yahoo 新聞 - 新聞來源列表',
link: `https://${region}.news.yahoo.com`,
image: 'https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo-1200x1200.png',
item: items,
};
}