UNPKG

rsshub

Version:
72 lines (66 loc) 2.22 kB
import { Route } from '@/types'; import cache from '@/utils/cache'; import ofetch from '@/utils/ofetch'; import { load } from 'cheerio'; export const route: Route = { path: '/series', categories: ['new-media'], example: '/sspai/series', parameters: {}, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, radar: [ { source: ['sspai.com/series'], }, ], name: '最新上架付费专栏', maintainers: ['HenryQW'], handler, url: 'sspai.com/series', description: `> 少数派专栏需要付费订阅,RSS 仅做更新提醒,不含付费内容.`, }; async function handler() { const response = await ofetch('https://sspai.com/api/v1/series/tag/all/get', { parseResponse: JSON.parse, }); const products = response.data.flatMap((category) => category.children .filter((item) => item.sell_status) .map((item) => { const price = item.price / 100; return { id: item.id, title: `¥${price} - ${item.title}`, link: `https://sspai.com/series/${item.id}`, author: item.author.nickname, }; }) ); const item = await Promise.all( products.map((item) => cache.tryGet(item.link, async () => { const res = await ofetch(`https://sspai.com/api/v1/series/info/get?id=${item.id}&view=second`); const data = res.data; const banner = `<img src="https://cdn.sspai.com/${data.banner_web}" />`; const description = banner + data.intro; const $ = load(description); $('img').css('max-width', '100%'); item.description = $.html(); return item; }) ) ); return { title: '少数派 -- 最新上架付费专栏', link: 'https://sspai.com/series', description: '少数派 -- 最新上架付费专栏', item, }; }