rsshub
Version:
Make RSS Great Again!
113 lines (111 loc) • 3.42 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
//#region lib/routes/juejin/dynamic.ts
const route = {
path: "/dynamic/:id",
categories: ["programming"],
example: "/juejin/dynamic/3051900006845944",
parameters: { id: "用户 id, 可在用户页 URL 中找到" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{ source: ["juejin.cn/user/:id"] }],
name: "用户动态",
maintainers: ["CaoMeiYouRen"],
handler
};
async function handler(ctx) {
const id = ctx.req.param("id");
const list = (await ofetch_default("https://api.juejin.cn/user_api/v1/user/dynamic", { query: {
user_id: id,
cursor: 0
} })).data.list;
const user = list[0].user;
const username = user.user_name;
const items = list.map((e) => {
const { target_type, target_data, action, time } = e;
let title;
let description;
let pubDate;
let author;
let link;
let category;
switch (target_type) {
case "short_msg": {
const { msg_Info, author_user_info, msg_id, topic } = target_data;
const { content, pic_list, ctime } = msg_Info;
title = content;
const imgs = pic_list.map((img) => `<img src="${img}"><br>`).join("");
description = `${content.replaceAll("\n", "<br>")}<br>${imgs}`;
pubDate = parseDate(Number(ctime) * 1e3);
author = author_user_info.user_name;
link = `https://juejin.cn/pin/${msg_id}`;
category = topic.title;
if (action === 3) {
title = `${username} 赞了这篇沸点//@${author}:${title}`;
description = `${username} 赞了这篇沸点//@${author}:${description}`;
}
break;
}
case "article": {
const { article_id, article_info, author_user_info, tags } = target_data;
const { ctime, brief_content } = article_info;
title = article_info.title;
description = brief_content;
pubDate = parseDate(Number(ctime) * 1e3);
author = author_user_info.user_name;
link = `https://juejin.cn/post/${article_id}`;
category = [...new Set([target_data.category.category_name, ...tags.map((t) => t.tag_name)])];
if (action === 1) title = `${username} 赞了这篇文章//@${author}:${title}`;
break;
}
case "user": {
const { user_name, user_id } = target_data;
title = `${username} 关注了 ${user_name}`;
description = `${user_name}<br>简介:${target_data.description}`;
author = user_name;
link = `https://juejin.cn/user/${user_id}`;
pubDate = parseDate(time * 1e3);
break;
}
case "tag": {
const { tag_name } = target_data;
title = `${username} 关注了标签 ${tag_name}`;
description = tag_name;
category = [tag_name];
link = `https://juejin.cn/tag/${encodeURIComponent(tag_name)}`;
pubDate = parseDate(time * 1e3);
break;
}
default: break;
}
return {
title,
description,
pubDate,
author,
link,
category,
guid: link
};
});
return {
title: `掘金用户动态-${username}`,
link: `https://juejin.cn/user/${id}/`,
description: user.description || `掘金用户动态-${username}`,
image: user.avatar_large,
item: items,
author: username
};
}
//#endregion
export { route };