feat: avgle limit, default behavior (#4968)
This commit is contained in:
parent
48d6ec476e
commit
7b504f0d78
|
|
@ -34,11 +34,11 @@ pageClass: routes
|
|||
|
||||
### 视频列表
|
||||
|
||||
<Route author="I2IMk" example="/avgle/videos" path="/avgle/videos/:order?/:time?" :paramsDesc="['视频次序, `bw` 观看中 / `mr` 最新 / `mv` 最多观看 / `tr` 最高评分 / `tf` 最多收藏 / `lg`最长, 默认 `mv`', '视频的添加时间, `a` 所有/`1` 今天/`d` 本周/`m` 本月, 默认 `m`']"/>
|
||||
<Route author="I2IMk" example="/avgle/videos" path="/avgle/videos/:order?/:time?/:top?" :paramsDesc="['视频次序, `bw` 观看中 / `mr` 最新 / `mv` 最多观看 / `tr` 最高评分 / `tf` 最多收藏 / `lg` 最长, 默认 `mv`', '视频的添加时间, `a` 所有 / `t` 今天 / `d` 本周 / `m` 本月, 默认 `m`', '按次序获取的视频数, 不大于 `250`, 默认 `30`']"/>
|
||||
|
||||
### 视频搜索
|
||||
|
||||
<Route author="I2IMk" example="/avgle/search/橋本ありな" path="/avgle/search/:keyword/:order?/:time?" :paramsDesc="['搜索的关键词', '视频次序, `bw` 观看中 / `mr` 最新 / `mv` 最多观看 / `tr` 最高评分 / `tf` 最多收藏 / `lg`最长, 默认 `mv`', '视频的添加时间, `a` 所有 / `1` 今天 / `d` 本周 / `m` 本月, 默认 `m`']"/>
|
||||
<Route author="I2IMk" example="/avgle/search/橋本ありな" path="/avgle/search/:keyword/:order?/:time?/:top?" :paramsDesc="['搜索的关键词', '视频次序, `bw` 观看中 / `mr` 最新 / `mv` 最多观看 / `tr` 最高评分 / `tf` 最多收藏 / `lg` 最长, 默认 `mr`', '视频的添加时间, `a` 所有 / `t` 今天 / `d` 本周 / `m` 本月, 默认 `a`', '按次序获取的视频数, 不大于 `250`, 默认 `30`']"/>
|
||||
|
||||
## bilibili
|
||||
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
|
|
|
|||
|
|
@ -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 ? `<video controls loop ${item.preview_url ? `poster="${item.preview_url}"` : ''} src="${item.preview_video_url}" />` : ''}`,
|
||||
pubDate: new Date(item.addtime * 1000).toUTCString(),
|
||||
|
|
|
|||
Loading…
Reference in New Issue