rsshub
Version:
Make RSS Great Again!
40 lines (32 loc) • 1.54 kB
text/typescript
import got from '@/utils/got';
import { load } from 'cheerio';
import timezone from '@/utils/timezone';
import { parseDate } from '@/utils/parse-date';
const ossUrl = 'https://oss.aisixiang.com';
const rootUrl = 'https://www.aisixiang.com';
const ProcessFeed = (limit, tryGet, items) =>
Promise.all(
items.slice(0, limit).map((item) =>
tryGet(item.link, async () => {
const { data: detailResponse } = await got(item.link);
const content = load(detailResponse);
const commentMatches = content('h3.comment-header')
.text()
.match(/评论(\d+)/);
item.title = content('h3').first().text().split(':').pop();
item.description = content('div.article-content').html();
item.author = content('div.about strong').first().text();
item.category = content('u')
.first()
.parent()
.find('u')
.toArray()
.map((c) => content(c).text());
item.pubDate = timezone(parseDate(content('div.info').text().split('时间:').pop()), +8);
item.upvotes = content('span.like-num').text() ? Number.parseInt(content('span.like-num').text(), 10) : 0;
item.comments = commentMatches ? Number.parseInt(commentMatches[1], 10) : 0;
return item;
})
)
);
export { rootUrl, ossUrl, ProcessFeed };