fix(route): javdb alternative domain (#7536)

This commit is contained in:
Ethan Shen
2021-08-26 23:03:48 +08:00
committed by GitHub
parent cda7861683
commit 09dffad27b
11 changed files with 86 additions and 71 deletions

View File

@@ -297,7 +297,7 @@ pageClass: routes
### 主页
<Route author="nczitzk" example="/javdb/home" path="/javdb/home/:caty?/:sort?/:filter?" :paramsDesc="['分类,见下表,默认为 `有碼`', '排序,见下表,默认为 `磁鏈更新排序`', '过滤,见下表,默认为 `可下载`']">
<Route author="nczitzk" example="/javdb" path="/javdb/:category?/:sort?/:filter?" :paramsDesc="['分类,见下表,默认为 `有碼`', '排序,见下表,默认为 `磁鏈更新排序`', '过滤,见下表,默认为 `可下载`']">
分类
@@ -321,7 +321,7 @@ pageClass: routes
### 分類
<Route author="nczitzk" example="/javdb/tags/c2=5&c10=1" path="/javdb/tags/:query?/:caty?" :paramsDesc="['筛选,默认为 `c10=1`', '分类,见下表,默认为 `有碼`']">
<Route author="nczitzk" example="/javdb/tags/c2=5&c10=1" path="/javdb/tags/:query?/:category?" :paramsDesc="['筛选,默认为 `c10=1`', '分类,见下表,默认为 `有碼`']">
::: tip 提示
@@ -341,7 +341,7 @@ pageClass: routes
### 排行榜
<Route author="nczitzk" example="/javdb/rankings" path="/javdb/rankings/:caty?/:time?" :paramsDesc="['分类,见下表,默认为 `有碼`', '时间,见下表,默认为 `日榜`']">
<Route author="nczitzk" example="/javdb/rankings" path="/javdb/rankings/:category?/:time?" :paramsDesc="['分类,见下表,默认为 `有碼`', '时间,见下表,默认为 `日榜`']">
分类

View File

@@ -3477,13 +3477,14 @@ router.get('/mercari/:type/:id', lazyloadRouteHandler('./routes/mercari/index'))
router.get('/notefolio/:caty?/:order?/:time?/:query?', lazyloadRouteHandler('./routes/notefolio/index'));
// JavDB
router.get('/javdb/home/:caty?/:sort?/:filter?', lazyloadRouteHandler('./routes/javdb/home'));
router.get('/javdb/home/:category?/:sort?/:filter?', lazyloadRouteHandler('./routes/javdb'));
router.get('/javdb/search/:keyword?/:filter?', lazyloadRouteHandler('./routes/javdb/search'));
router.get('/javdb/tags/:query?/:caty?', lazyloadRouteHandler('./routes/javdb/tags'));
router.get('/javdb/actors/:id/:filter?', lazyloadRouteHandler('./routes/javdb/actors'));
router.get('/javdb/makers/:id/:filter?', lazyloadRouteHandler('./routes/javdb/makers'));
router.get('/javdb/series/:id/:filter?', lazyloadRouteHandler('./routes/javdb/series'));
router.get('/javdb/rankings/:caty?/:time?', lazyloadRouteHandler('./routes/javdb/rankings'));
router.get('/javdb/:category?/:sort?/:filter?', lazyloadRouteHandler('./routes/javdb'));
// World Economic Forum
router.get('/weforum/report/:lang?/:year?/:platform?', lazyloadRouteHandler('./routes/weforum/report'));

View File

@@ -1,11 +1,12 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.filter = ctx.params.filter || '';
const id = ctx.params.id;
const filter = ctx.params.filter || '';
const currentUrl = `${utils.rootUrl}/actors/${ctx.params.id}?t=${ctx.params.filter}`;
const currentUrl = `/actors/${id}?t=${filter}`;
const filter = {
const filters = {
'': '',
p: '可播放',
s: '單體作品',
@@ -13,7 +14,7 @@ module.exports = async (ctx) => {
c: '含字幕',
};
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
const title = `JavDB${filters[filter] === '' ? '' : ` - ${filters[filter]}`} `;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,32 +0,0 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.caty = ctx.params.caty || 'censored';
ctx.params.sort = ctx.params.sort || '2';
ctx.params.filter = ctx.params.filter || '1';
const currentUrl = `${utils.rootUrl}/${ctx.params.caty === 'censored' ? '' : ctx.params.caty}?vft=${ctx.params.filter}&vst=${ctx.params.sort}`;
const category = {
censored: '有碼',
uncensored: '無碼',
western: '歐美',
fc2: 'FC2',
};
const filter = {
0: '',
1: '可下载',
2: '含字幕',
3: '含短評',
};
const sort = {
1: '发布日期排序',
2: '磁鏈更新排序',
};
const title = `${category[ctx.params.caty]} - JavDB - ${filter[ctx.params.filter] === '' ? '|' : `${filter[ctx.params.filter]} | `}${sort[ctx.params.sort]}`;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

32
lib/routes/javdb/index.js Normal file
View File

@@ -0,0 +1,32 @@
const utils = require('./utils');
module.exports = async (ctx) => {
const category = ctx.params.caty || 'censored';
const sort = ctx.params.sort || '2';
const filter = ctx.params.filter || '1';
const currentUrl = `${category === 'censored' ? '' : category}?vft=${filter}&vst=${sort}`;
const categories = {
censored: '有碼',
uncensored: '無碼',
western: '歐美',
fc2: 'FC2',
};
const filters = {
0: '',
1: '可下载',
2: '含字幕',
3: '含短評',
};
const sorts = {
1: '发布日期排序',
2: '磁鏈更新排序',
};
const title = `${categories[category]} - JavDB - ${filters[filter] === '' ? '|' : `${filters[filter]} | `}${sorts[sort]}`;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,11 +1,12 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.filter = ctx.params.filter || '';
const id = ctx.params.id;
const filter = ctx.params.filter || '';
const currentUrl = `${utils.rootUrl}/makers/${ctx.params.id}?f=${ctx.params.filter}`;
const currentUrl = `/makers/${id}?f=${filter}`;
const filter = {
const filters = {
'': '',
playable: '可播放',
single: '單體作品',
@@ -14,7 +15,7 @@ module.exports = async (ctx) => {
preview: '預覽圖',
};
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
const title = `JavDB${filters[filter] === '' ? '' : ` - ${filters[filter]}`} `;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,10 +1,10 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.caty = ctx.params.caty || 'censored';
ctx.params.time = ctx.params.time || 'daily';
const category = ctx.params.category || 'censored';
const time = ctx.params.time || 'daily';
const currentUrl = `${utils.rootUrl}/rankings/video_${ctx.params.caty}?period=${ctx.params.time}`;
const currentUrl = `/rankings/video_${category}?period=${time}`;
const title = 'JavDB';

View File

@@ -1,12 +1,12 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.filter = ctx.params.filter || '';
ctx.params.keyword = ctx.params.keyword || '';
const filter = ctx.params.filter || '';
const keyword = ctx.params.keyword || '';
const currentUrl = `${utils.rootUrl}/search?q=${ctx.params.keyword}&f=${ctx.params.filter}`;
const currentUrl = `/search?q=${keyword}&f=${filter}`;
const filter = {
const filters = {
'': '',
playable: '可播放',
single: '單體作品',
@@ -20,7 +20,7 @@ module.exports = async (ctx) => {
preview: '預覽圖',
};
const title = `關鍵字 ${ctx.params.keyword} ${filter[ctx.params.filter] === '' ? '' : `+ ${filter[ctx.params.filter]}`} 搜索結果 - JavDB `;
const title = `關鍵字 ${keyword} ${filters[filter] === '' ? '' : `+ ${filters[filter]}`} 搜索結果 - JavDB`;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,11 +1,12 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.filter = ctx.params.filter || '';
const id = ctx.params.id;
const filter = ctx.params.filter || '';
const currentUrl = `${utils.rootUrl}/series/${ctx.params.id}?f=${ctx.params.filter}`;
const currentUrl = `/series/${id}?f=${filter}`;
const filter = {
const filters = {
'': '',
playable: '可播放',
single: '單體作品',
@@ -14,7 +15,7 @@ module.exports = async (ctx) => {
preview: '預覽圖',
};
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
const title = `JavDB${filters[filter] === '' ? '' : ` - ${filter[filter]}`} `;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,12 +1,12 @@
const utils = require('./utils');
module.exports = async (ctx) => {
ctx.params.caty = ctx.params.caty || 'censored';
ctx.params.query = ctx.params.query || '';
const category = ctx.params.category || 'censored';
const query = ctx.params.query || '';
const currentUrl = `${utils.rootUrl}/tags${ctx.params.caty === 'censored' ? '' : `/${ctx.params.caty}`}?${ctx.params.query}`;
const currentUrl = `/tags${category === 'censored' ? '' : `/${category}`}?${query}`;
const title = `JavDB${ctx.params.query === '' ? '' : ` - ${ctx.params.query}`} `;
const title = `JavDB${query === '' ? '' : ` - ${query}`} `;
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
};

View File

@@ -1,28 +1,39 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const rootUrl = 'https://javdb.com';
let rootUrl = 'https://javdb.com';
module.exports = {
rootUrl,
ProcessItems: async (ctx, currentUrl, title) => {
const response = await got({
method: 'get',
url: currentUrl,
});
let data;
const $ = cheerio.load(response.data);
try {
const response = await got({
method: 'get',
url: `${rootUrl}${currentUrl}`,
});
data = response.data;
} catch (err) {
rootUrl = rootUrl.replace('javdb', 'javdb7');
const response = await got({
method: 'get',
url: `${rootUrl}${currentUrl}`,
});
data = response.data;
}
const $ = cheerio.load(data);
$('.tags').remove();
const list = $('.grid-item a')
.slice(0, 5)
.slice(0, 15)
.map((_, item) => {
item = $(item);
return {
title: item.text(),
link: `${rootUrl}${item.attr('href')}`,
pubDate: new Date(item.find('.meta').text()).toUTCString(),
pubDate: Date.parse(item.find('.meta').text()),
};
})
.get();
@@ -32,7 +43,7 @@ module.exports = {
ctx.cache.tryGet(item.link, async () => {
const detailResponse = await got({
method: 'get',
url: item.link,
F: item.link,
});
const content = cheerio.load(detailResponse.data);
@@ -64,7 +75,7 @@ module.exports = {
return {
title: subject === '' ? title : `${subject} - ${title}`,
link: currentUrl,
link: `${rootUrl}${currentUrl}`,
item: items,
};
},