UNPKG

rsshub

Version:
40 lines (32 loc) 1.54 kB
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 };