UNPKG

rsshub

Version:
100 lines (92 loc) 3.35 kB
import { Route } from '@/types'; import cache from '@/utils/cache'; import got from '@/utils/got'; import weiboUtils from './utils'; import queryString from 'query-string'; import { config } from '@/config'; export const route: Route = { path: '/super_index/:id/:type?/:routeParams?', categories: ['social-media'], example: '/weibo/super_index/1008084989d223732bf6f02f75ea30efad58a9/sort_time', parameters: { id: '超话ID', type: '类型:见下表', routeParams: '额外参数;请参阅上面的说明和表格' }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, radar: [ { source: ['weibo.com/p/:id/super_index'], target: '/super_index/:id', }, ], name: '超话', maintainers: ['zengxs', 'Rongronggg9'], handler, description: `| type | 备注 | | ---------- | ---------------- | | soul | 精华 | | video | 视频(暂不支持) | | album | 相册(暂不支持) | | hot\_sort | 热门 | | sort\_time | 最新帖子 | | feed | 最新评论 |`, }; interface Card { card_group?: Card[]; } async function handler(ctx) { const id = ctx.req.param('id'); const type = ctx.req.param('type') ?? 'feed'; const containerData = (await cache.tryGet( `weibo:super_index:container:${id}:${type}`, async () => { const _r = await got('https://m.weibo.cn/api/container/getIndex', { searchParams: queryString.stringify({ containerid: `${id}_-_${type}`, luicode: '10000011', lfid: `${id}_-_main`, }), headers: { Referer: `https://m.weibo.cn/p/index?containerid=${id}_-_soul&luicode=10000011&lfid=${id}_-_main`, 'MWeibo-Pwa': '1', 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1', 'X-Requested-With': 'XMLHttpRequest', }, }); return _r.data.data; }, config.cache.routeExpire, false )) as { cards?: Card[]; pageInfo?: { page_title: string; }; }; const resultItems = []; function handleCard(ctx, card, resultItems) { if (card.card_type === '9' && 'mblog' in card) { const formatExtended = weiboUtils.formatExtended(ctx, card.mblog, undefined); resultItems.push(formatExtended); } } for (const card of containerData?.cards ?? []) { handleCard(ctx, card, resultItems); if (!('card_group' in card)) { continue; } for (const mblogCard of card.card_group!) { handleCard(ctx, mblogCard, resultItems); } } return weiboUtils.sinaimgTvax({ title: `微博超话 - ${containerData?.pageInfo?.page_title}`, link: `https://weibo.com/p/${id}/super_index`, description: `#${containerData?.pageInfo?.page_title}# 的超话`, item: resultItems, }); }