diff --git a/docs/social-media.md b/docs/social-media.md
index 5b67796795..7e1aa28002 100644
--- a/docs/social-media.md
+++ b/docs/social-media.md
@@ -210,7 +210,15 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
### 视频搜索
-
+
+
+分区id的取值请参考下表:
+
+| 全部分区 | 动画 | 番剧 | 国创 | 音乐 | 舞蹈 | 游戏 | 知识 | 科技 | 运动 | 汽车 | 生活 | 美食 | 动物圈 | 鬼畜 | 时尚 | 资讯 | 娱乐 | 影视 | 纪录片 | 电影 | 电视剧 |
+| ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
+| 0 | 1 | 13 | 167 | 3 | 129 | 4 | 36 | 188 | 234 | 223 | 160 | 211 | 217 | 119 | 155 | 202 | 5 | 181 | 177 | 23 | 11 |
+
+
### 用户关注动态
diff --git a/lib/router.js b/lib/router.js
index 62ab3c0799..1266f9906a 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -92,7 +92,7 @@ router.get('/bilibili/ranking/:rid?/:day?/:arc_type?/:disableEmbed?', lazyloadRo
router.get('/bilibili/user/channel/:uid/:cid/:disableEmbed?', lazyloadRouteHandler('./routes/bilibili/userChannel'));
router.get('/bilibili/topic/:topic', lazyloadRouteHandler('./routes/bilibili/topic'));
router.get('/bilibili/audio/:id', lazyloadRouteHandler('./routes/bilibili/audio'));
-router.get('/bilibili/vsearch/:kw/:order?/:disableEmbed?', lazyloadRouteHandler('./routes/bilibili/vsearch'));
+router.get('/bilibili/vsearch/:kw/:order?/:disableEmbed?/:tid?', lazyloadRouteHandler('./routes/bilibili/vsearch'));
router.get('/bilibili/followings/dynamic/:uid/:disableEmbed?', lazyloadRouteHandler('./routes/bilibili/followings_dynamic'));
router.get('/bilibili/followings/video/:uid/:disableEmbed?', lazyloadRouteHandler('./routes/bilibili/followings_video'));
router.get('/bilibili/followings/article/:uid', lazyloadRouteHandler('./routes/bilibili/followings_article'));
diff --git a/lib/routes/bilibili/vsearch.js b/lib/routes/bilibili/vsearch.js
index 33ff1f1859..6f0a62c93b 100644
--- a/lib/routes/bilibili/vsearch.js
+++ b/lib/routes/bilibili/vsearch.js
@@ -1,4 +1,5 @@
const got = require('@/utils/got');
+const { parseDate } = require('@/utils/parse-date');
const utils = require('./utils');
module.exports = async (ctx) => {
@@ -6,10 +7,11 @@ module.exports = async (ctx) => {
const order = ctx.params.order || 'pubdate';
const disableEmbed = ctx.params.disableEmbed;
const kw_url = encodeURIComponent(kw);
+ const tids = ctx.params.tid ?? 0;
const response = await got({
method: 'get',
- url: `https://api.bilibili.com/x/web-interface/search/type?jsonp=jsonp&search_type=video&highlight=1&keyword=${kw_url}&order=${order}&duration=0&single_column=0&tids=0`,
+ url: `https://api.bilibili.com/x/web-interface/search/type?jsonp=jsonp&search_type=video&highlight=1&keyword=${kw_url}&order=${order}&duration=0&single_column=0&tids=${tids}`,
headers: {
Referer: `https://search.bilibili.com/all?keyword=${kw_url}`,
},
@@ -28,23 +30,21 @@ module.exports = async (ctx) => {
const des = item.description.replace(/\n/g, '
');
const img = item.pic.replace(/^\/\//g, 'http://');
return {
- title: `${item.title.replace(/<[/ ]?em[^>]*>/g, '')}`,
- author: `${item.author}`,
- category: `${item.typename}`,
+ title: item.title.replace(/<[/ ]?em[^>]*>/g, ''),
+ author: item.author,
+ category: [...item.tag.split(','), item.typename],
description:
`Length: ${l}
` +
- `Author: ${item.author} (ID: ${item.mid})
` +
+ `AuthorID: ${item.mid}
` +
`Play: ${item.play} Favorite: ${item.favorites}
` +
`Danmaku: ${item.video_review} Comment: ${item.review}
` +
- `Category: ${item.typename}
` +
`
${des}
` +
`
` +
- `Tag: ${item.tag}
` +
`Match By: ${item.hit_columns.join(',')}` +
(!disableEmbed ? `
${utils.iframe(item.aid)}` : ''),
- pubDate: new Date(item.pubdate * 1000).toUTCString(),
- guid: `${item.arcurl}`,
- link: `${item.arcurl}`,
+ pubDate: parseDate(item.pubdate * 1000),
+ guid: item.arcurl,
+ link: item.arcurl,
};
}),
};