rsshub
Version:
Make RSS Great Again!
90 lines (89 loc) • 2.95 kB
JavaScript
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as got_default } from "./got-BTowW50G.mjs";
//#region lib/routes/tencent/pvp/newsindex.ts
const map = /* @__PURE__ */ new Map([
["rm", {
name: "热门",
channelid: 1760
}],
["xw", {
name: "新闻",
channelid: 1761
}],
["gg", {
name: "公告",
channelid: 1762
}],
["hd", {
name: "活动",
channelid: 1763
}],
["ss", {
name: "赛事",
channelid: 1764
}],
["yh", {
name: "优化",
channelid: 1769
}],
["all", {
name: "全部",
channelid: 0
}]
]);
const link = "https://pvp.qq.com/web201706/newsindex.shtml";
const apiUrl = "https://apps.game.qq.com/wmp/v3.1/?p0=18&p1=searchNewsKeywordsList&order=sIdxTime&r0=cors&type=iTarget&source=app_news_search&pagesize=12&page=1&id=";
const pageUrl = "https://pvp.qq.com/web201706/newsdetail.shtml?tid=";
const getPage = async (id, typeName) => {
const response = await got_default(apiUrl + id, { headers: { Referer: link } });
return Promise.all(response.data.msg.result.map(async (item) => {
let description = await got_default(`https://apps.game.qq.com/wmp/v3.1/public/searchNews.php?p0=18&source=web_pc&id=${item.iNewsId}`);
description = JSON.parse(description.data.match(/(?<=var searchObj=).*(?<!;)/g));
return {
title: `【${typeName}】` + item.sTitle,
link: pageUrl + item.iNewsId,
pubDate: parseDate(item.sTargetIdxTime),
description: description.msg.sContent
};
}));
};
const route = {
path: "/pvp/newsindex/:type",
categories: ["game"],
example: "/tencent/pvp/newsindex/all",
parameters: { type: "栏目分类,见下表" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "新闻中心",
maintainers: ["Jeason0228", "HenryQW"],
handler,
description: `| 全部 | 热门 | 新闻 | 公告 | 活动 | 赛事 | 优化 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| all | rm | xw | gg | hd | ss | yh |`
};
async function handler(ctx) {
const type = ctx.req.param("type");
const OutName = map.get(type).name;
const OutId = map.get(type).channelid;
let item = [];
if (type === "all") {
const results = await Promise.all([...map].map(async (value) => {
return await getPage(value[1].channelid, value[1].name);
}));
for (const result of results) item = [...item, ...result];
} else item = await getPage(OutId, OutName);
return {
title: `【${OutName}】 - 王者荣耀 - 新闻列表`,
link,
description: "《王者荣耀》是腾讯天美工作室历时3年推出的东方英雄即时对战手游大作,抗塔强杀、团灭超神,领略爽热血竞技的酣畅淋漓!1v1、3v3、闯关等丰富游戏模式,随时战,更自由!跨服匹配秒开局,好友组队战排位,不靠装备、没有等级,更公平、更爽快的无差异对战!",
item
};
}
//#endregion
export { route };