From 0526c2c852aa91d217c04f946e745e41a2ec4db1 Mon Sep 17 00:00:00 2001 From: abc1763613206 Date: Thu, 28 Mar 2024 09:32:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(route):=20Add=20=E5=B0=8F=E7=B1=B3?= =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E7=94=A8=E6=88=B7=E5=8F=91=E5=B8=96=20(#1492?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): Add 小米社区用户发帖 * fix: use logical operator * fix: apply radar suggestion Co-authored-by: Tony * wip: migrate route to `miui` * fix: migrate miui firmware update to `firmware` --------- --- lib/routes/miui/community/user.ts | 69 +++++++++++++++++++++++++ lib/routes/miui/{ => firmware}/index.ts | 4 +- 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 lib/routes/miui/community/user.ts rename lib/routes/miui/{ => firmware}/index.ts (95%) diff --git a/lib/routes/miui/community/user.ts b/lib/routes/miui/community/user.ts new file mode 100644 index 000000000..49f47bb75 --- /dev/null +++ b/lib/routes/miui/community/user.ts @@ -0,0 +1,69 @@ +import { Route, Data } from '@/types'; +import got from '@/utils/got'; + +export const route: Route = { + path: '/community/user/:uid', + categories: ['bbs'], + example: '/miui/community/user/1200057564', + parameters: { + uid: '小米用户 UID,可于网页版用户主页链接中 `uid` 项获取', + }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['web.vip.miui.com/page/info/mio/mio/homePage'], + target: (_, url) => `/miui/community/user/${new URL(url).searchParams.get('uid')}`, + }, + ], + name: '小米社区用户发帖', + maintainers: ['abc1763613206'], + handler, +}; + +const userRoot = 'https://web.vip.miui.com/page/info/mio/mio/homePage'; +const apiRoot = 'https://api.vip.miui.com/api/community/user/announce/list'; +const pageRoot = 'https://web.vip.miui.com/page/info/mio/mio/detail'; + +async function handler(ctx): Promise { + const uid = ctx.req.param('uid'); + const apiLink = `${apiRoot}?uid=${uid}&limit=10`; + const userLink = `${userRoot}?uid=${uid}`; + const { data } = await got({ + method: 'get', + url: apiLink, + headers: { + Referer: userLink, + }, + }); + if (data.code === 200) { + let authorName = ''; + const records = data.entity.records; + const items = records.map((item) => { + authorName = item.author.name; + return { + title: item.title || `${authorName} 的动态`, + description: item.textContent, + pubDate: new Date(item.createTime).toUTCString(), + author: item.author.name, + link: `${pageRoot}?postId=${item.id}`, + image: item.pic || item.cover || '', + }; + }); + return { + title: `小米社区 - ${authorName} 的发帖`, + link: userLink, + description: `${authorName} 的发帖`, + item: items, + language: 'zh-cn', + }; + } else { + throw new Error(data.message); + } +} diff --git a/lib/routes/miui/index.ts b/lib/routes/miui/firmware/index.ts similarity index 95% rename from lib/routes/miui/index.ts rename to lib/routes/miui/firmware/index.ts index ceb1ed8a7..ffdeb734f 100644 --- a/lib/routes/miui/index.ts +++ b/lib/routes/miui/firmware/index.ts @@ -3,9 +3,9 @@ import got from '@/utils/got'; import queryString from 'query-string'; export const route: Route = { - path: '/:device/:type?/:region?', + path: '/firmware/:device/:type?/:region?', categories: ['program-update'], - example: '/miui/aries', + example: '/miui/firmware/aries', parameters: { device: 'the device `codename` eg. `aries` for Mi 2S', type: 'type', region: 'Region, default to `cn`' }, name: 'New firmware', maintainers: ['Indexyz'],