From a7b43002690e4415f8acb68e044c305d3df5ab95 Mon Sep 17 00:00:00 2001 From: CaoMeiYouRen <40430746+CaoMeiYouRen@users.noreply.github.com> Date: Sat, 26 Aug 2023 01:42:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(route):=20bilibili=20=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=A7=86=E9=A2=91=E9=93=BE=E6=8E=A5=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=94=B9=E4=B8=BA=20BV=20=E5=8F=B7=E5=B9=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=85=8D=E7=BD=AE=E5=8F=82=E6=95=B0=EF=BC=9B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E4=B8=93=E6=A0=8F=E6=98=BE=E7=A4=BA=E5=85=A8?= =?UTF-8?q?=E6=96=87=20=E7=9A=84=E5=8F=82=E6=95=B0=E6=9D=A5=E6=BA=90=20(#1?= =?UTF-8?q?3122)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): 添加 百度股市通 * fix: 修改 百度股市通 路径 * docs: 添加 百度股市通 文档 * feat: 添加 radar 支持 * fix: 按字母顺序插入新路由 * feat(route): 新增 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 * fix: 优化 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的标题 * fix: 修复 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 部分情况下的非空判断 * fix: 修复 地区名称标题的问题 * fix: 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的 guid 增加 pubDate * fix: 修复 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 guid 中添加 pubDate * fix: 修改 腾讯新闻 - 新型冠状病毒肺炎疫情实时追踪 的 title * feat(route): 修复 HelloGitHub 的 月刊 路由 * fix: remove guid * feat(route): 新增 bilibili 热搜 * feat(route): 完善 bilibili热搜 的 radar * fix: 优化 bilibili热搜 list 的非空判断 * fix: 修复 bilibili热搜路由失效 fix #12632 * fix(route): 修复 bilibili热搜路由 的校验逻辑计算 * fix: 优化 bilibili/utils 的 addVerifyInfo 逻辑 * feat(route): bilibili 动态中的视频链接默认改为 BV 号并增加配置参数;修改 专栏显示全文 的参数来源 * fix(route): 修复 fulltext 来源错误;修复 addVerifyInfo 逻辑错误 * fix(route): 移除不必要的参数 --- lib/v2/bilibili/dynamic.js | 18 +++++++++--------- lib/v2/bilibili/utils.js | 4 +++- website/docs/routes/social-media.md | 12 ++++++++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/lib/v2/bilibili/dynamic.js b/lib/v2/bilibili/dynamic.js index 4a592a608..1f779ac3e 100644 --- a/lib/v2/bilibili/dynamic.js +++ b/lib/v2/bilibili/dynamic.js @@ -70,10 +70,10 @@ const cache = require('./cache'); module.exports = async (ctx) => { const uid = ctx.params.uid; const routeParams = querystring.parse(ctx.params.routeParams); - const showEmoji = fallback(undefined, queryToBoolean(routeParams.showEmoji), false); const disableEmbed = fallback(undefined, queryToBoolean(routeParams.disableEmbed), false); - const displayArticle = fallback(undefined, queryToBoolean(routeParams.displayArticle), false); + const displayArticle = ctx.query.mode === 'fulltext'; + const useAvid = fallback(undefined, queryToBoolean(routeParams.useAvid), false); const response = await got({ method: 'get', @@ -83,10 +83,9 @@ module.exports = async (ctx) => { }, transformResponse: [(data) => data], }); - const data = JSONbig.parse(response.body).data.cards; - + const cards = JSONbig.parse(response.body).data.cards; const items = await Promise.all( - data.map(async (item) => { + cards.map(async (item) => { const getTitle = (data) => (data ? data.title || data.description || data.content || (data.vest && data.vest.content) || '' : ''); const getDes = (data) => data.dynamic || data.desc || data.description || data.content || data.summary || (data.vest && data.vest.content) + (data.sketch && `
${data.sketch.title}
${data.sketch.desc_text}`) || data.intro || ''; @@ -176,7 +175,8 @@ module.exports = async (ctx) => { } let url; if (data.aid) { - url = `https://www.bilibili.com/video/av${data.aid}`; + const id = useAvid ? `av${data.aid}` : item?.desc?.bvid || item?.desc?.origin?.bvid; + url = `https://www.bilibili.com/video/${id}`; return `
视频地址:${url}`; } if (data.image_urls) { @@ -222,10 +222,10 @@ module.exports = async (ctx) => { ); ctx.state.data = { - title: `${data[0].desc.user_profile.info.uname} 的 bilibili 动态`, + title: `${cards[0]?.desc?.user_profile?.info.uname} 的 bilibili 动态`, link: `https://space.bilibili.com/${uid}/dynamic`, - description: `${data[0].desc.user_profile.info.uname} 的 bilibili 动态`, - image: data[0].desc.user_profile.info.face, + description: `${cards[0]?.desc?.user_profile?.info?.uname} 的 bilibili 动态`, + image: cards[0]?.desc?.user_profile?.info?.face, item: items, }; }; diff --git a/lib/v2/bilibili/utils.js b/lib/v2/bilibili/utils.js index 9f9b96889..5038b8775 100644 --- a/lib/v2/bilibili/utils.js +++ b/lib/v2/bilibili/utils.js @@ -7,7 +7,9 @@ function iframe(aid, page, bvid) { } const addVerifyInfo = (params, verifyString) => { - const verifyParam = params.split('&').sort().join('&'); + const searchParams = new URLSearchParams(params); + searchParams.sort(); + const verifyParam = searchParams.toString(); const wts = Math.round(Date.now() / 1000); const w_rid = md5(`${verifyParam}&wts=${wts}${verifyString}`); return `${params}&w_rid=${w_rid}&wts=${wts}`; diff --git a/website/docs/routes/social-media.md b/website/docs/routes/social-media.md index 20bc3d732..31e4050fe 100644 --- a/website/docs/routes/social-media.md +++ b/website/docs/routes/social-media.md @@ -48,9 +48,17 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 | -- | ---- | ------- | ------ | | showEmoji | 显示或隐藏表情图片 | 0/1/true/false | false | | disableEmbed | 关闭内嵌视频 | 0/1/true/false | false | -| displayArticle | 专栏显示全文 | 0/1/true/false | false | +| useAvid | 视频链接使用AV号(默认为BV号) | 0/1/true/false | false | -用例:`/bilibili/user/dynamic/2267573/showEmoji=1&disableEmbed=1&displayArticle=1` +用例:`/bilibili/user/dynamic/2267573/showEmoji=1&disableEmbed=1&useAvid=1` + +:::tip 动态的专栏显示全文 + +动态的专栏显示全文请使用通用参数里的 `mode=fulltext ` + +举例: bilibili 专栏全文输出 /bilibili/user/dynamic/2267573/?mode=fulltext + +:::