rsshub
Version:
Make RSS Great Again!
88 lines (83 loc) • 3.28 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';
import timezone from '@/utils/timezone';
const rootUrl = 'https://www.thecover.cn';
const nodes = {
3892: '天下',
3560: '四川',
3909: '辟谣',
3686: '国际',
11: '云招考',
3902: '30秒',
3889: '拍客',
3689: '体育',
1: '国内',
4002: '帮扶铁军',
12: '文娱',
46: '宽窄',
4: '商业',
21: '千面',
17: '封面号',
};
export const route: Route = {
path: '/channel/:id?',
categories: ['new-media'],
example: '/thecover/channel/3560',
parameters: { id: '对应id,可在频道链接中获取,默认为3892' },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
name: '频道',
maintainers: ['yuxinliu-alex'],
handler,
description: `| 天下 | 四川 | 辟谣 | 国际 | 云招考 | 30 秒 | 拍客 | 体育 | 国内 | 帮扶铁军 | 文娱 | 宽窄 | 商业 | 千面 | 封面号 |
| ---- | ---- | ---- | ---- | ------ | ----- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ------ |
| 3892 | 3560 | 3909 | 3686 | 11 | 3902 | 3889 | 3689 | 1 | 4002 | 12 | 46 | 4 | 21 | 17 |`,
};
async function handler(ctx) {
const id = ctx.req.param('id') ?? '3892';
const targetUrl = rootUrl + `/channel_${id}`;
const resp = await got({
method: 'get',
url: targetUrl,
});
const $ = load(resp.data);
const list = $('a.link-to-article')
.toArray()
.filter((item) => $(item).attr('href').startsWith('/'))
.map((item) => ({
link: rootUrl + $(item).attr('href'),
}));
const items = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
const detailResponse = await got({
method: 'get',
url: item.link,
});
const content = load(detailResponse.data);
item.title = content('h1', '.main-article').text();
item.description = content('section.article-content').html();
const info = content('span', '.props-of-title');
item.author = info.eq(0).text();
item.pubDate = timezone(parseDate(info.eq(1).text(), 'YYYY-MM-DD HH:mm'), +8);
return item;
})
)
);
return {
title: `${nodes[id]}-封面新闻`,
link: targetUrl,
description: `封面新闻作为华西都市报深度融合转型和打造新型主流媒体的载体,牢固确立移动优先战略,创新移动新闻产品,打造移动传播矩阵,封面新闻的传播力、引导力、影响力和公信力不断得到各方肯定。封面新闻突破千万的用户下载量,呈现出以四川为主阵地的全国分布态势,用户年龄构成以20-35岁为主,“亿万年轻人的生活方式”的定位初步得到体现。`,
language: 'zh-cn',
item: items,
};
}