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
+
+:::