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, }; }), };