diff --git a/lib/v2/tencent/news/author.js b/lib/v2/tencent/news/author.js index 5d473a85f..bc0cd8e40 100644 --- a/lib/v2/tencent/news/author.js +++ b/lib/v2/tencent/news/author.js @@ -2,38 +2,40 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); const { parseDate } = require('@/utils/parse-date'); const timezone = require('@/utils/timezone'); +const config = require('@/config').value; module.exports = async (ctx) => { const mid = ctx.params.mid; - const response = await got(`https://pacaio.match.qq.com/om/mediaArticles?mid=${mid}&num=10&page=0`); - const reponse = response.data; - const title = reponse.mediainfo.name; - const description = reponse.mediainfo.intro; - const list = reponse.data; + const homePageInfoUrl = `https://i.news.qq.com/i/getUserHomepageInfo?chlid=${mid}`; + const userInfo = await ctx.cache.tryGet(homePageInfoUrl, async () => (await got(homePageInfoUrl)).data.userinfo); + const title = userInfo.nick; + const description = userInfo.user_desc; + const suid = encodeURIComponent(userInfo.suid); - const items = await Promise.all( - list.map((item) => { - const title = item.title; - const pubDate = timezone(parseDate(item.time), +8); - const itemUrl = item.vurl; - const author = item.source; - const abstract = item.abstract; + const newsListUrl = `https://i.news.qq.com/getSubNewsMixedList?guestSuid=${suid}&tabId=om_index`; + const news = await ctx.cache.tryGet(newsListUrl, async () => (await got(newsListUrl)).data.newslist, config.cache.routeExpire, false); - return ctx.cache.tryGet(itemUrl, async () => { - const response = await got(itemUrl); - const $ = cheerio.load(response.data); - const article = $('div.content-article'); + const items = news.map((item) => { + const title = item.title; + const pubDate = timezone(parseDate(item.time), +8); + const itemUrl = item.url; + const author = item.source; + const abstract = item.abstract; - return { - title, - description: article.html() || abstract, - link: itemUrl, - author, - pubDate, - }; - }); - }) - ); + return ctx.cache.tryGet(itemUrl, async () => { + const response = await got(itemUrl); + const $ = cheerio.load(response.data); + const article = $('#ArticleContent'); + + return { + title, + description: article.html() || abstract, + link: itemUrl, + author, + pubDate, + }; + }); + }); ctx.state.data = { title,