diff --git a/docs/en/game.md b/docs/en/game.md
index bfca65aa8b..a8d269ea7b 100755
--- a/docs/en/game.md
+++ b/docs/en/game.md
@@ -280,3 +280,13 @@ Steam provides some official RSS feeds:
### Discussions
+
+## War Thunder
+
+### News
+
+
+
+News data from https://warthunder.com/en/news/
+
+
\ No newline at end of file
diff --git a/docs/game.md b/docs/game.md
index a8de4e39d7..5bfc52949a 100644
--- a/docs/game.md
+++ b/docs/game.md
@@ -493,6 +493,15 @@ Steam 新闻中心支持官方的 RSS 订阅:
+## War Thunder
+
+### 英文News
+
+
+News的数据来自 https://warthunder.com/en/news/
+
+
+
## 巴哈姆特
### GNN 新聞
diff --git a/lib/v2/warthunder/maintainer.js b/lib/v2/warthunder/maintainer.js
new file mode 100644
index 0000000000..5a72442e82
--- /dev/null
+++ b/lib/v2/warthunder/maintainer.js
@@ -0,0 +1,3 @@
+module.exports = {
+ '/news': ['axojhf'],
+};
diff --git a/lib/v2/warthunder/news.js b/lib/v2/warthunder/news.js
new file mode 100644
index 0000000000..a15727982f
--- /dev/null
+++ b/lib/v2/warthunder/news.js
@@ -0,0 +1,47 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const path = require('path');
+const { art } = require('@/utils/render');
+const { parseDate } = require('@/utils/parse-date');
+const renderDescription = (desc) => art(path.join(__dirname, 'templates/description.art'), desc);
+
+module.exports = async (ctx) => {
+ const rootUrl = 'https://warthunder.com/en/news/';
+
+ const response = await got(rootUrl);
+
+ const $ = cheerio.load(response.data);
+
+ const pageFace = $('div.showcase__item.widget')
+ .map((_, item) => {
+ item = $(item);
+ const pubDate = parseDate(item.find('div.widget__content > ul > li').text(), 'D MMMM YYYY');
+ const category = [];
+ if (item.find('div.widget__pin').length !== 0) {
+ category.push('pinned');
+ }
+ if (item.find('a.widget__decal').length !== 0) {
+ category.push('decal');
+ }
+ if (item.find('div.widget__badge').length !== 0) {
+ category.push(item.find('div.widget__badge').text());
+ }
+ return {
+ link: `https://warthunder.com${item.find('a.widget__link').attr('href')}`,
+ title: item.find('div.widget__content > div.widget__title').text(),
+ pubDate,
+ description: renderDescription({
+ description: item.find('div.widget__content > div.widget__comment').text(),
+ imglink: item.find('div.widget__poster > img.widget__poster-media').attr('data-src'),
+ }),
+ category,
+ };
+ })
+ .get();
+
+ ctx.state.data = {
+ title: 'War Thunder News',
+ link: 'https://warthunder.com/en/news/',
+ item: pageFace,
+ };
+};
diff --git a/lib/v2/warthunder/radar.js b/lib/v2/warthunder/radar.js
new file mode 100644
index 0000000000..e8ecabc059
--- /dev/null
+++ b/lib/v2/warthunder/radar.js
@@ -0,0 +1,13 @@
+module.exports = {
+ 'warthunder.com': {
+ _name: 'War Thunder',
+ '.': [
+ {
+ title: 'News',
+ docs: 'https://docs.rsshub.app/game.html#war-thunder-ying-wen-news',
+ source: ['/en/news', '/'],
+ target: '/warthunder/news',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/warthunder/router.js b/lib/v2/warthunder/router.js
new file mode 100644
index 0000000000..630036b8e4
--- /dev/null
+++ b/lib/v2/warthunder/router.js
@@ -0,0 +1,3 @@
+module.exports = (router) => {
+ router.get('/news', require('./news'));
+};
diff --git a/lib/v2/warthunder/templates/description.art b/lib/v2/warthunder/templates/description.art
new file mode 100644
index 0000000000..48f2982380
--- /dev/null
+++ b/lib/v2/warthunder/templates/description.art
@@ -0,0 +1 @@
+{{description}}
\ No newline at end of file