feat(route): add tid for vsearch of bilibili (#8041)

fix pubdate and clean up desc
Co-authored-by: NeverBehave <gayhub@never.pet>
This commit is contained in:
Daniel Li (李丹阳)
2021-09-09 16:25:31 +08:00
committed by GitHub
parent 52b1326b29
commit 6282a30d0b
3 changed files with 20 additions and 12 deletions

View File

@@ -210,7 +210,15 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
### 视频搜索
<Route author="Symty" example="/bilibili/vsearch/藤原千花" path="/bilibili/vsearch/:kw/:order?/:disableEmbed?" :paramsDesc="['检索关键字', '排序方式, 综合:totalrank 最多点击:click 最新发布:pubdate(缺省) 最多弹幕:dm 最多收藏:stow', '默认为开启内嵌视频, 任意值为关闭']"/>
<Route author="Symty" example="/bilibili/vsearch/藤原千花" path="/bilibili/vsearch/:kw/:order?/:disableEmbed?/:tid?" :paramsDesc="['检索关键字', '排序方式, 综合:totalrank 最多点击:click 最新发布:pubdate(缺省) 最多弹幕:dm 最多收藏:stow', '默认为开启内嵌视频, 任意值为关闭', '分区 id']">
分区id的取值请参考下表
| 全部分区 | 动画 | 番剧 | 国创 | 音乐 | 舞蹈 | 游戏 | 知识 | 科技 | 运动 | 汽车 | 生活 | 美食 | 动物圈 | 鬼畜 | 时尚 | 资讯 | 娱乐 | 影视 | 纪录片 | 电影 | 电视剧 |
| ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 0 | 1 | 13 | 167 | 3 | 129 | 4 | 36 | 188 | 234 | 223 | 160 | 211 | 217 | 119 | 155 | 202 | 5 | 181 | 177 | 23 | 11 |
</Route>
### 用户关注动态

View File

@@ -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'));

View File

@@ -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, '<br/>');
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}<br/>` +
`Author: ${item.author} (ID: ${item.mid})<br/>` +
`AuthorID: ${item.mid}<br/>` +
`Play: ${item.play} Favorite: ${item.favorites}<br/>` +
`Danmaku: ${item.video_review} Comment: ${item.review}<br/>` +
`Category: ${item.typename}<br/>` +
`<br/>${des}<br/>` +
`<img src="${img}"><br/>` +
`Tag: ${item.tag}<br/>` +
`Match By: ${item.hit_columns.join(',')}` +
(!disableEmbed ? `<br><br>${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,
};
}),
};