rsshub
Version:
Make RSS Great Again!
78 lines (70 loc) • 2.65 kB
text/typescript
import { Route } from '@/types';
import ofetch from '@/utils/ofetch';
import { load } from 'cheerio';
import path from 'node:path';
import { art } from '@/utils/render';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
const renderDescription = (desc) => art(path.join(__dirname, 'templates/description.art'), desc);
export const route: Route = {
path: '/news',
categories: ['game'],
example: '/warthunder/news',
parameters: {},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['warthunder.com/en/news', 'warthunder.com/'],
},
],
name: 'News',
maintainers: ['axojhf'],
handler,
url: 'warthunder.com/en/news',
description: `News data from [https://warthunder.com/en/news/](https://warthunder.com/en/news/)
The \`pubDate\` provided under UTC time zone, so please ignore the specific time!!!`,
};
async function handler() {
const rootUrl = 'https://warthunder.com/en/news/';
const response = await ofetch(rootUrl);
const $ = load(response);
const pageFace = $('div.showcase__item.widget')
.toArray()
.map((item) => {
item = $(item);
let pubDate = parseDate(item.find('div.widget__content > ul > li.widget-meta__item.widget-meta__item--right').text(), 'D MMMM YYYY', 'en');
pubDate = timezone(pubDate, 0);
const category = [];
if (item.find('div.widget__pin').length !== 0) {
category.push('pinned');
}
if (item.find('a.widget__decal').length !== 0) {
category.push('decal');
}
if (item.find('div.widget__badge').length !== 0) {
category.push(item.find('div.widget__badge').text());
}
return {
link: `https://warthunder.com${item.find('a.widget__link').attr('href')}`,
title: item.find('div.widget__content > div.widget__title').text(),
pubDate,
description: renderDescription({
description: item.find('div.widget__content > div.widget__comment').text(),
imglink: item.find('div.widget__poster > img.widget__poster-media').attr('data-src'),
}),
category,
};
});
return {
title: 'War Thunder News',
link: 'https://warthunder.com/en/news/',
item: pageFace,
};
}