diff --git a/docs/multimedia.md b/docs/multimedia.md index 0b4f2dabc..e2e2808ab 100644 --- a/docs/multimedia.md +++ b/docs/multimedia.md @@ -34,11 +34,11 @@ pageClass: routes ### 视频列表 - + ### 视频搜索 - + ## bilibili diff --git a/lib/router.js b/lib/router.js index a42adb45d..a7c883a05 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2295,8 +2295,8 @@ router.get('/ddrk/category/:category', require('./routes/ddrk/list')); router.get('/ddrk/index', require('./routes/ddrk/list')); // avgle -router.get('/avgle/videos/:order?/:time?', require('./routes/avgle/videos.js')); -router.get('/avgle/search/:keyword/:order?/:time?', require('./routes/avgle/videos.js')); +router.get('/avgle/videos/:order?/:time?/:top?', require('./routes/avgle/videos.js')); +router.get('/avgle/search/:keyword/:order?/:time?/:top?', require('./routes/avgle/videos.js')); // 公主链接公告 router.get('/pcr/news', require('./routes/pcr/news')); diff --git a/lib/routes/avgle/videos.js b/lib/routes/avgle/videos.js index aaa4c285c..992239882 100644 --- a/lib/routes/avgle/videos.js +++ b/lib/routes/avgle/videos.js @@ -2,28 +2,40 @@ const got = require('@/utils/got'); module.exports = async (ctx) => { const keyword = ctx.params.keyword ? ctx.params.keyword : ''; - const order = ctx.params.order ? ctx.params.order : 'mv'; - const time = ctx.params.time ? ctx.params.time : 'm'; + + let default_order, default_time; + if (keyword) { + default_order = 'mr'; + default_time = 'a'; + } else { + default_order = 'mv'; + default_time = 'm'; + } + + const order = ctx.params.order ? ctx.params.order : default_order; + const time = ctx.params.time ? ctx.params.time : default_time; + const top = ctx.params.top ? ctx.params.top : 30; + const url = keyword ? `https://api.avgle.com/v1/search/${keyword}/0` : `https://api.avgle.com/v1/videos/0`; const response = await got({ method: 'get', - url: keyword ? `https://api.avgle.com/v1/search/${keyword}/0` : `https://api.avgle.com/v1/videos/0`, + url: url, searchParams: { o: order, t: time, - limit: 250, + limit: top, }, }); - const data = response.data.response.videos; + const returnData = response.data.response.videos; const compact_number = (number) => `${Intl.NumberFormat('en-US', { notation: 'compact', compactDisplay: 'short' }).format(number)}`; const like = (item) => `[${Math.round((item.likes / (item.likes + item.dislikes)) * 100)}%/${compact_number(item.likes + item.dislikes)}/${compact_number(item.viewnumber)}]`; ctx.state.data = { - title: `Avgle`, - link: `https://avgle.com/videos?o=${order}&t=${time}`, - description: `Avgle`, - item: data.map((item) => ({ + title: `Avgle ${order}/${time}`, + link: keyword ? `https://avgle.com/search/videos/${keyword}?o=${order}&t=${time}` : `https://avgle.com/videos?o=${order}&t=${time}`, + description: `Avgle ${order}/${time}`, + item: returnData.map((item) => ({ title: like(item) + item.title, description: `${item.preview_video_url ? `