From 997299f2716a6e044cfb4fdf28e3f9569c4c9300 Mon Sep 17 00:00:00 2001 From: Fatpandac <1779196284@qq.com> Date: Fri, 1 Apr 2022 18:39:08 +0800 Subject: [PATCH] feat(route): npm (#9437) --- docs/en/program-update.md | 6 +++++ docs/program-update.md | 6 +++++ lib/v2/npm/maintainer.js | 3 +++ lib/v2/npm/package.js | 45 ++++++++++++++++++++++++++++++++ lib/v2/npm/radar.js | 13 +++++++++ lib/v2/npm/router.js | 3 +++ lib/v2/npm/templates/package.art | 10 +++++++ 7 files changed, 86 insertions(+) create mode 100644 lib/v2/npm/maintainer.js create mode 100644 lib/v2/npm/package.js create mode 100644 lib/v2/npm/radar.js create mode 100644 lib/v2/npm/router.js create mode 100644 lib/v2/npm/templates/package.art diff --git a/docs/en/program-update.md b/docs/en/program-update.md index 88a60b886aa2c7..feb4b429dbee8d 100644 --- a/docs/en/program-update.md +++ b/docs/en/program-update.md @@ -269,6 +269,12 @@ Refer to [#minecraft](/en/game.html#minecraft) 见 [#nintendo](/game.html#nintendo) +## NPM + +### Package + + + ## Nvidia Web Driver ### Changelog diff --git a/docs/program-update.md b/docs/program-update.md index b3ce8e2b337884..5e796f71f32077 100644 --- a/docs/program-update.md +++ b/docs/program-update.md @@ -318,6 +318,12 @@ pageClass: routes 见 [#nintendo](/game.html#nintendo) +## NPM + +### 包 + + + ## Nvidia Web Driver ### 更新日志 diff --git a/lib/v2/npm/maintainer.js b/lib/v2/npm/maintainer.js new file mode 100644 index 00000000000000..c1ee34952e2625 --- /dev/null +++ b/lib/v2/npm/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/package/:name': ['Fatpandac'], +}; diff --git a/lib/v2/npm/package.js b/lib/v2/npm/package.js new file mode 100644 index 00000000000000..698f45fd559354 --- /dev/null +++ b/lib/v2/npm/package.js @@ -0,0 +1,45 @@ +const got = require('@/utils/got'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const name = ctx.params.name; + const packageDownloadLastMonthAPI = `https://api.npmjs.org/downloads/point/last-month/${name}`; // 按月统计 + const packageDownloadLastWeekAPI = `https://api.npmjs.org/downloads/point/last-week/${name}`; // 按周统计 + const packageDownloadLastDayAPI = `https://api.npmjs.org/downloads/point/last-day/${name}`; // 按天统计 + const packageVersionAPI = `https://registry.npmjs.org/${name}`; // 包基本信息 + + const downloadCountLastMonthRes = await got(packageDownloadLastMonthAPI).json(); + const downloadCountLastWeekRes = await got(packageDownloadLastWeekAPI).json(); + const downloadCountLastDayRes = await got(packageDownloadLastDayAPI).json(); + const packageVersionRes = await got(packageVersionAPI).json(); + + const packageVersion = packageVersionRes.time; + const packageVersionList = []; + for (const key in packageVersion) { + packageVersionList.push({ + version: key, + time: packageVersion[key], + }); + } + packageVersionList.reverse(); + + ctx.state.data = { + title: `${name} - npm`, + link: `https://www.npmjs.com/package/${name}`, + description: `${name} - npm`, + item: [ + { + title: `${name} - npm`, + description: art(path.join(__dirname, 'templates/package.art'), { + packageDownloadCountLastMonth: downloadCountLastMonthRes.downloads, + packageDownloadCountLastWeek: downloadCountLastWeekRes.downloads, + packageDownloadCountLastDay: downloadCountLastDayRes.downloads, + packageVersion: packageVersionList, + }), + link: `https://www.npmjs.com/package/${name}`, + guid: `https://www.npmjs.com/package/${name}${packageVersion.modified}`, + }, + ], + }; +}; diff --git a/lib/v2/npm/radar.js b/lib/v2/npm/radar.js new file mode 100644 index 00000000000000..b02f83dbdcadf1 --- /dev/null +++ b/lib/v2/npm/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'npmjs.com': { + _name: 'npm', + '.': [ + { + title: '包', + docs: 'https://docs.rsshub.app/program-update.html#npm', + source: ['/package/:name'], + target: '/npm/package/:name', + }, + ], + }, +}; diff --git a/lib/v2/npm/router.js b/lib/v2/npm/router.js new file mode 100644 index 00000000000000..89fd149fb5003d --- /dev/null +++ b/lib/v2/npm/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/package/:name', require('./package')); +}; diff --git a/lib/v2/npm/templates/package.art b/lib/v2/npm/templates/package.art new file mode 100644 index 00000000000000..db7b75a365e739 --- /dev/null +++ b/lib/v2/npm/templates/package.art @@ -0,0 +1,10 @@ +

Download

+

Last Day: {{packageDownloadCountLastDay}}

+

Last week: {{packageDownloadCountLastWeek}}

+

Last month: {{packageDownloadCountLastMonth}}

+
+

Version

+{{ each packageVersion}} +

{{$value.version}}: {{$value.time}}

+{{/each}} +