UNPKG

rsshub

Version:
113 lines (111 loc) 3.67 kB
import "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; //#region lib/routes/dianping/user.ts const route = { path: "/user/:id", categories: ["shopping"], example: "/dianping/user/808259118", parameters: { id: "User id,打开网页端从 URL 中获取,在 `/member/:id` 中" }, features: { requireConfig: [{ name: "DIANPING_COOKIE", optional: false, description: "大众点评的 Cookie" }], requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["dianping.com/member/:id", "m.dianping.com/userprofile/:id"], target: "/dianping/user/:id" }], name: "用户动态", maintainers: ["pseudoyu"], handler, description: "获取用户点评、签到、攻略等动态。" }; function addPictureAndVideo(item) { let content = ""; content += item.pictureList ? item.pictureList.map((ele) => `<img src="${ele.picUrl}" />`).join("<br>") : ""; content += item.videoUrl ? `<img src="${item.videoUrl}" />` : ""; return content; } const starMap = { 0: "无", 10: "一星", 20: "二星", 30: "三星", 35: "三星半", 40: "四星", 45: "四星半", 50: "五星" }; async function handler(ctx) { const id = ctx.req.param("id"); const userAgent = "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"; const userPage = `https://m.dianping.com/userprofile/${id}`; const cookie = config.dianping.cookie; const headers = { "User-Agent": userAgent, Referer: userPage }; if (cookie) headers.Cookie = cookie; const pageResponse = await ofetch_default(userPage, { headers }); const nickName = /window\.nickName = "(.*?)"/g.exec(pageResponse)?.[1]; const items = (await ofetch_default(`https://m.dianping.com/member/ajax/NobleUserFeeds?userId=${id}`, { headers })).data.map((item) => { let link = ""; let title = ""; let content = ""; const poi = item.poi ? `地点:<a href="http://www.dianping.com/shop/${item.poi.shopId}">${item.poi.name} - ${item.poi.regionCategory}</a>` : ""; const poiName = item.poi ? item.poi.name : ""; switch (item.feedType) { case 1101: link = `https://m.dianping.com/ugcdetail/${item.mainId}?sceneType=0&bizType=3`; content = poi; title = `签到成功: ${poiName} `; break; case 101: link = `https://m.dianping.com/ugcdetail/${item.mainId}?sceneType=0&bizType=1`; content = item.content.replaceAll(/\n+/g, "<br>") + "<br>"; content += `评分:${starMap[item.star]}<br>`; content += poi + "<br>"; content += addPictureAndVideo(item); title = `发布点评: ${poiName}`; break; case 131: link = `https://m.dianping.com/ugcdetail/${item.mainId}?sceneType=0&bizType=29`; content = item.content.replaceAll(/\n+/g, "<br>") + "<br>"; content += addPictureAndVideo(item); title = `发布点评: ${content}`; break; case 4208: link = `https://m.dianping.com/cityinsight/${item.mainId}`; content = item.content.replaceAll(/\n+/g, "<br>") + "<br>"; content += poi + "<br>"; content += item.moreDesc ? `<a href='${link}'>${item.moreDesc}</a><br>` : ""; content += addPictureAndVideo(item); title = `发布攻略: ${poiName}`; break; default: } return { description: content, title, link }; }); return { title: `大众点评 - ${nickName}`, link: userPage, description: `大众点评 - ${nickName}`, item: items }; } //#endregion export { route };