Skip to content

Commit

Permalink
feat(route): Support xsijishe rank (#14006)
Browse files Browse the repository at this point in the history
* 支持司机社论坛 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

---------
  • Loading branch information
Jack Bryant authored Dec 10, 2023
1 parent 1f41a94 commit 8b10f38
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/v2/xsijishe/maintainer.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
module.exports = {
'/forum/:fid': ['akynazh'],
'/rank/:type': ['akynazh'],
};
12 changes: 12 additions & 0 deletions lib/v2/xsijishe/radar.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
],
},
};
60 changes: 60 additions & 0 deletions lib/v2/xsijishe/rank.js
Original file line number Diff line number Diff line change
@@ -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 change: 1 addition & 0 deletions lib/v2/xsijishe/router.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
module.exports = function (router) {
router.get('/forum/:fid', require('./forum'));
router.get('/rank/:type', require('./rank'));
};
4 changes: 4 additions & 0 deletions website/docs/routes/bbs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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">
Expand Down

0 comments on commit 8b10f38

Please sign in to comment.