diff --git a/docs/en/program-update.md b/docs/en/program-update.md
index 50f88bfcab..78a4b06a33 100644
--- a/docs/en/program-update.md
+++ b/docs/en/program-update.md
@@ -448,6 +448,12 @@ Refer to [#minecraft](/en/game.html#minecraft)
+## WizTree
+
+### What's New
+
+
+
## X410
### News
diff --git a/docs/program-update.md b/docs/program-update.md
index d4578be777..f527f2aa5c 100644
--- a/docs/program-update.md
+++ b/docs/program-update.md
@@ -535,6 +535,12 @@ pageClass: routes
+## WizTree
+
+### What's New
+
+
+
## X410
### News
diff --git a/lib/v2/diskanalyzer/maintainer.js b/lib/v2/diskanalyzer/maintainer.js
new file mode 100644
index 0000000000..21ba3c7f7a
--- /dev/null
+++ b/lib/v2/diskanalyzer/maintainer.js
@@ -0,0 +1,3 @@
+module.exports = {
+ '/whats-new': ['nczitzk'],
+};
diff --git a/lib/v2/diskanalyzer/radar.js b/lib/v2/diskanalyzer/radar.js
new file mode 100644
index 0000000000..318a5ff485
--- /dev/null
+++ b/lib/v2/diskanalyzer/radar.js
@@ -0,0 +1,13 @@
+module.exports = {
+ 'diskanalyzer.com': {
+ _name: "What's New",
+ '.': [
+ {
+ title: 'Change Log',
+ docs: 'https://docs.rsshub.app/program-update.html#wiztree-whats-new',
+ source: ['/whats-new', '/'],
+ target: '/diskanalyzer/whats-new',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/diskanalyzer/router.js b/lib/v2/diskanalyzer/router.js
new file mode 100644
index 0000000000..b56d655e47
--- /dev/null
+++ b/lib/v2/diskanalyzer/router.js
@@ -0,0 +1,3 @@
+module.exports = function (router) {
+ router.get('/whats-new', require('./whats-new'));
+};
diff --git a/lib/v2/diskanalyzer/whats-new.js b/lib/v2/diskanalyzer/whats-new.js
new file mode 100644
index 0000000000..e26da81043
--- /dev/null
+++ b/lib/v2/diskanalyzer/whats-new.js
@@ -0,0 +1,48 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const { parseDate } = require('@/utils/parse-date');
+
+module.exports = async (ctx) => {
+ const rootUrl = 'https://diskanalyzer.com';
+ const currentUrl = `${rootUrl}/whats-new`;
+
+ const response = await got({
+ method: 'get',
+ url: currentUrl,
+ });
+
+ const $ = cheerio.load(response.data);
+
+ const items = $('.blog-content h4')
+ .toArray()
+ .map((item) => {
+ item = $(item);
+
+ const title = item.text();
+
+ let description = '';
+ item.nextUntil('h4').each(function () {
+ description += $(this).html();
+ });
+ if (description === '') {
+ item.parent()
+ .nextUntil('h4')
+ .each(function () {
+ description += $(this).html();
+ });
+ }
+
+ return {
+ title,
+ link: currentUrl,
+ description,
+ pubDate: parseDate(title.match(/\((.*)\)/)[1], ['D MMMM YYYY', 'D MMM YYYY']),
+ };
+ });
+
+ ctx.state.data = {
+ title: $('title').text(),
+ link: currentUrl,
+ item: items,
+ };
+};