diff --git a/docs/forecast.md b/docs/forecast.md
index 33f0e1821c..8f8411fc10 100644
--- a/docs/forecast.md
+++ b/docs/forecast.md
@@ -72,6 +72,10 @@ pageClass: routes
+### 武汉市
+
+
+
## 香港天文台
### Current Weather Report
diff --git a/lib/router.js b/lib/router.js
index 62b0391e9f..4e92312798 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -314,6 +314,7 @@ router.get('/tingshuitz/dongguan', require('./routes/tingshuitz/dongguan'));
router.get('/tingshuitz/xian', require('./routes/tingshuitz/xian'));
router.get('/tingshuitz/yangjiang', require('./routes/tingshuitz/yangjiang'));
router.get('/tingshuitz/nanjing', require('./routes/tingshuitz/nanjing'));
+router.get('/tingshuitz/wuhan', require('./routes/tingshuitz/wuhan'));
// 米哈游
router.get('/mihoyo/bh3/:type', require('./routes/mihoyo/bh3'));
diff --git a/lib/routes/tingshuitz/wuhan.js b/lib/routes/tingshuitz/wuhan.js
new file mode 100644
index 0000000000..1e283831df
--- /dev/null
+++ b/lib/routes/tingshuitz/wuhan.js
@@ -0,0 +1,34 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const url = require('url');
+
+module.exports = async (ctx) => {
+ const baseUrl = 'https://www.whwater.com/gsfw/tstz/';
+ const response = await got({
+ method: 'get',
+ url: baseUrl,
+ });
+
+ const data = response.data;
+ const $ = cheerio.load(data);
+ const list = $('.z4');
+
+ ctx.state.data = {
+ title: $('title').text() || '停水通知 - 武汉市水务集团有限公司',
+ link: 'https://www.whwater.com/gsfw/tstz/',
+ description: $('meta[name="description"]').attr('content') || $('title').text() || '停水通知 - 武汉市水务集团有限公司',
+ item:
+ list &&
+ list
+ .map((index, item) => {
+ item = $(item);
+ return {
+ title: item.find('a').text(),
+ description: `武汉市停水通知:${item.find('a').text()}`,
+ pubDate: new Date(item.find('span').text()).toUTCString(),
+ link: `${url.resolve(baseUrl, item.find('a').attr('href'))}`,
+ };
+ })
+ .get(),
+ };
+};