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, + }; +};