From 18dadf577b5938fcae3f5d4f996c827192cd486a Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Mon, 25 Jul 2022 01:25:19 +0800 Subject: [PATCH] feat(route): add Neat Download Manager Download (#10320) --- docs/en/program-update.md | 6 +++ docs/program-update.md | 6 +++ lib/v2/neatdownloadmanager/download.js | 50 ++++++++++++++++++++++++ lib/v2/neatdownloadmanager/maintainer.js | 3 ++ lib/v2/neatdownloadmanager/radar.js | 13 ++++++ lib/v2/neatdownloadmanager/router.js | 3 ++ 6 files changed, 81 insertions(+) create mode 100644 lib/v2/neatdownloadmanager/download.js create mode 100644 lib/v2/neatdownloadmanager/maintainer.js create mode 100644 lib/v2/neatdownloadmanager/radar.js create mode 100644 lib/v2/neatdownloadmanager/router.js diff --git a/docs/en/program-update.md b/docs/en/program-update.md index 0156edf30..21186bd40 100644 --- a/docs/en/program-update.md +++ b/docs/en/program-update.md @@ -311,6 +311,12 @@ Refer to [#minecraft](/en/game.html#minecraft) 见 [#Monster Hunter World](/en/game.html#monster-hunter-world) +## Neat Download Manager + +### Download + + + ## Nintendo Switch ### Switch System Update(Japan) diff --git a/docs/program-update.md b/docs/program-update.md index 06a612e6c..e7b80a996 100644 --- a/docs/program-update.md +++ b/docs/program-update.md @@ -348,6 +348,12 @@ pageClass: routes +## Neat Download Manager + +### Download + + + ## Nintendo Switch ### Switch 本体更新情报(日本) diff --git a/lib/v2/neatdownloadmanager/download.js b/lib/v2/neatdownloadmanager/download.js new file mode 100644 index 000000000..b30372563 --- /dev/null +++ b/lib/v2/neatdownloadmanager/download.js @@ -0,0 +1,50 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const os = (ctx.params.os ?? '').toLowerCase(); + + const rootUrl = 'https://www.neatdownloadmanager.com'; + const currentUrl = `${rootUrl}/index.php`; + + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = cheerio.load(response.data); + + const items = $('.p1') + .toArray() + .filter((item) => { + item = $(item); + const isMacOS = /^dmg/.test(item.text()); + + if (os !== '') { + if (os === 'macos') { + return isMacOS; + } else { + return !isMacOS; + } + } + + return true; + }) + .map((item) => { + item = $(item); + + const text = item.text(); + const version = text.match(/\(ver (.*?)\)/)[1]; + + return { + title: `[${/^dmg/.test(text) ? 'macOS' : 'Windows'}] ${text}`, + link: `${rootUrl}${item.prev().find('a').attr('href')}#${version}`, + }; + }); + + ctx.state.data = { + title: 'Neat Download Manager', + link: currentUrl, + item: items, + }; +}; diff --git a/lib/v2/neatdownloadmanager/maintainer.js b/lib/v2/neatdownloadmanager/maintainer.js new file mode 100644 index 000000000..266b822a2 --- /dev/null +++ b/lib/v2/neatdownloadmanager/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/download/:os?': ['nczitzk'], +}; diff --git a/lib/v2/neatdownloadmanager/radar.js b/lib/v2/neatdownloadmanager/radar.js new file mode 100644 index 000000000..41de0d3f9 --- /dev/null +++ b/lib/v2/neatdownloadmanager/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'neatdownloadmanager.com': { + _name: 'Neat Download Manager', + '.': [ + { + title: 'Download', + docs: 'https://docs.rsshub.app/program-update.html#neat-download-manager-download', + source: ['/index.php', '/'], + target: '/neatdownloadmanager/download/:os?', + }, + ], + }, +}; diff --git a/lib/v2/neatdownloadmanager/router.js b/lib/v2/neatdownloadmanager/router.js new file mode 100644 index 000000000..f1d7cef53 --- /dev/null +++ b/lib/v2/neatdownloadmanager/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/download/:os?', require('./download')); +};