diff --git a/assets/radar-rules.js b/assets/radar-rules.js index 19eb612f8f..399b248c7c 100644 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -2095,4 +2095,15 @@ }, ], }, + 'manxiaosi.com': { + _name: '漫小肆', + '.': [ + { + title: '漫画更新', + docs: 'https://docs.rsshub.app/anime.html#man-xiao-si', + source: '/book/:id', + target: '/manxiaosi/book/:id', + } + ], + }, }); diff --git a/docs/anime.md b/docs/anime.md index 34d0daa912..8f01606e26 100644 --- a/docs/anime.md +++ b/docs/anime.md @@ -337,3 +337,9 @@ pageClass: routes ### 最新汉化 + +## 漫小肆 + +### 漫画更新 + + diff --git a/lib/router.js b/lib/router.js index 3a38c1db51..061e018b74 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2956,4 +2956,10 @@ router.get('/ngbj/cat/:cat', require('./routes/niaogebiji/cat')); // 东方我乐多丛志 router.get('/touhougarakuta/:language/:type', require('./routes/touhougarakuta')); +// 漫小肆 +router.get('/manxiaosi/book/:id', require('./routes/manxiaosi/book')); + +// 吉林大学校内通知 +router.get('/jlu/oa', require('./routes/universities/jlu/oa')); + module.exports = router; diff --git a/lib/routes/manxiaosi/book.js b/lib/routes/manxiaosi/book.js new file mode 100644 index 0000000000..c801882ea4 --- /dev/null +++ b/lib/routes/manxiaosi/book.js @@ -0,0 +1,42 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const host = 'http://www.manxiaosi.com'; +const ua = 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Mobile Safari/537.36'; + +module.exports = async (ctx) => { + const id = ctx.params.id; + const url = host + `/book/${id}`; + const response = await got.get(url); + const $ = cheerio.load(response.data); + const list = $('#detail-list-select > li > a').reverse().slice(0, 10).get(); + + const items = await Promise.all( + list.map(async (item) => { + item = $(item); + const itemLink = host + item.attr('href'); + const simple = { + title: item.text(), + link: itemLink, + }; + const details = await ctx.cache.tryGet(itemLink, async () => { + // 具体页面限制手机UA + const response = await got.get(itemLink, { + headers: { + 'user-agent': ua, + }, + }); + const $ = cheerio.load(response.body); + return { + description: $('div#cp_img').html(), + }; + }); + return Promise.resolve(Object.assign({}, simple, details)); + }) + ); + ctx.state.data = { + title: '漫小肆 ' + $('div.info > h1').text(), + link: url, + description: '漫小肆 ' + $('div.info > h1').text(), + item: items, + }; +};