From 7b504f0d7800a2855e10179b9655cbaeec6adaa6 Mon Sep 17 00:00:00 2001
From: I2IMk <66695371+I2IMk@users.noreply.github.com>
Date: Sun, 14 Jun 2020 22:03:15 +0800
Subject: [PATCH] feat: avgle limit, default behavior (#4968)
---
docs/multimedia.md | 4 ++--
lib/router.js | 4 ++--
lib/routes/avgle/videos.js | 30 +++++++++++++++++++++---------
3 files changed, 25 insertions(+), 13 deletions(-)
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 ? `` : ''}`,
pubDate: new Date(item.addtime * 1000).toUTCString(),