mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
feat: 风之动漫可全文输出漫画内容
This commit is contained in:
+1
-1
@@ -288,7 +288,7 @@ pageClass: routes
|
||||
|
||||
### 风之动漫
|
||||
|
||||
<Route author="geeeeoff" path="/fzdm/manhua/:id" example="/fzdm/manhua/39" :paramsDesc="['漫画ID']"/>
|
||||
<Route author="geeeeoff zytomorrow" path="/fzdm/manhua/:id/:nums?" example="/fzdm/manhua/39/2" :paramsDesc="['漫画ID', '最新的n话, 默认为最新1话']" anticrawler="1"/>
|
||||
|
||||
## 海猫吧
|
||||
|
||||
|
||||
+1
-1
@@ -2931,7 +2931,7 @@ router.get('/grubstreet', require('./routes/grubstreet/index'));
|
||||
router.get('/manhuadui/manhua/:name/:serial?', require('./routes/manhuadui/manhua'));
|
||||
|
||||
// 风之漫画
|
||||
router.get('/fzdm/manhua/:id', require('./routes/fzdm/manhua'));
|
||||
router.get('/fzdm/manhua/:id/:nums?', require('./routes/fzdm/manhua'));
|
||||
|
||||
// Aljazeera 半岛网
|
||||
router.get('/aljazeera/news', require('./routes/aljazeera/news'));
|
||||
|
||||
@@ -2,8 +2,42 @@ const got = require('@/utils/got');
|
||||
const host = 'https://manhua.fzdm.com';
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
const get_pic = (id, chapert, caches) => {
|
||||
const picUrlPattern = RegExp(/var (mhurl1|mhurl)="(.*?)";/);
|
||||
return caches.tryGet(`${host}/${id}/${chapert}/`, async () => {
|
||||
let is_last_page = false;
|
||||
let index = 0;
|
||||
let pic_content = '';
|
||||
while (!is_last_page) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const response = await got.get(`${host}/${id}/${chapert}/index_${index}.html`, {
|
||||
headers: {
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
|
||||
Host: 'manhua.fzdm.com',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
Connection: 'keep-alive',
|
||||
},
|
||||
});
|
||||
const data = response.data;
|
||||
if (response.data !== undefined) {
|
||||
const picurl = data.match(picUrlPattern);
|
||||
pic_content += `<img src='http://www-mipengine-org.mipcdn.com/i/p5.manhuapan.com/${picurl[picurl.length - 1]}'/><br/>`;
|
||||
} else {
|
||||
pic_content += '';
|
||||
is_last_page = true;
|
||||
}
|
||||
if (data.match('最后一页了') !== null) {
|
||||
is_last_page = true;
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
return pic_content;
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const id = ctx.params.id;
|
||||
const nums = ctx.params.nums || 1;
|
||||
const comicPage = host + `/${id}/`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
@@ -13,16 +47,24 @@ module.exports = async (ctx) => {
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('div#content > li > a');
|
||||
const comicTitle = $('div#content > img').attr('alt').replace(/漫画/, '');
|
||||
const chapter_detail = await Promise.all(
|
||||
list.splice(0, nums).map(async (item) => {
|
||||
const pic_content = await get_pic(id, $(item).attr('href').replace('/', ''), ctx.cache);
|
||||
return {
|
||||
title: $(item).text().trim(),
|
||||
description: pic_content,
|
||||
link: item.link,
|
||||
};
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title: '风之动漫 - ' + comicTitle,
|
||||
link: comicPage,
|
||||
description: '风之动漫',
|
||||
item: list
|
||||
.map((i, item) => ({
|
||||
title: $(item).text().trim(),
|
||||
description: $(item).text().trim(),
|
||||
link: comicPage + $(item).attr('href'),
|
||||
}))
|
||||
.get(),
|
||||
item: chapter_detail.map((item) => ({
|
||||
title: item.title,
|
||||
description: item.description,
|
||||
link: item.link,
|
||||
})),
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user