feat(route): Support xsijishe rank (#14006)
* 支持司机社论坛 rss * rename sjs to xsijishe * Update docs/bbs.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/bbs.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/xsijishe/forum.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/xsijishe/forum.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/xsijishe/forum.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/xsijishe/radar.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * support xsijishe rank * support xsijishe rank ---------
This commit is contained in:
parent
1f41a941f6
commit
8b10f38ea0
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = {
|
||||
'/forum/:fid': ['akynazh'],
|
||||
'/rank/:type': ['akynazh'],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,6 +14,18 @@ module.exports = {
|
|||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '周排行榜',
|
||||
docs: 'https://docs.rsshub.app/routes/bbs#si-ji-she',
|
||||
source: ['/*'],
|
||||
target: '/xsijishe/rank/weekly',
|
||||
},
|
||||
{
|
||||
title: '月排行榜',
|
||||
docs: 'https://docs.rsshub.app/routes/bbs#si-ji-she',
|
||||
source: ['/*'],
|
||||
target: '/xsijishe/rank/monthly',
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const baseUrl = 'https://xsijishe.com';
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rankType = ctx.params.type;
|
||||
let title;
|
||||
let rankId;
|
||||
if (rankType === 'weekly') {
|
||||
title = '司机社综合周排行榜';
|
||||
rankId = 'nex_recons_demens';
|
||||
} else if (rankType === 'monthly') {
|
||||
title = '司机社综合月排行榜';
|
||||
rankId = 'nex_recons_demens1';
|
||||
} else {
|
||||
throw Error('Invalid rank type');
|
||||
}
|
||||
const url = `${baseUrl}/portal.php`;
|
||||
const resp = await got(url);
|
||||
const $ = cheerio.load(resp.data);
|
||||
let items = $(`#${rankId} dd`)
|
||||
.toArray()
|
||||
.map((item) => {
|
||||
item = $(item);
|
||||
const title = item.find('h5').text().trim();
|
||||
const link = item.find('a').attr('href');
|
||||
return {
|
||||
title,
|
||||
link: `${baseUrl}/${link}`,
|
||||
};
|
||||
});
|
||||
items = await Promise.all(
|
||||
items.map((item) =>
|
||||
ctx.cache.tryGet(item.link, async () => {
|
||||
const resp = await got(item.link);
|
||||
const $ = cheerio.load(resp.data);
|
||||
const firstViewBox = $('.t_f').first();
|
||||
|
||||
firstViewBox.find('img').each((_, img) => {
|
||||
img = $(img);
|
||||
if (img.attr('zoomfile')) {
|
||||
img.attr('src', img.attr('zoomfile'));
|
||||
img.removeAttr('zoomfile');
|
||||
img.removeAttr('file');
|
||||
}
|
||||
img.removeAttr('onmouseover');
|
||||
});
|
||||
|
||||
item.description = firstViewBox.html();
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
ctx.state.data = {
|
||||
title,
|
||||
link: url,
|
||||
description: title,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = function (router) {
|
||||
router.get('/forum/:fid', require('./forum'));
|
||||
router.get('/rank/:type', require('./rank'));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1005,6 +1005,10 @@ When accessing Joeyray's Bar, `SCBOY_BBS_TOKEN` needs to be filled in `environme
|
|||
|
||||
## 司机社 {#si-ji-she}
|
||||
|
||||
### 排行榜 {#si-ji-she-pai-hang-bang}
|
||||
|
||||
<Route author="akynazh" example="/xsijishe/rank/weekly" path="/xsijishe/rank/:type" paramsDesc={['排行榜类型: weekly | monthly']} radar="1"/>
|
||||
|
||||
### 论坛 {#si-ji-she-lun-tan}
|
||||
|
||||
<Route author="akynazh" example="/xsijishe/forum/51" path="/xsijishe/forum/:fid" paramsDesc={['子论坛 id']} radar="1">
|
||||
|
|
|
|||
Loading…
Reference in New Issue