const querystring = require('querystring'); const got = require('@/utils/got'); const weiboUtils = require('./utils'); const timezone = require('@/utils/timezone'); const { fallback, queryToBoolean } = require('@/utils/readable-social'); const config = require('@/config').value; module.exports = async (ctx) => { const keyword = ctx.params.keyword; const data = await ctx.cache.tryGet( `weibo:keyword:${keyword}`, async () => { const _r = await got({ method: 'get', url: `https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D61%26q%3D${encodeURIComponent(keyword)}%26t%3D0`, headers: { Referer: `https://m.weibo.cn/p/searchall?containerid=100103type%3D1%26q%3D${encodeURIComponent(keyword)}`, 'MWeibo-Pwa': 1, 'X-Requested-With': 'XMLHttpRequest', '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', }, }); return _r.data.data.cards; }, config.cache.routeExpire, false ); const routeParams = querystring.parse(ctx.params.routeParams); ctx.state.data = weiboUtils.sinaimgTvax({ title: `又有人在微博提到${keyword}了`, link: `http://s.weibo.com/weibo/${encodeURIComponent(keyword)}&b=1&nodup=1`, description: `又有人在微博提到${keyword}了`, item: data.map((item) => { item.mblog.created_at = timezone(item.mblog.created_at, +8); if (item.mblog.retweeted_status && item.mblog.retweeted_status.created_at) { item.mblog.retweeted_status.created_at = timezone(item.mblog.retweeted_status.created_at, +8); } return weiboUtils.formatExtended(ctx, item.mblog, undefined, { showAuthorInTitle: fallback(undefined, queryToBoolean(routeParams.showAuthorInTitle), true), showAuthorInDesc: fallback(undefined, queryToBoolean(routeParams.showAuthorInDesc), true), }); }), }); };