rsshub
Version:
Make RSS Great Again!
115 lines (114 loc) • 3.57 kB
JavaScript
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs";
import { t as config } from "./config-CCmw1BNE.mjs";
import { t as PRESETS } from "./header-generator-DACPoxdp.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"],
target: "/dianping/user/:id"
}, {
source: ["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 userPage = `https://m.dianping.com/userprofile/${id}`;
const cookie = config.dianping.cookie;
const headers = { Referer: userPage };
if (cookie) headers.Cookie = cookie;
const pageResponse = await rofetch(userPage, {
headers,
headerGeneratorOptions: PRESETS.MODERN_IOS
});
const nickName = /window\.nickName = "(.*?)"/.exec(pageResponse)?.[1];
const items = (await rofetch(`https://m.dianping.com/member/ajax/NobleUserFeeds?userId=${id}`, {
headers,
headerGeneratorOptions: PRESETS.MODERN_IOS
})).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 };