diff --git a/docs/anime.md b/docs/anime.md
index 789c6e45f1..e89d871e22 100644
--- a/docs/anime.md
+++ b/docs/anime.md
@@ -248,6 +248,12 @@ pageClass: routes
+## 风之动漫
+
+### 风之动漫
+
+
+
## 海猫吧
### 漫画更新
@@ -266,6 +272,12 @@ pageClass: routes
+## 漫画堆
+
+### 漫画
+
+
+
## 三界异次元
### 三界异次元
diff --git a/lib/router.js b/lib/router.js
index 57ebe51078..a518b0bcf1 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -2736,6 +2736,12 @@ router.get('/initium/:type?/:language?', require('./routes/initium/full'));
// Grub Street
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'));
+
// Aljazeera 半岛网
router.get('/aljazeera/news', require('./routes/aljazeera/news'));
diff --git a/lib/routes/fzdm/manhua.js b/lib/routes/fzdm/manhua.js
new file mode 100644
index 0000000000..8d47d5fe83
--- /dev/null
+++ b/lib/routes/fzdm/manhua.js
@@ -0,0 +1,28 @@
+const got = require('@/utils/got');
+const host = 'https://manhua.fzdm.com';
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const id = ctx.params.id;
+ const comicPage = host + `/${id}/`;
+ const response = await got({
+ method: 'get',
+ url: comicPage,
+ });
+ const data = response.data;
+ const $ = cheerio.load(data);
+ const list = $('div#content > li > a');
+ const comicTitle = $('div#content > img').attr('alt').replace(/漫画/, '');
+ 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(),
+ };
+};
diff --git a/lib/routes/manhuadui/manhua.js b/lib/routes/manhuadui/manhua.js
new file mode 100644
index 0000000000..367bde5da4
--- /dev/null
+++ b/lib/routes/manhuadui/manhua.js
@@ -0,0 +1,36 @@
+const got = require('@/utils/got');
+const host = 'https://www.manhuadui.com';
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const name = ctx.params.name;
+ const serial = parseInt(ctx.params.serial);
+ const comicPage = host + `/manhua/${name}/`;
+ const response = await got({
+ method: 'get',
+ url: comicPage,
+ });
+ const data = response.data;
+ const $ = cheerio.load(data);
+ const contentLength = $('div.zj_list_con').length;
+ const comicTitle = $('div.comic_deCon > h1').text().trim();
+ const comicDescription = $('p.comic_deCon_d').text().trim();
+ let list = $('div.zj_list_con')
+ .eq(serial - 1)
+ .find('ul > li > a');
+ if (isNaN(serial) || serial <= 0 || contentLength < serial) {
+ list = $('div.zj_list_con > ul > li > a');
+ }
+ ctx.state.data = {
+ title: '漫画堆 - ' + comicTitle,
+ link: comicPage,
+ description: comicDescription,
+ item: list
+ .map((i, item) => ({
+ title: $(item).attr('title').trim(),
+ description: $(item).attr('title').trim(),
+ link: host + $(item).attr('href'),
+ }))
+ .get(),
+ };
+};