From 3d888cb7655a09a0197d3541217e0641f0efb313 Mon Sep 17 00:00:00 2001 From: EsuRt <15177069+EsuRt@users.noreply.github.com> Date: Fri, 25 Feb 2022 10:05:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(route):=20=E6=96=B0=E5=A2=9EJavBus?= =?UTF-8?q?=E5=8F=91=E8=A1=8C=E5=95=86=E5=92=8C=E5=88=B6=E4=BD=9C=E5=95=86?= =?UTF-8?q?=E8=AE=A2=E9=98=85=20(#8183)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 新增JavBus发行商和制作商订阅 * docs: fix unnecessary changes * refactor: migrate to v2 * docs: remove dup items Co-authored-by: EsuRt Co-authored-by: TonyRL --- assets/radar-rules.js | 22 ----- docs/multimedia.md | 8 ++ lib/radar-rules.js | 82 --------------- lib/router.js | 28 +++--- lib/{routes => v2}/javbus/genre.js | 0 lib/{routes => v2}/javbus/home.js | 0 lib/v2/javbus/label.js | 7 ++ lib/v2/javbus/maintainer.js | 16 +++ lib/v2/javbus/radar.js | 99 +++++++++++++++++++ lib/v2/javbus/router.js | 16 +++ lib/{routes => v2}/javbus/series.js | 0 lib/{routes => v2}/javbus/star.js | 0 lib/v2/javbus/studio.js | 7 ++ lib/{routes => v2}/javbus/uncensored/genre.js | 0 lib/{routes => v2}/javbus/uncensored/home.js | 0 .../javbus/uncensored/series.js | 0 lib/{routes => v2}/javbus/uncensored/star.js | 0 lib/{routes => v2}/javbus/util.js | 14 +-- lib/{routes => v2}/javbus/western/genre.js | 0 lib/{routes => v2}/javbus/western/home.js | 0 lib/{routes => v2}/javbus/western/series.js | 0 lib/{routes => v2}/javbus/western/star.js | 0 22 files changed, 173 insertions(+), 126 deletions(-) rename lib/{routes => v2}/javbus/genre.js (100%) rename lib/{routes => v2}/javbus/home.js (100%) create mode 100644 lib/v2/javbus/label.js create mode 100644 lib/v2/javbus/maintainer.js create mode 100644 lib/v2/javbus/radar.js create mode 100644 lib/v2/javbus/router.js rename lib/{routes => v2}/javbus/series.js (100%) rename lib/{routes => v2}/javbus/star.js (100%) create mode 100644 lib/v2/javbus/studio.js rename lib/{routes => v2}/javbus/uncensored/genre.js (100%) rename lib/{routes => v2}/javbus/uncensored/home.js (100%) rename lib/{routes => v2}/javbus/uncensored/series.js (100%) rename lib/{routes => v2}/javbus/uncensored/star.js (100%) rename lib/{routes => v2}/javbus/util.js (96%) rename lib/{routes => v2}/javbus/western/genre.js (100%) rename lib/{routes => v2}/javbus/western/home.js (100%) rename lib/{routes => v2}/javbus/western/series.js (100%) rename lib/{routes => v2}/javbus/western/star.js (100%) diff --git a/assets/radar-rules.js b/assets/radar-rules.js index f1c0d2251..35fca4ac7 100644 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -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', '.': [ diff --git a/docs/multimedia.md b/docs/multimedia.md index 7ab091dd8..d6f9ae8d1 100644 --- a/docs/multimedia.md +++ b/docs/multimedia.md @@ -413,6 +413,14 @@ BT 之家的域名会变更,本路由以 为默认 +### 制作商 + + + +### 发行商 + + + ### 首页 / 步兵 diff --git a/lib/radar-rules.js b/lib/radar-rules.js index 046c850d9..46a87dfe7 100644 --- a/lib/radar-rules.js +++ b/lib/radar-rules.js @@ -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', '.': [ diff --git a/lib/router.js b/lib/router.js index 9bdb1fac0..c20331d92 100644 --- a/lib/router.js +++ b/lib/router.js @@ -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')); diff --git a/lib/routes/javbus/genre.js b/lib/v2/javbus/genre.js similarity index 100% rename from lib/routes/javbus/genre.js rename to lib/v2/javbus/genre.js diff --git a/lib/routes/javbus/home.js b/lib/v2/javbus/home.js similarity index 100% rename from lib/routes/javbus/home.js rename to lib/v2/javbus/home.js diff --git a/lib/v2/javbus/label.js b/lib/v2/javbus/label.js new file mode 100644 index 000000000..756b80644 --- /dev/null +++ b/lib/v2/javbus/label.js @@ -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); +}; diff --git a/lib/v2/javbus/maintainer.js b/lib/v2/javbus/maintainer.js new file mode 100644 index 000000000..7b2104ac4 --- /dev/null +++ b/lib/v2/javbus/maintainer.js @@ -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'], +}; diff --git a/lib/v2/javbus/radar.js b/lib/v2/javbus/radar.js new file mode 100644 index 000000000..7a2e51064 --- /dev/null +++ b/lib/v2/javbus/radar.js @@ -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, +}; diff --git a/lib/v2/javbus/router.js b/lib/v2/javbus/router.js new file mode 100644 index 000000000..8e8df7057 --- /dev/null +++ b/lib/v2/javbus/router.js @@ -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')); +}; diff --git a/lib/routes/javbus/series.js b/lib/v2/javbus/series.js similarity index 100% rename from lib/routes/javbus/series.js rename to lib/v2/javbus/series.js diff --git a/lib/routes/javbus/star.js b/lib/v2/javbus/star.js similarity index 100% rename from lib/routes/javbus/star.js rename to lib/v2/javbus/star.js diff --git a/lib/v2/javbus/studio.js b/lib/v2/javbus/studio.js new file mode 100644 index 000000000..7f88abbbb --- /dev/null +++ b/lib/v2/javbus/studio.js @@ -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); +}; diff --git a/lib/routes/javbus/uncensored/genre.js b/lib/v2/javbus/uncensored/genre.js similarity index 100% rename from lib/routes/javbus/uncensored/genre.js rename to lib/v2/javbus/uncensored/genre.js diff --git a/lib/routes/javbus/uncensored/home.js b/lib/v2/javbus/uncensored/home.js similarity index 100% rename from lib/routes/javbus/uncensored/home.js rename to lib/v2/javbus/uncensored/home.js diff --git a/lib/routes/javbus/uncensored/series.js b/lib/v2/javbus/uncensored/series.js similarity index 100% rename from lib/routes/javbus/uncensored/series.js rename to lib/v2/javbus/uncensored/series.js diff --git a/lib/routes/javbus/uncensored/star.js b/lib/v2/javbus/uncensored/star.js similarity index 100% rename from lib/routes/javbus/uncensored/star.js rename to lib/v2/javbus/uncensored/star.js diff --git a/lib/routes/javbus/util.js b/lib/v2/javbus/util.js similarity index 96% rename from lib/routes/javbus/util.js rename to lib/v2/javbus/util.js index 483d64dff..ead75cee0 100644 --- a/lib/routes/javbus/util.js +++ b/lib/v2/javbus/util.js @@ -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; - } -}; + }); diff --git a/lib/routes/javbus/western/genre.js b/lib/v2/javbus/western/genre.js similarity index 100% rename from lib/routes/javbus/western/genre.js rename to lib/v2/javbus/western/genre.js diff --git a/lib/routes/javbus/western/home.js b/lib/v2/javbus/western/home.js similarity index 100% rename from lib/routes/javbus/western/home.js rename to lib/v2/javbus/western/home.js diff --git a/lib/routes/javbus/western/series.js b/lib/v2/javbus/western/series.js similarity index 100% rename from lib/routes/javbus/western/series.js rename to lib/v2/javbus/western/series.js diff --git a/lib/routes/javbus/western/star.js b/lib/v2/javbus/western/star.js similarity index 100% rename from lib/routes/javbus/western/star.js rename to lib/v2/javbus/western/star.js