From d169b9c37f9853dc1e8869d1bae8eb676af7f16b Mon Sep 17 00:00:00 2001 From: Zhengyi <10750252+fuzy112@users.noreply.github.com> Date: Wed, 21 Jun 2023 17:46:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(route):=20=E5=9B=BD=E5=AE=B6=E7=A8=8E?= =?UTF-8?q?=E5=8A=A1=E6=80=BB=E5=B1=80=20-=20=E6=9C=80=E6=96=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20(#11960)=20(#12685)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(route): 国家税务总局 - 最新文件 (#11960) * refactor(route): use WHATWG URL API for chinatax --- lib/router.js | 4 ++-- lib/{routes => v2}/gov/chinatax/latest.js | 22 ++++++++++++++-------- lib/v2/gov/maintainer.js | 1 + lib/v2/gov/radar.js | 11 +++++++++++ lib/v2/gov/router.js | 1 + 5 files changed, 29 insertions(+), 10 deletions(-) rename lib/{routes => v2}/gov/chinatax/latest.js (55%) diff --git a/lib/router.js b/lib/router.js index 95873d3ead..6ce7c9eff0 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2875,8 +2875,8 @@ router.get('/dcinside/board/:id', lazyloadRouteHandler('./routes/dcinside/board' // 企鹅电竞 router.get('/egameqq/room/:id', lazyloadRouteHandler('./routes/tencent/egame/room')); -// 国家税务总局 -router.get('/gov/chinatax/latest', lazyloadRouteHandler('./routes/gov/chinatax/latest')); +// 国家税务总局 migrated to v2 +// router.get('/gov/chinatax/latest', lazyloadRouteHandler('./routes/gov/chinatax/latest')); // 荔枝FM router.get('/lizhi/user/:id', lazyloadRouteHandler('./routes/lizhi/user')); diff --git a/lib/routes/gov/chinatax/latest.js b/lib/v2/gov/chinatax/latest.js similarity index 55% rename from lib/routes/gov/chinatax/latest.js rename to lib/v2/gov/chinatax/latest.js index 741a685aa7..e5ea8ddeab 100644 --- a/lib/routes/gov/chinatax/latest.js +++ b/lib/v2/gov/chinatax/latest.js @@ -1,4 +1,3 @@ -const url = require('url'); const got = require('@/utils/got'); const cheerio = require('cheerio'); @@ -17,19 +16,26 @@ module.exports = async (ctx) => { const a = item.find('a'); return { title: a.text(), - link: url.resolve(`http://www.chinatax.gov.cn`, a.attr('href')), + link: new URL(a.attr('href'), `http://www.chinatax.gov.cn`).toString(), }; }) .get(); - const items = await Promise.all( list.map((item) => ctx.cache.tryGet(item.link, async () => { - const res = await got({ method: 'get', url: item.link }); - const content = cheerio.load(res.data); - item.pubDate = content('meta[name="PubDate"]').attr('content'); - item.description = content('#fontzoom').html(); - return item; + try { + const res = await got({ method: 'get', url: item.link }); + const content = cheerio.load(res.data); + item.pubDate = content('meta[name="PubDate"]').attr('content'); + item.description = content('#fontzoom').html(); + return item; + } catch (err) { + if (err.name === 'HTTPError') { + item.description = err.message; + return item; + } + throw err; + } }) ) ); diff --git a/lib/v2/gov/maintainer.js b/lib/v2/gov/maintainer.js index 95610711b5..2e6c8a5cef 100644 --- a/lib/v2/gov/maintainer.js +++ b/lib/v2/gov/maintainer.js @@ -2,6 +2,7 @@ module.exports = { // ministry '/cac/:path+': ['drgnchan'], '/ccdi/:path+': ['bigfei'], + '/chinatax/latest': ['nczitzk', 'fuzy112'], '/cmse/xwzx/zhxw': ['nczitzk'], '/cmse/xwzx/yzjz': ['nczitzk'], '/cmse/gfgg': ['nczitzk'], diff --git a/lib/v2/gov/radar.js b/lib/v2/gov/radar.js index 535cd8dbc4..9742d261f4 100644 --- a/lib/v2/gov/radar.js +++ b/lib/v2/gov/radar.js @@ -341,6 +341,17 @@ module.exports = { }, ], }, + 'chinatax.gov.cn': { + _name: '国家税务总局', + www: [ + { + title: '国家税务总局 - 最新文件', + docs: 'https://docs.rsshub.app/government.html#guo-jia-shui-wu-zong-ju', + source: ['/*'], + target: '/gov/chinatax/latest', + }, + ], + }, 'cmse.gov.cn': { _name: '中国载人航天', www: [ diff --git a/lib/v2/gov/router.js b/lib/v2/gov/router.js index a82b03e224..7f0469e88b 100644 --- a/lib/v2/gov/router.js +++ b/lib/v2/gov/router.js @@ -2,6 +2,7 @@ module.exports = function (router) { // ministry router.get(/cac(\/[\w/-]+)?/, require('./cac/index')); router.get(/ccdi(\/[\w/-]+)?/, require('./ccdi')); + router.get('/chinatax/latest', require('./chinatax/latest')); router.get('/cmse/fxrw', require('./cmse/fxrw')); router.get(/cmse(\/[\w/-]+)?/, require('./cmse')); router.get(/cnnic(\/[\w/-]+)?/, require('./cnnic'));