rsshub
Version:
Make RSS Great Again!
53 lines (48 loc) • 1.71 kB
text/typescript
import { Route } from '@/types';
import got from '@/utils/got';
import path from 'node:path';
import { parseDate } from '@/utils/parse-date';
import { art } from '@/utils/render';
export const route: Route = {
path: '/onair/:lang?',
categories: ['anime'],
example: '/bgmlist/onair/zh-Hans',
parameters: { lang: '语言' },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
name: '开播提醒',
maintainers: ['x2cf'],
handler,
};
async function handler(ctx) {
const lang = ctx.req.param('lang');
const { data: sites } = await got('https://bgmlist.com/api/v1/bangumi/site');
const { data } = await got('https://bgmlist.com/api/v1/bangumi/onair');
return {
title: '番组放送 开播提醒',
link: 'https://bgmlist.com/',
item: data.items.map((item) => {
item.sites.push({ site: 'dmhy', id: item.titleTranslate['zh-Hans']?.[0] ?? item.title });
return {
title: item.titleTranslate[lang]?.[0] ?? item.title,
link: item.officialSite,
description: art(
path.join(__dirname, 'templates/description.art'),
item.sites.map((site) => ({
title: sites[site.site].title,
url: sites[site.site].urlTemplate.replaceAll('{{id}}', site.id),
begin: site.begin,
}))
),
pubDate: parseDate(item.begin),
guid: item.id,
};
}),
};
}