UNPKG

rsshub

Version:
85 lines (76 loc) 2.62 kB
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'; import { config } from '@/config'; import { getHeaders } from './utils'; import ConfigNotFoundError from '@/errors/types/config-not-found'; export const route: Route = { path: '/baoliao/:uid', categories: ['shopping'], example: '/smzdm/baoliao/7367111021', parameters: { uid: '用户id,网址上直接可以看到' }, features: { requireConfig: [ { name: 'SMZDM_COOKIE', description: '什么值得买登录后的 Cookie 值', }, ], requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, radar: [ { source: ['zhiyou.smzdm.com/member/:uid/baoliao'], }, ], name: '用户爆料', maintainers: ['nczitzk'], handler, }; async function handler(ctx) { if (!config.smzdm.cookie) { throw new ConfigNotFoundError('什么值得买排行榜 is disabled due to the lack of SMZDM_COOKIE'); } const link = `https://zhiyou.smzdm.com/member/${ctx.req.param('uid')}/baoliao/`; const response = await got(link, { headers: getHeaders(), }); const $ = load(response.data); const title = $('.info-stuff-nickname').text(); const list = $('.pandect-content-stuff') .toArray() .map((item) => { item = $(item); return { title: item.find('.pandect-content-title a').text(), link: item.find('.pandect-content-title a').attr('href'), pubDate: timezone(parseDate(item.find('.pandect-content-time').text(), ['YYYY-MM-DD', 'MM-DD HH:mm']), +8), }; }); const out = await Promise.all( list.map((item) => cache.tryGet(item.link, async () => { const response = await got(item.link, { headers: getHeaders(), }); const $ = load(response.data); item.description = $('article.txt-detail').html(); item.pubDate = timezone(parseDate($('.time').first().text().trim().replace('更新时间:', '')), 8); item.author = title; return item; }) ) ); return { title: `${title}的爆料 - 什么值得买`, link, item: out, }; }