diff --git a/assets/radar-rules.js b/assets/radar-rules.js
index 50efe73161..9668f2b068 100644
--- a/assets/radar-rules.js
+++ b/assets/radar-rules.js
@@ -3041,6 +3041,17 @@
},
],
},
+ 'macwk.com': {
+ _name: 'MacWk',
+ '.': [
+ {
+ title: '应用更新',
+ docs: 'https://docs.rsshub.app/program-update.html#macwk',
+ source: '/soft/:name',
+ target: '/macwk/soft/:name' ,
+ },
+ ],
+ },
'zyshow.net': {
www: [
{
diff --git a/docs/program-update.md b/docs/program-update.md
index 2e058e139d..e93a2016c7 100644
--- a/docs/program-update.md
+++ b/docs/program-update.md
@@ -236,6 +236,12 @@ pageClass: routes
+## MacWk
+
+### 应用更新
+
+
+
## ManicTime
diff --git a/lib/router.js b/lib/router.js
index c73e36bd54..9d944a391e 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -4140,6 +4140,9 @@ router.get('/caus/:category?', require('./routes/caus'));
// 摩点
router.get('/modian/zhongchou/:category?/:sort?/:status?', require('./routes/modian/zhongchou'));
+// MacWk
+router.get('/macwk/soft/:name', require('./routes/macwk/soft'));
+
// 世界计划 多彩舞台 feat.初音未来 (ProjectSekai)
router.get('/pjsk/news', require('./routes/pjsk/news'));
@@ -4155,4 +4158,5 @@ router.get('/tanchinese/:category?', require('./routes/tanchinese'));
// Harvard
router.get('/harvard/health/blog', require('./routes/universities/harvard/health/blog'));
+
module.exports = router;
diff --git a/lib/routes/macwk/soft.js b/lib/routes/macwk/soft.js
new file mode 100644
index 0000000000..d80c65076c
--- /dev/null
+++ b/lib/routes/macwk/soft.js
@@ -0,0 +1,32 @@
+const got = require('@/utils/got');
+const queryString = require('query-string');
+const { parseDate } = require('@/utils/parse-date');
+
+module.exports = async (ctx) => {
+ const name = ctx.params.name;
+ const url = `https://api.macwk.com/api/items/soft?${queryString.stringify({
+ 'filter[slug][eq]': name,
+ fields: 'id,title,description',
+ })}`;
+ const res = await got.get(url);
+ const data = res.data.data[0];
+ const versionsRes = await got.get(
+ `https://api.macwk.com/api/items/soft_version?${queryString.stringify({
+ 'filter[softid][eq]': data.id,
+ })}`
+ );
+ const items = versionsRes.data.data.map((item) => ({
+ title: `${data.title} ${item.version}`,
+ pubDate: parseDate(item.created_on, 'YYYY/MM/DD HH:mm:ss'),
+ description: item.download.reduce((desc, download) => `${desc}${download.name}${download.password ? `
密码:${download.password}
` : ''}
`, ''),
+ link: `https://macwk.com/soft/${name}`,
+ guid: `${name} ${item.version}`,
+ }));
+
+ ctx.state.data = {
+ title: `${data.title} 的软件更新`,
+ link: `https://macwk.com/soft/${name}`,
+ description: data.description,
+ item: items,
+ };
+};