feat(route): add nyaa and sukebei.nyaa USER route (#10284)

* feat(route): add nyaa and sukebei.nyaa user route

new route:

- `/nyaa/user/Tsundere-Raws`
- `/nyaa/sukebei/user/Tarakara168`

* fix(nyaa): add nyaa/sukebei.nyaa USER maintainer

add user route infomation in nyaa/maintainer.js
fix typo (change subekei to sukebei)
This commit is contained in:
noname1897
2022-07-20 23:45:06 +08:00
committed by GitHub
parent 8958d306a5
commit 99b63f9755
7 changed files with 98 additions and 36 deletions
+8
View File
@@ -265,10 +265,18 @@ See [Directory](https://www.javlibrary.com/en/star_list.php) to view all stars.
<RouteEn author="Lava-Swimmer noname1897" example="/nyaa/search/psycho-pass" path="/nyaa/search/:query?" :paramsDesc="['Search keyword']" supportBT="1" radar="1"/>
### User
<RouteEn author="Lava-Swimmer noname1897" example="/nyaa/user/silver-khaie" path="/nyaa/user/:username?" :paramsDesc="['Username']" supportBT="1" radar="1"/>
### Sukebei Search Result
<RouteEn author="Lava-Swimmer noname1897" example="/nyaa/sukebei/search/hi" path="/nyaa/sukebei/search/:query?" :paramsDesc="['Search keyword']" supportBT="1" radar="1"/>
### Sukebei User
<RouteEn author="Lava-Swimmer noname1897" example="/nyaa/sukebei/user/Tarakara168" path="/nyaa/sukebei/user/:username?" :paramsDesc="['Username']" supportBT="1" radar="1"/>
## PornHub
### Category
+8
View File
@@ -902,10 +902,18 @@ JavDB 有多个备用域名,本路由默认使用永久域名 <https://javdb.c
<Route author="Lava-Swimmer noname1897" example="/nyaa/search/psycho-pass" path="/nyaa/search/:query?" :paramsDesc="['搜索关键字']" supportBT="1" radar="1"/>
### 用户
<Route author="Lava-Swimmer noname1897" example="/nyaa/user/silver-khaie" path="/nyaa/user/:username?" :paramsDesc="['用户名']" supportBT="1" radar="1"/>
### Sukebei 搜索结果
<Route author="Lava-Swimmer noname1897" example="/nyaa/sukebei/search/hi" path="/nyaa/sukebei/search/:query?" :paramsDesc="['搜索关键字']" supportBT="1" radar="1"/>
### Sukebei 用户
<Route author="Lava-Swimmer noname1897" example="/nyaa/sukebei/user/Tarakara168" path="/nyaa/sukebei/user/:username?" :paramsDesc="['用户名']" supportBT="1" radar="1"/>
## OneJAV
::: tip 提示
+57
View File
@@ -0,0 +1,57 @@
const config = require('@/config').value;
const Parser = require('rss-parser');
module.exports = async (ctx) => {
const parser = new Parser({
customFields: {
item: ['magnet', ['nyaa:infoHash', 'infoHash']],
},
headers: {
'User-Agent': config.ua,
},
});
let currentURL;
let currentLink;
if (ctx.routerPath.split('/')[1] === 'sukebei') {
const rootURL = 'https://sukebei.nyaa.si';
const { username = 'ohys' } = ctx.params;
const { query = '' } = ctx.params;
if (ctx.routerPath.split('/')[2] === 'user') {
currentURL = `${rootURL}/?page=rss&u=${username}`;
currentLink = `${rootURL}/user/${username}`;
} else {
currentURL = `${rootURL}/?page=rss&c=0_0&f=0&q=${encodeURI(query)}`;
currentLink = `${rootURL}/?f=0&c=0_0&q=${query}`;
}
} else {
const rootURL = 'https://nyaa.si';
const { username = 'Tarakara168' } = ctx.params;
const { query = '' } = ctx.params;
if (ctx.routerPath.split('/')[1] === 'user') {
currentURL = `${rootURL}/?page=rss&u=${username}`;
currentLink = `${rootURL}/user/${username}`;
} else {
currentURL = `${rootURL}/?page=rss&c=0_0&f=0&q=${encodeURI(query)}`;
currentLink = `${rootURL}/?f=0&c=0_0&q=${query}`;
}
}
const feed = await parser.parseURL(currentURL);
feed.items.map((item) => {
item.link = item.guid;
item.description = item.content;
item.enclosure_url = `magnet:?xt=urn:btih:${item.infoHash}`;
item.enclosure_type = 'application/x-bittorrent';
return item;
});
ctx.state.data = {
title: feed.title,
link: currentLink,
description: feed.description,
item: feed.items,
};
};
+3 -1
View File
@@ -1,4 +1,6 @@
module.exports = {
'/search/:query?': ['Lava-Swimmer', 'noname1897'],
'/subekei/search/:query?': ['Lava-Swimmer', 'noname1897'],
'/sukebei/search/:query?': ['Lava-Swimmer', 'noname1897'],
'/user/:username?': ['Lava-Swimmer', 'noname1897'],
'/sukebei/user/:username?': ['Lava-Swimmer', 'noname1897'],
};
+17
View File
@@ -15,6 +15,17 @@ module.exports = {
}
},
},
{
title: '用户',
docs: 'https://docs.rsshub.app/multimedia.html#nyaa-yong-hu',
source: '/user/:username',
target: (params, url) => {
url = new URL(url);
if (url.hostname.split('.')[0] === 'nyaa') {
return `/nyaa/user/${params.username}`;
}
},
},
],
sukebei: [
{
@@ -27,6 +38,12 @@ module.exports = {
return `/nyaa/sukebei/search/${query}`;
},
},
{
title: 'sukebei 用户',
docs: 'https://docs.rsshub.app/multimedia.html#nyaa-sukebei-yong-hu',
source: '/user/:username',
target: (params) => `/nyaa/sukebei/user/${params.username}`,
},
],
},
};
+5 -2
View File
@@ -1,4 +1,7 @@
module.exports = (router) => {
router.get('/search/:query?', require('./search'));
router.get('/sukebei/search/:query?', require('./search'));
router.get('/search/:query?', require('./main'));
router.get('/sukebei/search/:query?', require('./main'));
router.get('/user/:username?', require('./main'));
router.get('/sukebei/user/:username?', require('./main'));
};
-33
View File
@@ -1,33 +0,0 @@
const config = require('@/config').value;
const Parser = require('rss-parser');
module.exports = async (ctx) => {
const parser = new Parser({
customFields: {
item: ['magnet', ['nyaa:infoHash', 'infoHash']],
},
headers: {
'User-Agent': config.ua,
},
});
const rootURL = ctx.routerPath.split('/')[1] === 'sukebei' ? 'https://sukebei.nyaa.si' : 'https://nyaa.si';
const { query = '' } = ctx.params;
const feed = await parser.parseURL(`${rootURL}/?page=rss&c=0_0&f=0&q=${encodeURI(query)}`);
feed.items.map((item) => {
item.link = item.guid;
item.description = item.content;
item.enclosure_url = `magnet:?xt=urn:btih:${item.infoHash}`;
item.enclosure_type = 'application/x-bittorrent';
return item;
});
ctx.state.data = {
title: feed.title,
link: `${rootURL}/?f=0&c=0_0&q=${query}`,
description: feed.description,
item: feed.items,
};
};