UNPKG

rsshub

Version:
61 lines (60 loc) 2.05 kB
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs"; import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { load } from "cheerio"; //#region lib/routes/qq/news/user.ts const route = { path: "/news/:uid/:detail?", categories: ["social-media"], example: "/qq/news/8QMZ2X5a5YUeujw=", parameters: { uid: "用户 ID, 用户主页 URL 中的最后一段部分", detail: "是否抓取全文,该值只要不为空就抓取全文返回,否则只返回摘要" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: true, supportScihub: false }, radar: [{ source: ["news.qq.com/omn/author/:uid"], target: "/qq/news/:uid" }], name: "用户主页列表", maintainers: ["hualiong"], handler }; async function handler(ctx) { const { uid, detail } = ctx.req.param(); const response = await rofetch(`https://i.news.qq.com/getSubNewsMixedList?guestSuid=${uid}&tabId=om_index`); let news = response.newslist.map((item) => ({ title: item.longtitle, description: `<p>${item.abstract}</p><img src="${item.miniProShareImage}" />`, guid: item.id, link: item.url, author: item.uinnick, pubDate: parseDate(item.timestamp * 1e3) })); if (detail) news = await Promise.all(response.newslist.map((item) => cache_default.tryGet(item.id, async () => { let description = `<p>${item.abstract}</p><img src="${item.miniProShareImage}" /><h4>文章包含非文本内容,请在浏览器中打开查看</h4>`; if (item.articletype === "0") description = load(await rofetch(`https://news.qq.com/rain/a/${item.id}`))(".rich_media_content").html(); return { title: item.longtitle, description, guid: item.id, link: item.url, author: item.uinnick, pubDate: parseDate(item.timestamp * 1e3) }; }))); return { title: `${response.newslist[0].uinnick}的主页 - 腾讯网`, link: `https://news.qq.com/omn/author/${uid}`, item: news }; } //#endregion export { route };