feat(route): 新增JavBus发行商和制作商订阅 (#8183)

* 新增JavBus发行商和制作商订阅

* docs: fix unnecessary changes

* refactor: migrate to v2

* docs: remove dup items

Co-authored-by: EsuRt <thusid@outlook.com>
Co-authored-by: TonyRL <TonyRL@users.noreply.github.com>
This commit is contained in:
EsuRt 2022-02-25 10:05:48 +08:00 committed by GitHub
parent cefd9573c8
commit 3d888cb765
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 173 additions and 126 deletions

View File

@ -679,28 +679,6 @@
{ title: '视频 - 播放列表', docs: 'https://docs.rsshub.app/multimedia.html#teng-xun-shi-pin', source: '/x/cover/:id/:detail', target: '/tencentvideo/playlist/:id' },
],
},
'javbus.com': {
_name: 'JavBus',
www: [
{ title: '首页', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/', target: '/javbus/home' },
{ title: '分类', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/genre/:gid', target: '/javbus/genre/:gid' },
{ title: '演员', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/star/:sid', target: '/javbus/star/:sid' },
{ title: '系列', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/series/:seriesid', target: '/javbus/series/:seriesid' },
{ title: '首页 / 步兵', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/uncensored', target: '/javbus/uncensored/home' },
{ title: '分类 / 步兵', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/uncensored/genre/:gid', target: '/javbus/uncensored/genre/:gid' },
{ title: '演员 / 步兵', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/uncensored/star/:sid', target: '/javbus/uncensored/star/:sid' },
{ title: '系列 / 步兵', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/uncensored/series/:seriesid', target: '/javbus/uncensored/series/:seriesid' },
],
},
'javbus.one': {
_name: 'JavBus',
www: [
{ title: '首页 / 欧陆风云', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/', target: '/javbus/western/home' },
{ title: '分类 / 欧陆风云', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/genre/:gid', target: '/javbus/western/genre/:gid' },
{ title: '演员 / 欧陆风云', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/star/:sid', target: '/javbus/western/star/:sid' },
{ title: '系列 / 欧陆风云', docs: 'https://docs.rsshub.app/multimedia.html#javbus', source: '/series/:seriesid', target: '/javbus/western/series/:seriesid' },
],
},
'onejav.com': {
_name: 'OneJAV BT',
'.': [

View File

@ -413,6 +413,14 @@ BT 之家的域名会变更,本路由以 <https://www.btbtt20.com> 为默认
<Route author="MegrezZhu CoderTonyChan Felix2yu" example="/javbus/series/44q" path="/javbus/series/:seriesid" :paramsDesc="['系列id详见作品中系列的链接']" />
### 制作商
<Route author="MegrezZhu CoderTonyChan Felix2yu" example="/javbus/studio/ej" path="/javbus/studio/:studioid" :paramsDesc="['制作商id详见作品右侧制作商的链接']" />
### 发行商
<Route author="MegrezZhu CoderTonyChan Felix2yu" example="/javbus/label/x8" path="/javbus/label/:labelid" :paramsDesc="['发行商id详见作品右侧发行商的链接']" />
### 首页 / 步兵
<Route author="MegrezZhu CoderTonyChan" example="/javbus/uncensored/home" path="/javbus/uncensored/home"/>

View File

@ -1704,88 +1704,6 @@ module.exports = {
},
],
},
'javbus.com': {
_name: 'JavBus',
www: [
{
title: '首页',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/',
target: '/javbus/home',
},
{
title: '分类',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/genre/:gid',
target: '/javbus/genre/:gid',
},
{
title: '演员',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/star/:sid',
target: '/javbus/star/:sid',
},
{
title: '系列',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/series/:seriesid',
target: '/javbus/series/:seriesid',
},
{
title: '首页 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored',
target: '/javbus/uncensored/home',
},
{
title: '分类 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/genre/:gid',
target: '/javbus/uncensored/genre/:gid',
},
{
title: '演员 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/star/:sid',
target: '/javbus/uncensored/star/:sid',
},
{
title: '系列 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/series/:seriesid',
target: '/javbus/uncensored/series/:seriesid',
},
],
},
'javbus.one': {
_name: 'JavBus',
www: [
{
title: '首页 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/',
target: '/javbus/western/home',
},
{
title: '分类 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/genre/:gid',
target: '/javbus/western/genre/:gid',
},
{
title: '演员 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/star/:sid',
target: '/javbus/western/star/:sid',
},
{
title: '系列 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/series/:seriesid',
target: '/javbus/western/series/:seriesid',
},
],
},
'onejav.com': {
_name: 'OneJAV BT',
'.': [

View File

@ -1129,19 +1129,21 @@ router.get('/nga/post/:tid', lazyloadRouteHandler('./routes/nga/post'));
// Nautilus
router.get('/nautilus/topic/:tid', lazyloadRouteHandler('./routes/nautilus/topics'));
// JavBus
router.get('/javbus/home', lazyloadRouteHandler('./routes/javbus/home'));
router.get('/javbus/genre/:gid', lazyloadRouteHandler('./routes/javbus/genre'));
router.get('/javbus/star/:sid', lazyloadRouteHandler('./routes/javbus/star'));
router.get('/javbus/series/:seriesid', lazyloadRouteHandler('./routes/javbus/series'));
router.get('/javbus/uncensored/home', lazyloadRouteHandler('./routes/javbus/uncensored/home'));
router.get('/javbus/uncensored/genre/:gid', lazyloadRouteHandler('./routes/javbus/uncensored/genre'));
router.get('/javbus/uncensored/star/:sid', lazyloadRouteHandler('./routes/javbus/uncensored/star'));
router.get('/javbus/uncensored/series/:seriesid', lazyloadRouteHandler('./routes/javbus/uncensored/series'));
router.get('/javbus/western/home', lazyloadRouteHandler('./routes/javbus/western/home'));
router.get('/javbus/western/genre/:gid', lazyloadRouteHandler('./routes/javbus/western/genre'));
router.get('/javbus/western/star/:sid', lazyloadRouteHandler('./routes/javbus/western/star'));
router.get('/javbus/western/series/:seriesid', lazyloadRouteHandler('./routes/javbus/western/series'));
// JavBus migrated to v2
// router.get('/javbus/home', lazyloadRouteHandler('./routes/javbus/home'));
// router.get('/javbus/genre/:gid', lazyloadRouteHandler('./routes/javbus/genre'));
// router.get('/javbus/star/:sid', lazyloadRouteHandler('./routes/javbus/star'));
// router.get('/javbus/series/:seriesid', lazyloadRouteHandler('./routes/javbus/series'));
// router.get('/javbus/studio/:studioid', lazyloadRouteHandler('./routes/javbus/studio'));
// router.get('/javbus/label/:labelid', lazyloadRouteHandler('./routes/javbus/label'));
// router.get('/javbus/uncensored/home', lazyloadRouteHandler('./routes/javbus/uncensored/home'));
// router.get('/javbus/uncensored/genre/:gid', lazyloadRouteHandler('./routes/javbus/uncensored/genre'));
// router.get('/javbus/uncensored/star/:sid', lazyloadRouteHandler('./routes/javbus/uncensored/star'));
// router.get('/javbus/uncensored/series/:seriesid', lazyloadRouteHandler('./routes/javbus/uncensored/series'));
// router.get('/javbus/western/home', lazyloadRouteHandler('./routes/javbus/western/home'));
// router.get('/javbus/western/genre/:gid', lazyloadRouteHandler('./routes/javbus/western/genre'));
// router.get('/javbus/western/star/:sid', lazyloadRouteHandler('./routes/javbus/western/star'));
// router.get('/javbus/western/series/:seriesid', lazyloadRouteHandler('./routes/javbus/western/series'));
// 中山大学
router.get('/sysu/sdcs', lazyloadRouteHandler('./routes/universities/sysu/sdcs'));

7
lib/v2/javbus/label.js Normal file
View File

@ -0,0 +1,7 @@
const { getPage } = require('./util');
module.exports = async (ctx) => {
const { labelid } = ctx.params;
ctx.state.data = await getPage(`https://www.javbus.com/label/${labelid}`, ctx);
};

View File

@ -0,0 +1,16 @@
module.exports = {
'/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
'/home': ['MegrezZhu', 'CoderTonyChan'],
'/label/:labelid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
'/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
'/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
'/studio/:studioid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
'/uncensored/home': ['MegrezZhu', 'CoderTonyChan'],
'/uncensored/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
'/uncensored/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
'/uncensored/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
'/western/home': ['MegrezZhu', 'CoderTonyChan'],
'/western/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
'/western/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
'/western/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
};

99
lib/v2/javbus/radar.js Normal file
View File

@ -0,0 +1,99 @@
const westernJavbus = {
_name: 'JavBus',
www: [
{
title: '首页 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/',
target: '/javbus/western/home',
},
{
title: '分类 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/genre/:gid',
target: '/javbus/western/genre/:gid',
},
{
title: '演员 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/star/:sid',
target: '/javbus/western/star/:sid',
},
{
title: '系列 / 欧陆风云',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/series/:seriesid',
target: '/javbus/western/series/:seriesid',
},
],
};
module.exports = {
'javbus.com': {
_name: 'JavBus',
www: [
{
title: '首页',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/',
target: '/javbus/home',
},
{
title: '分类',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/genre/:gid',
target: '/javbus/genre/:gid',
},
{
title: '演员',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/star/:sid',
target: '/javbus/star/:sid',
},
{
title: '系列',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/series/:seriesid',
target: '/javbus/series/:seriesid',
},
{
title: '制作商',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/studio/:studioid',
target: '/javbus/studio/:studioid',
},
{
title: '发行商',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/label/:labelid',
target: '/javbus/label/:labelid',
},
{
title: '首页 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored',
target: '/javbus/uncensored/home',
},
{
title: '分类 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/genre/:gid',
target: '/javbus/uncensored/genre/:gid',
},
{
title: '演员 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/star/:sid',
target: '/javbus/uncensored/star/:sid',
},
{
title: '系列 / 步兵',
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
source: '/uncensored/series/:seriesid',
target: '/javbus/uncensored/series/:seriesid',
},
],
},
'javbus.one': westernJavbus,
'javbus.org': westernJavbus,
};

16
lib/v2/javbus/router.js Normal file
View File

@ -0,0 +1,16 @@
module.exports = (router) => {
router.get('/genre/:gid', require('./genre'));
router.get('/home', require('./home'));
router.get('/label/:labelid', require('./label'));
router.get('/series/:seriesid', require('./series'));
router.get('/star/:sid', require('./star'));
router.get('/studio/:studioid', require('./studio'));
router.get('/uncensored/home', require('./uncensored/home'));
router.get('/uncensored/genre/:gid', require('./uncensored/genre'));
router.get('/uncensored/series/:seriesid', require('./uncensored/series'));
router.get('/uncensored/star/:sid', require('./uncensored/star'));
router.get('/western/home', require('./western/home'));
router.get('/western/genre/:gid', require('./western/genre'));
router.get('/western/series/:seriesid', require('./western/series'));
router.get('/western/star/:sid', require('./western/star'));
};

7
lib/v2/javbus/studio.js Normal file
View File

@ -0,0 +1,7 @@
const { getPage } = require('./util');
module.exports = async (ctx) => {
const { studioid } = ctx.params;
ctx.state.data = await getPage(`https://www.javbus.com/studio/${studioid}`, ctx);
};

View File

@ -1,5 +1,6 @@
const got = require('@/utils/got');
const { load } = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
exports.getPage = async (url, ctx) => {
const { data } = await got(url);
@ -25,7 +26,7 @@ const parseItems = ($, ctx) =>
title: $(ele).find('img').attr('title'),
thumb: $(ele).find('img').attr('src'),
link: $(ele).attr('href'),
pubDate: new Date($(ele).find('date:nth-child(4)').text()).toUTCString(),
pubDate: parseDate($(ele).find('date:nth-child(4)').text(), 'YYYY-MM-DD'),
aid: $(ele).find('date:nth-child(3)').text(),
}))
.toArray()
@ -58,11 +59,8 @@ const parseItems = ($, ctx) =>
};
});
const getDetail = async (link, ctx) => {
const cache = await ctx.cache.get(link);
if (cache) {
return JSON.parse(cache);
} else {
const getDetail = async (link, ctx) =>
await ctx.cache.tryGet(link, async () => {
const resp = await got(link);
const detailPage = resp.data;
// 演员
@ -205,7 +203,5 @@ const getDetail = async (link, ctx) => {
}
const detail = { actresses, filmId, filmTime, filmLast, filmEstabName, filmMakerbName, seriesName, directorName, code, screenData, magnetlinks, videoplayer, videolink };
ctx.cache.set(link, JSON.stringify(detail));
return detail;
}
};
});