rsshub
Version:
Make RSS Great Again!
131 lines (104 loc) • 3.53 kB
text/typescript
import { Route } from '@/types';
import cache from '@/utils/cache';
import got from '@/utils/got';
import { load } from 'cheerio';
import { parseDate } from '@/utils/parse-date';
export const route: Route = {
path: '/article/:id?',
categories: ['new-media'],
example: '/wyzxwk/article/shushe',
parameters: { id: '栏目 id,可在栏目页 URL 中找到,默认为时代观察' },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['wyzxwk.com/Article/:id', 'wyzxwk.com/'],
},
],
name: '栏目',
maintainers: ['nczitzk'],
handler,
description: `时政
| 时代观察 | 舆论战争 |
| -------- | -------- |
| shidai | yulun |
经济
| 经济视点 | 社会民生 | 三农关注 | 产业研究 |
| -------- | -------- | -------- | -------- |
| jingji | shehui | sannong | chanye |
国际
| 国际纵横 | 国防外交 |
| -------- | -------- |
| guoji | guofang |
思潮
| 理想之旅 | 思潮碰撞 | 文艺新生 | 读书交流 |
| -------- | -------- | -------- | -------- |
| lixiang | sichao | wenyi | shushe |
历史
| 历史视野 | 中华文化 | 中华医药 | 共产党人 |
| -------- | -------- | -------- | -------- |
| lishi | zhonghua | zhongyi | cpers |
争鸣
| 风华正茂 | 工农之声 | 网友杂谈 | 网友时评 |
| -------- | -------- | -------- | -------- |
| qingnian | gongnong | zatan | shiping |
活动
| 乌有公告 | 红色旅游 | 乌有讲堂 | 书画欣赏 |
| -------- | -------- | --------- | -------- |
| gonggao | lvyou | jiangtang | shuhua |`,
};
async function handler(ctx) {
const id = ctx.req.param('id') ?? 'shidai';
const rootUrl = 'http://www.wyzxwk.com';
const currentUrl = `${rootUrl}/Article/${id}`;
const response = await got({
method: 'get',
url: currentUrl,
});
const $ = load(response.data);
$('.g-sd').remove();
let items = $('h3 a')
.toArray()
.map((item) => {
item = $(item);
return {
title: item.text(),
link: item.attr('href'),
};
});
items = await Promise.all(
items.map((item) =>
cache.tryGet(item.link, async () => {
if (item.link.indexOf('wyzxwk.com') > 0) {
try {
const detailResponse = await got({
method: 'get',
url: item.link,
});
const content = load(detailResponse.data);
content('.zs-modal-body').prev().nextAll().remove();
const pubDate = detailResponse.data.match(/<span class="s-grey-3">(\d{4}-\d{2}-\d{2})<\/span>/);
if (pubDate) {
item.pubDate = parseDate(pubDate[1], 'YYYY-MM-DD');
}
item.description = content('article').html();
} catch {
item.description = '';
}
}
return item;
})
)
);
return {
title: `${$('title').text().split(' - ')[0]} - 乌有之乡网刊`,
link: currentUrl,
item: items,
};
}