From b081d984a1ab1af1985d0c1e2da207c970c00d1a Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Thu, 21 Dec 2023 01:51:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(route):=20add=20=E4=B8=AD=E5=8D=8E?= =?UTF-8?q?=E4=BA=BA=E6=B0=91=E5=85=B1=E5=92=8C=E5=9B=BD=E5=9B=BD=E5=AE=B6?= =?UTF-8?q?=E5=8F=91=E5=B1=95=E5=92=8C=E6=94=B9=E9=9D=A9=E5=A7=94=E5=91=98?= =?UTF-8?q?=E4=BC=9A=E5=8F=91=E5=B1=95=E6=94=B9=E9=9D=A9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=20(#14088)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/router.js | 2 +- lib/v2/gov/maintainer.js | 2 + lib/v2/gov/ndrc/fggz.js | 62 +++ lib/{routes => v2}/gov/ndrc/xwdt.js | 4 +- lib/v2/gov/radar.js | 565 ++++++++++++++++++++++++++++ lib/v2/gov/router.js | 2 + website/docs/routes/government.mdx | 178 ++++++++- 7 files changed, 811 insertions(+), 4 deletions(-) create mode 100644 lib/v2/gov/ndrc/fggz.js rename lib/{routes => v2}/gov/ndrc/xwdt.js (90%) diff --git a/lib/router.js b/lib/router.js index be80f28ae5a6cd..a633fc396ae823 100644 --- a/lib/router.js +++ b/lib/router.js @@ -569,7 +569,7 @@ router.get('/gov/shanxi/rst/:category', lazyloadRouteHandler('./routes/gov/shanx router.get('/gov/hunan/notice/:type', lazyloadRouteHandler('./routes/gov/hunan/notice')); // 中华人民共和国国家发展和改革委员会 -router.get('/gov/ndrc/xwdt/:caty?', lazyloadRouteHandler('./routes/gov/ndrc/xwdt')); +// router.get('/gov/ndrc/xwdt/:caty?', lazyloadRouteHandler('./routes/gov/ndrc/xwdt')); // 中华人民共和国住房和城乡建设部 router.get('/gov/mohurd/policy', lazyloadRouteHandler('./routes/gov/mohurd/policy')); diff --git a/lib/v2/gov/maintainer.js b/lib/v2/gov/maintainer.js index fb2c0b6a30fb4e..e6aa2467e5782f 100644 --- a/lib/v2/gov/maintainer.js +++ b/lib/v2/gov/maintainer.js @@ -38,6 +38,8 @@ module.exports = { '/mofcom/article/:suffix+': ['LogicJake'], '/moj/aac/news/:type?': ['TonyRL'], '/mot/:category?': ['nczitzk'], + '/ndrc/fggz/:category?': ['nczitzk'], + '/ndrc/xwdt/:category?': ['nczitzk'], '/nea/sjzz/ghs': ['nczitzk'], '/news/:uid': ['EsuRt'], '/nifdc/:path?': ['nczitzk'], diff --git a/lib/v2/gov/ndrc/fggz.js b/lib/v2/gov/ndrc/fggz.js new file mode 100644 index 00000000000000..6a85b6f80904a9 --- /dev/null +++ b/lib/v2/gov/ndrc/fggz.js @@ -0,0 +1,62 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { category } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 25; + + const rootUrl = 'https://www.ndrc.gov.cn'; + const currentUrl = new URL(`fggz${category ? `/${category.endsWith('/') ? category : `${category}/`}` : '/'}`, rootUrl).href; + + const { data: response } = await got(currentUrl); + + const $ = cheerio.load(response); + + let items = $('ul.u-list li a') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + + return { + title: item.prop('title') || item.text(), + link: new URL(item.prop('href'), currentUrl).href, + pubDate: parseDate(item.next().text(), 'YYYY/MM/DD'), + }; + }); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + item.title = content('meta[name="ArticleTitle"]').prop('content'); + item.description = content('div.TRS_Editor').html(); + item.author = content('meta[name="ContentSource"]').prop('content'); + item.category = [...new Set([content('meta[name="ColumnName"]').prop('content'), content('meta[name="ColumnType"]').prop('content'), ...(content('meta[name="Keywords"]').prop('content').split(/,|;/) ?? [])])].filter( + (c) => c + ); + item.pubDate = timezone(parseDate(content('meta[name="PubDate"]').prop('content')), +8); + + return item; + }) + ) + ); + + const image = $('div.logo a img').prop('src'); + + ctx.state.data = { + item: items, + title: $('title').text(), + link: currentUrl, + description: $('meta[name="ColumnDescription"]').prop('content'), + language: $('html').prop('lang'), + image, + subtitle: $('meta[name="ColumnName"]').prop('content'), + author: $('meta[name="SiteName"]').prop('content'), + }; +}; diff --git a/lib/routes/gov/ndrc/xwdt.js b/lib/v2/gov/ndrc/xwdt.js similarity index 90% rename from lib/routes/gov/ndrc/xwdt.js rename to lib/v2/gov/ndrc/xwdt.js index cf15891df0b722..1f0916e1ae9d3a 100644 --- a/lib/routes/gov/ndrc/xwdt.js +++ b/lib/v2/gov/ndrc/xwdt.js @@ -2,10 +2,10 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); module.exports = async (ctx) => { - const caty = ctx.params.caty || 'xwfb'; + const category = ctx.params.category || 'xwfb'; const rootUrl = 'https://www.ndrc.gov.cn'; - const currentUrl = caty.indexOf('dt') < 0 ? `${rootUrl}/xwdt/${caty}` : `${rootUrl}/xwdt/dt/${caty}`; + const currentUrl = category.indexOf('dt') < 0 ? `${rootUrl}/xwdt/${category}` : `${rootUrl}/xwdt/dt/${category}`; const response = await got({ method: 'get', url: currentUrl, diff --git a/lib/v2/gov/radar.js b/lib/v2/gov/radar.js index 8086291d2ea8fe..9d9287eb42daed 100644 --- a/lib/v2/gov/radar.js +++ b/lib/v2/gov/radar.js @@ -1239,6 +1239,571 @@ module.exports = { }, ], }, + 'ndrc.gov.cn': { + _name: '中华人民共和国国家发展和改革委员会', + '.': [ + { + title: '新闻动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-xin-wen-dong-tai', + source: ['/xwdt/:category*'], + target: (params) => { + const category = params.category; + + return `/gov/ndrc/xwdt/${category ? `/${category.endsWith('/') ? category : `${category}/`}` : '/'}`; + }, + }, + { + title: '发展改革工作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/:category*'], + target: (params) => { + const category = params.category; + + return `/gov/ndrc/fggz/${category ? `/${category.endsWith('/') ? category : `${category}/`}` : '/'}`; + }, + }, + { + title: '机关办公 - 业务工作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jgbg/ywgz'], + target: '/gov/ndrc/fggz/jgbg/ywgz', + }, + { + title: '机关办公 - 学思践悟', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jgbg/xsjw'], + target: '/gov/ndrc/fggz/jgbg/xsjw', + }, + { + title: '发改政研 - 经济数据概览', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzy/jjsjgl'], + target: '/gov/ndrc/fggz/fgzy/jjsjgl', + }, + { + title: '发改政研 - 社会关切回应', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzy/shgqhy'], + target: '/gov/ndrc/fggz/fgzy/shgqhy', + }, + { + title: '发改政研 - 新媒体解读', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzy/xmtjd'], + target: '/gov/ndrc/fggz/fgzy/xmtjd', + }, + { + title: '发展战略和规划 - 国家发展战略和规划', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fzzlgh/gjfzgh'], + target: '/gov/ndrc/fggz/fzzlgh/gjfzgh', + }, + { + title: '发展战略和规划 - 国家级专项规划', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fzzlgh/gjjzxgh'], + target: '/gov/ndrc/fggz/fzzlgh/gjjzxgh', + }, + { + title: '发展战略和规划 - 地方发展规划', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fzzlgh/dffzgh'], + target: '/gov/ndrc/fggz/fzzlgh/dffzgh', + }, + { + title: '发展战略和规划 - 发展规划工作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fzzlgh/fzgggz'], + target: '/gov/ndrc/fggz/fzzlgh/fzgggz', + }, + { + title: '发改综合 - 国内经济监测', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc', + }, + { + title: '发改综合 - 工业经济', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/gyjj'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/gyjj', + }, + { + title: '发改综合 - 投资运行', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/tzyx'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/tzyx', + }, + { + title: '发改综合 - 市场消费', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/scxf'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/scxf', + }, + { + title: '发改综合 - 价格情况', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/jgqk'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/jgqk', + }, + { + title: '发改综合 - 财政收支', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/czsz'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/czsz', + }, + { + title: '发改综合 - 货币金融', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/hbjr'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/hbjr', + }, + { + title: '发改综合 - 就业情况', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/jyqk'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/jyqk', + }, + { + title: '发改综合 - 地区经济', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gnjjjc/dqjj'], + target: '/gov/ndrc/fggz/fgzh/gnjjjc/dqjj', + }, + { + title: '发改综合 - 国际经济监测', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjjjjc'], + target: '/gov/ndrc/fggz/fgzh/gjjjjc', + }, + { + title: '发改综合 - 先行指数', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjjjjc/xxzs'], + target: '/gov/ndrc/fggz/fgzh/gjjjjc/xxzs', + }, + { + title: '发改综合 - 大宗商品市场情况', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjjjjc/dzspscqk'], + target: '/gov/ndrc/fggz/fgzh/gjjjjc/dzspscqk', + }, + { + title: '发改综合 - 国别分析', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjjjjc/gbfx'], + target: '/gov/ndrc/fggz/fgzh/gjjjjc/gbfx', + }, + { + title: '发改综合 - 国际组织预测和研究动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjzzychyjdt'], + target: '/gov/ndrc/fggz/fgzh/gjzzychyjdt', + }, + { + title: '发改综合 - 国际组织预测', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjzzychyjdt/gjzzyc'], + target: '/gov/ndrc/fggz/fgzh/gjzzychyjdt/gjzzyc', + }, + { + title: '发改综合 - 国际组织研究动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgzh/gjzzychyjdt/gjzzyjdt'], + target: '/gov/ndrc/fggz/fgzh/gjzzychyjdt/gjzzyjdt', + }, + { + title: '经济运行与调节 - 宏观经济运行', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjyxtj/hgjjyx'], + target: '/gov/ndrc/fggz/jjyxtj/hgjjyx', + }, + { + title: '经济运行与调节 - 地方经济运行', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjyxtj/dfjjyx'], + target: '/gov/ndrc/fggz/jjyxtj/dfjjyx', + }, + { + title: '经济运行与调节 - 煤电油气运', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjyxtj/mdyqy'], + target: '/gov/ndrc/fggz/jjyxtj/mdyqy', + }, + { + title: '经济运行与调节 - 现代物流', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjyxtj/xdwl'], + target: '/gov/ndrc/fggz/jjyxtj/xdwl', + }, + { + title: '经济运行与调节 - 应急管理', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjyxtj/yjgl'], + target: '/gov/ndrc/fggz/jjyxtj/yjgl', + }, + { + title: '体制改革 - 改革快讯', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/tzgg/ggkx'], + target: '/gov/ndrc/fggz/tzgg/ggkx', + }, + { + title: '体制改革 - 半月改革动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/tzgg/byggdt'], + target: '/gov/ndrc/fggz/tzgg/byggdt', + }, + { + title: '体制改革 - 地方改革经验', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/tzgg/dfggjx'], + target: '/gov/ndrc/fggz/tzgg/dfggjx', + }, + { + title: '固定资产投资 - 投资法规与政策动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gdzctz/tzfg'], + target: '/gov/ndrc/fggz/gdzctz/tzfg', + }, + { + title: '利用外资和境外投资 - 境外投资', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/lywzjw/jwtz'], + target: '/gov/ndrc/fggz/lywzjw/jwtz', + }, + { + title: '利用外资和境外投资 - 外商投资', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/lywzjw/wstz'], + target: '/gov/ndrc/fggz/lywzjw/wstz', + }, + { + title: '利用外资和境外投资 - 外债管理', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/lywzjw/wzgl'], + target: '/gov/ndrc/fggz/lywzjw/wzgl', + }, + { + title: '利用外资和境外投资 - 政策法规', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/lywzjw/zcfg'], + target: '/gov/ndrc/fggz/lywzjw/zcfg', + }, + { + title: '地区经济 - 重大战略', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqjj/zdzl'], + target: '/gov/ndrc/fggz/dqjj/zdzl', + }, + { + title: '地区经济 - 四大板块', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqjj/sdbk'], + target: '/gov/ndrc/fggz/dqjj/sdbk', + }, + { + title: '地区经济 - 国土海洋流域新区', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqjj/qt'], + target: '/gov/ndrc/fggz/dqjj/qt', + }, + { + title: '地区振兴 - 巩固拓展脱贫攻坚成果和欠发达地区振兴发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/tpgjypkfq'], + target: '/gov/ndrc/fggz/dqzx/tpgjypkfq', + }, + { + title: '地区振兴 - 对口支援与合作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/dkzyyhz'], + target: '/gov/ndrc/fggz/dqzx/dkzyyhz', + }, + { + title: '地区振兴 - 革命老区振兴发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/gglqzxfz'], + target: '/gov/ndrc/fggz/dqzx/gglqzxfz', + }, + { + title: '地区振兴 - 生态退化地区治理', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/stthdqzl'], + target: '/gov/ndrc/fggz/dqzx/stthdqzl', + }, + { + title: '地区振兴 - 资源型地区转型发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/zyxdqzxfz'], + target: '/gov/ndrc/fggz/dqzx/zyxdqzxfz', + }, + { + title: '地区振兴 - 老工业地区振兴发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/dqzx/lzydfzxfz'], + target: '/gov/ndrc/fggz/dqzx/lzydfzxfz', + }, + { + title: '区域开放 - 信息集萃', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/qykf/xxjc'], + target: '/gov/ndrc/fggz/qykf/xxjc', + }, + { + title: '农业农村经济 - 重点建设', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/nyncjj/zdjs'], + target: '/gov/ndrc/fggz/nyncjj/zdjs', + }, + { + title: '农业农村经济 - 投资指南', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/nyncjj/tzzn'], + target: '/gov/ndrc/fggz/nyncjj/tzzn', + }, + { + title: '农业农村经济 - 乡村振兴', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/nyncjj/xczx'], + target: '/gov/ndrc/fggz/nyncjj/xczx', + }, + { + title: '农业农村经济 - 农经信息', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/nyncjj/njxx'], + target: '/gov/ndrc/fggz/nyncjj/njxx', + }, + { + title: '基础设施发展 - 政策规划', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/zcgh'], + target: '/gov/ndrc/fggz/zcssfz/zcgh', + }, + { + title: '基础设施发展 - 城轨监管', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/cgjg'], + target: '/gov/ndrc/fggz/zcssfz/cgjg', + }, + { + title: '基础设施发展 - 重大工程', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/zdgc'], + target: '/gov/ndrc/fggz/zcssfz/zdgc', + }, + { + title: '基础设施发展 - 问题研究', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/wtyj'], + target: '/gov/ndrc/fggz/zcssfz/wtyj', + }, + { + title: '基础设施发展 - 行业数据', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/hysj'], + target: '/gov/ndrc/fggz/zcssfz/hysj', + }, + { + title: '基础设施发展 - 地方发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/zcssfz/dffz'], + target: '/gov/ndrc/fggz/zcssfz/dffz', + }, + { + title: '产业发展 - 制造业发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/cyfz/zcyfz'], + target: '/gov/ndrc/fggz/cyfz/zcyfz', + }, + { + title: '产业发展 - 服务业发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/cyfz/fwyfz'], + target: '/gov/ndrc/fggz/cyfz/fwyfz', + }, + { + title: '创新和高技术发展 - 地方进展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/cxhgjsfz/dfjz'], + target: '/gov/ndrc/fggz/cxhgjsfz/dfjz', + }, + { + title: '环境与资源 - 碳达峰碳中和', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/tdftzh'], + target: '/gov/ndrc/fggz/hjyzy/tdftzh', + }, + { + title: '环境与资源 - 生态文明建设', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/stwmjs'], + target: '/gov/ndrc/fggz/hjyzy/stwmjs', + }, + { + title: '环境与资源 - 节能和能效', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/jnhnx'], + target: '/gov/ndrc/fggz/hjyzy/jnhnx', + }, + { + title: '环境与资源 - 资源利用和循环经济', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/zyzhlyhxhjj'], + target: '/gov/ndrc/fggz/hjyzy/zyzhlyhxhjj', + }, + { + title: '环境与资源 - 水节约与保护', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/sjyybh'], + target: '/gov/ndrc/fggz/hjyzy/sjyybh', + }, + { + title: '环境与资源 - 环境与保护', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/hjyzy/hjybh'], + target: '/gov/ndrc/fggz/hjyzy/hjybh', + }, + { + title: '就业与收入 - 就业收入社保消费', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jyysr/jysrsbxf'], + target: '/gov/ndrc/fggz/jyysr/jysrsbxf', + }, + { + title: '就业与收入 - 地方经验', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jyysr/dfjx'], + target: '/gov/ndrc/fggz/jyysr/dfjx', + }, + { + title: '经济贸易 - 重要商品情况', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjmy/zyspqk'], + target: '/gov/ndrc/fggz/jjmy/zyspqk', + }, + { + title: '经济贸易 - 对外经贸及政策分析', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjmy/dwjmjzcfx'], + target: '/gov/ndrc/fggz/jjmy/dwjmjzcfx', + }, + { + title: '经济贸易 - 流通业发展', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jjmy/ltyfz'], + target: '/gov/ndrc/fggz/jjmy/ltyfz', + }, + { + title: '财金信用 - 工作动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/cjxy/gzdt03'], + target: '/gov/ndrc/fggz/cjxy/gzdt03', + }, + { + title: '价格管理 - 地方工作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/jggl/dfgz'], + target: '/gov/ndrc/fggz/jggl/dfgz', + }, + { + title: '发改法规 - 地方信息', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgfg/dfxx'], + target: '/gov/ndrc/fggz/fgfg/dfxx', + }, + { + title: '国际合作 - 世经动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gjhz/zywj'], + target: '/gov/ndrc/fggz/gjhz/zywj', + }, + { + title: '干部之家 - 系统风采', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gbzj/xtfc'], + target: '/gov/ndrc/fggz/gbzj/xtfc', + }, + { + title: '干部之家 - 人才招聘', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gbzj/rczp'], + target: '/gov/ndrc/fggz/gbzj/rczp', + }, + { + title: '干部之家 - 委属工作', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gbzj/wsgz'], + target: '/gov/ndrc/fggz/gbzj/wsgz', + }, + { + title: '干部之家 - 学习园地', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/gbzj/xxyd'], + target: '/gov/ndrc/fggz/gbzj/xxyd', + }, + { + title: '评估督导 - 评督动态', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/pgdd/pddt'], + target: '/gov/ndrc/fggz/pgdd/pddt', + }, + { + title: '评估督导 - 评督经验', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/pgdd/pdjy'], + target: '/gov/ndrc/fggz/pgdd/pdjy', + }, + { + title: '发改党建 - 中央精神', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgdj/zydj'], + target: '/gov/ndrc/fggz/fgdj/zydj', + }, + { + title: '发改党建 - 机关党建', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgdj/jgdj'], + target: '/gov/ndrc/fggz/fgdj/jgdj', + }, + { + title: '发改党建 - 委属党建', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgdj/wsdj'], + target: '/gov/ndrc/fggz/fgdj/wsdj', + }, + { + title: '发改党建 - 系统党建', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgdj/xtdj'], + target: '/gov/ndrc/fggz/fgdj/xtdj', + }, + { + title: '发改金辉 - 党建之窗', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgjh/djzc'], + target: '/gov/ndrc/fggz/fgjh/djzc', + }, + { + title: '发改金辉 - 系统交流', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgjh/zthd'], + target: '/gov/ndrc/fggz/fgjh/zthd', + }, + { + title: '发改金辉 - 学习园地', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgjh/yxyd'], + target: '/gov/ndrc/fggz/fgjh/yxyd', + }, + { + title: '发改金辉 - 金色夕阳', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo', + source: ['/fggz/fgjh/jsxy'], + target: '/gov/ndrc/fggz/fgjh/jsxy', + }, + ], + }, 'nea.gov.cn': { _name: '国家能源局', '.': [ diff --git a/lib/v2/gov/router.js b/lib/v2/gov/router.js index 0cd10e05351cd6..206b80f20eb274 100644 --- a/lib/v2/gov/router.js +++ b/lib/v2/gov/router.js @@ -31,6 +31,8 @@ module.exports = function (router) { router.get('/moe/s78/:column', require('./moe/s78')); router.get('/mofcom/article/:suffix+', require('./mofcom/article')); router.get('/moj/aac/news/:type?', require('./moj/aac/news')); + router.get('/ndrc/fggz/:category*', require('./ndrc/fggz')); + router.get('/ndrc/xwdt/:category*', require('./ndrc/xwdt')); router.get('/nea/sjzz/ghs', require('./nea/ghs')); router.get('/news/:uid', require('./news')); router.get('/nifdc/:path*', require('./nifdc')); diff --git a/website/docs/routes/government.mdx b/website/docs/routes/government.mdx index 125c1f2b33a359..f83942e9b20127 100644 --- a/website/docs/routes/government.mdx +++ b/website/docs/routes/government.mdx @@ -1658,12 +1658,188 @@ ### 新闻动态 {#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-xin-wen-dong-tai} - + | 新闻发布 | 通知通告 | 委领导动态 | 司局动态 | 地方动态 | | -------- | -------- | ---------- | -------- | -------- | | xwfb | tzgg | wlddt | sjdt | dfdt | +### 发展改革工作 {#zhong-hua-ren-min-gong-he-guo-guo-jia-fa-zhan-he-gai-ge-wei-yuan-hui-fa-zhan-gai-ge-gong-zuo} + + +
+ 全部分类 + + #### 机关办公 + + | 业务工作 | 学思践悟 | + | --------- | --------- | + | jgbg/ywgz | jgbg/xsjw | + + #### 发改政研 + + | 经济数据概览 | 社会关切回应 | 新媒体解读 | + | ------------ | ------------ | ---------- | + | fgzy/jjsjgl | fgzy/shgqhy | fgzy/xmtjd | + + #### 发展战略和规划 + + | 国家发展战略和规划 | 国家级专项规划 | 地方发展规划 | 发展规划工作 | + | ------------------ | -------------- | ------------- | ------------- | + | fzzlgh/gjfzgh | fzzlgh/gjjzxgh | fzzlgh/dffzgh | fzzlgh/fzgggz | + + #### 发改综合 + + | 国内经济监测 | 工业经济 | 投资运行 | 市场消费 | + | ------------ | ---------------- | ---------------- | ---------------- | + | fgzh/gnjjjc | fgzh/gnjjjc/gyjj | fgzh/gnjjjc/tzyx | fgzh/gnjjjc/scxf | + + | 价格情况 | 财政收支 | 货币金融 | 就业情况 | + | ---------------- | ---------------- | ---------------- | ---------------- | + | fgzh/gnjjjc/jgqk | fgzh/gnjjjc/czsz | fgzh/gnjjjc/hbjr | fgzh/gnjjjc/jyqk | + + | 地区经济 | 国际经济监测 | 先行指数 | 大宗商品市场情况 | + | ---------------- | ------------ | ---------------- | -------------------- | + | fgzh/gnjjjc/dqjj | fgzh/gjjjjc | fgzh/gjjjjc/xxzs | fgzh/gjjjjc/dzspscqk | + + | 国别分析 | 国际组织预测和研究动态 | 国际组织预测 | 国际组织研究动态 | + | ---------------- | ---------------------- | ----------------------- | ------------------------- | + | fgzh/gjjjjc/gbfx | fgzh/gjzzychyjdt | fgzh/gjzzychyjdt/gjzzyc | fgzh/gjzzychyjdt/gjzzyjdt | + + #### 经济运行与调节 + + | 宏观经济运行 | 地方经济运行 | 煤电油气运 | 现代物流 | + | ------------- | ------------- | ------------ | ----------- | + | jjyxtj/hgjjyx | jjyxtj/dfjjyx | jjyxtj/mdyqy | jjyxtj/xdwl | + + #### 体制改革 + + | 改革快讯 | 半月改革动态 | 地方改革经验 | + | --------- | ------------ | ------------ | + | tzgg/ggkx | tzgg/byggdt | tzgg/dfggjx | + + #### 固定资产投资 + + | 投资法规与政策动态 | + | ------------------ | + | gdzctz/tzfg | + + #### 利用外资和境外投资 + + | 境外投资 | 外商投资 | 外债管理 | 政策法规 | + | ----------- | ----------- | ----------- | ----------- | + | lywzjw/jwtz | lywzjw/wstz | lywzjw/wzgl | lywzjw/zcfg | + + #### 地区经济 + + | 重大战略 | 四大板块 | 国土海洋流域新区 | + | --------- | --------- | ---------------- | + | dqjj/zdzl | dqjj/sdbk | dqjj/qt | + + #### 地区振兴 + + | 巩固拓展脱贫攻坚成果和欠发达地区振兴发展 | 对口支援与合作 | 革命老区振兴发展 | 生态退化地区治理 | + | ---------------------------------------- | -------------- | ---------------- | ---------------- | + | dqzx/tpgjypkfq | dqzx/dkzyyhz | dqzx/gglqzxfz | dqzx/stthdqzl | + + #### 区域开放 + + | 信息集萃 | + | --------- | + | qykf/xxjc | + + #### 农业农村经济 + + | 重点建设 | 投资指南 | 乡村振兴 | 农经信息 | + | ----------- | ----------- | ----------- | ----------- | + | nyncjj/zdjs | nyncjj/tzzn | nyncjj/xczx | nyncjj/njxx | + + #### 基础设施发展 + + | 政策规划 | 城轨监管 | 重大工程 | 问题研究 | + | ----------- | ----------- | ----------- | ----------- | + | zcssfz/zcgh | zcssfz/cgjg | zcssfz/zdgc | zcssfz/wtyj | + + #### 产业发展 + + | 制造业发展 | 服务业发展 | + | ---------- | ---------- | + | cyfz/zcyfz | cyfz/fwyfz | + + #### 创新和高技术发展 + + | 地方进展 | + | ------------- | + | cxhgjsfz/dfjz | + + #### 环境与资源 + + | 碳达峰碳中和 | 生态文明建设 | 节能和能效 | 资源利用和循环经济 | + | ------------ | ------------ | ----------- | ------------------ | + | hjyzy/tdftzh | hjyzy/stwmjs | hjyzy/jnhnx | hjyzy/zyzhlyhxhjj | + + #### 就业与收入 + + | 就业收入社保消费 | 地方经验 | + | ---------------- | ---------- | + | jyysr/jysrsbxf | jyysr/dfjx | + + #### 经济贸易 + + | 重要商品情况 | 对外经贸及政策分析 | 流通业发展 | + | ------------ | ------------------ | ---------- | + | jjmy/zyspqk | jjmy/dwjmjzcfx | jjmy/ltyfz | + + #### 财金信用 + + | 工作动态 | + | ----------- | + | cjxy/gzdt03 | + + #### 价格管理 + + | 地方工作 | + | --------- | + | jggl/dfgz | + + #### 发改法规 + + | 地方信息 | + | --------- | + | fgfg/dfxx | + + #### 国际合作 + + | 世经动态 | + | --------- | + | gjhz/zywj | + + #### 干部之家 + + | 系统风采 | 人才招聘 | 委属工作 | 学习园地 | + | --------- | --------- | --------- | --------- | + | gbzj/xtfc | gbzj/rczp | gbzj/wsgz | gbzj/xxyd | + + #### 评估督导 + + | 评督动态 | 评督经验 | + | --------- | --------- | + | pgdd/pddt | pgdd/pdjy | + + #### 发改党建 + + | 中央精神 | 机关党建 | 委属党建 | 系统党建 | + | --------- | --------- | --------- | --------- | + | fgdj/zydj | fgdj/jgdj | fgdj/wsdj | fgdj/xtdj | + + #### 发改金辉 + + | 党建之窗 | 系统交流 | 学习园地 | 金色夕阳 | + | --------- | --------- | --------- | --------- | + | fgjh/djzc | fgjh/zthd | fgjh/yxyd | fgjh/jsxy | +
+
+ ## 中华人民共和国海关总署 {#zhong-hua-ren-min-gong-he-guo-hai-guan-zong-shu} ### 拍卖信息 / 海关法规 {#zhong-hua-ren-min-gong-he-guo-hai-guan-zong-shu-pai-mai-xin-xi-hai-guan-fa-gui} From fe6117a4210787f2fe8b3fc737cbfb657b25e129 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 21 Dec 2023 02:46:58 +0800 Subject: [PATCH 2/2] feat: remove notOperational routes - picture --- lib/router.js | 39 ----- lib/routes/babehub/index.js | 30 ---- lib/routes/babehub/search.js | 15 -- lib/routes/babehub/utils.js | 71 ---------- lib/routes/baidu/doodles.js | 27 ---- lib/routes/dilbert/strip.js | 54 ------- lib/routes/elitebabes/index.js | 30 ---- lib/routes/elitebabes/search.js | 15 -- lib/routes/elitebabes/utils.js | 88 ------------ lib/routes/elitebabes/videos.js | 26 ---- lib/routes/girlimg/album.js | 57 -------- lib/routes/gracg/user.js | 65 --------- lib/routes/hentai-cosplays/hentai-cosplays.js | 11 -- lib/routes/jdlingyu/index.js | 45 ------ lib/routes/loveheaven/update.js | 45 ------ lib/routes/mzitu/category.js | 26 ---- lib/routes/mzitu/home.js | 32 ----- lib/routes/mzitu/post.js | 41 ------ lib/routes/mzitu/tag.js | 25 ---- lib/routes/mzitu/tags.js | 23 --- lib/routes/mzitu/util.js | 51 ------- lib/routes/zhutix/latest.js | 41 ------ lib/v2/35photo/actual.js | 7 - lib/v2/35photo/author.js | 9 -- lib/v2/35photo/genre.js | 10 -- lib/v2/35photo/interesting.js | 7 - lib/v2/35photo/maintainer.js | 8 -- lib/v2/35photo/map.js | 7 - lib/v2/35photo/new.js | 7 - lib/v2/35photo/radar.js | 43 ------ lib/v2/35photo/router.js | 8 -- lib/v2/35photo/utils.js | 57 -------- lib/v2/dbmv/index.js | 64 --------- lib/v2/dbmv/maintainer.js | 3 - lib/v2/dbmv/radar.js | 13 -- lib/v2/dbmv/router.js | 3 - lib/v2/google/router.js | 2 - lib/v2/google/sitesRecentChanges.js | 51 ------- lib/v2/meituclub/latest.js | 41 ------ lib/v2/meituclub/maintainer.js | 3 - lib/v2/meituclub/radar.js | 13 -- lib/v2/meituclub/router.js | 3 - lib/v2/meituclub/templates/description.art | 1 - website/docs/routes/picture.mdx | 134 +----------------- 44 files changed, 1 insertion(+), 1350 deletions(-) delete mode 100644 lib/routes/babehub/index.js delete mode 100644 lib/routes/babehub/search.js delete mode 100644 lib/routes/babehub/utils.js delete mode 100644 lib/routes/baidu/doodles.js delete mode 100644 lib/routes/dilbert/strip.js delete mode 100644 lib/routes/elitebabes/index.js delete mode 100644 lib/routes/elitebabes/search.js delete mode 100644 lib/routes/elitebabes/utils.js delete mode 100644 lib/routes/elitebabes/videos.js delete mode 100644 lib/routes/girlimg/album.js delete mode 100644 lib/routes/gracg/user.js delete mode 100644 lib/routes/hentai-cosplays/hentai-cosplays.js delete mode 100644 lib/routes/jdlingyu/index.js delete mode 100644 lib/routes/loveheaven/update.js delete mode 100644 lib/routes/mzitu/category.js delete mode 100644 lib/routes/mzitu/home.js delete mode 100644 lib/routes/mzitu/post.js delete mode 100644 lib/routes/mzitu/tag.js delete mode 100644 lib/routes/mzitu/tags.js delete mode 100644 lib/routes/mzitu/util.js delete mode 100644 lib/routes/zhutix/latest.js delete mode 100644 lib/v2/35photo/actual.js delete mode 100644 lib/v2/35photo/author.js delete mode 100644 lib/v2/35photo/genre.js delete mode 100644 lib/v2/35photo/interesting.js delete mode 100644 lib/v2/35photo/maintainer.js delete mode 100644 lib/v2/35photo/map.js delete mode 100644 lib/v2/35photo/new.js delete mode 100644 lib/v2/35photo/radar.js delete mode 100644 lib/v2/35photo/router.js delete mode 100644 lib/v2/35photo/utils.js delete mode 100644 lib/v2/dbmv/index.js delete mode 100644 lib/v2/dbmv/maintainer.js delete mode 100644 lib/v2/dbmv/radar.js delete mode 100644 lib/v2/dbmv/router.js delete mode 100644 lib/v2/google/sitesRecentChanges.js delete mode 100644 lib/v2/meituclub/latest.js delete mode 100644 lib/v2/meituclub/maintainer.js delete mode 100644 lib/v2/meituclub/radar.js delete mode 100644 lib/v2/meituclub/router.js delete mode 100644 lib/v2/meituclub/templates/description.art diff --git a/lib/router.js b/lib/router.js index a633fc396ae823..0eb14c176f0854 100644 --- a/lib/router.js +++ b/lib/router.js @@ -30,13 +30,6 @@ router.get('/ziroom/room/:city/:iswhole/:room/:keyword', lazyloadRouteHandler('. // router.get('/jianshu/collection/:id', lazyloadRouteHandler('./routes/jianshu/collection')); // router.get('/jianshu/user/:id', lazyloadRouteHandler('./routes/jianshu/user')); -// 妹子图 -router.get('/mzitu/home/:type?', lazyloadRouteHandler('./routes/mzitu/home')); -router.get('/mzitu/tags', lazyloadRouteHandler('./routes/mzitu/tags')); -router.get('/mzitu/category/:category', lazyloadRouteHandler('./routes/mzitu/category')); -router.get('/mzitu/post/:id', lazyloadRouteHandler('./routes/mzitu/post')); -router.get('/mzitu/tag/:tag', lazyloadRouteHandler('./routes/mzitu/tag')); - // pixiv-fanbox router.get('/fanbox/:user?', lazyloadRouteHandler('./routes/fanbox/main')); @@ -437,10 +430,6 @@ router.get('/autotrader/:query', lazyloadRouteHandler('./routes/autotrader')); // 极客公园 router.get('/geekpark/breakingnews', lazyloadRouteHandler('./routes/geekpark/breakingnews')); -// 百度 -router.get('/baidu/doodles', lazyloadRouteHandler('./routes/baidu/doodles')); -// router.get('/baidu/topwords/:boardId?', lazyloadRouteHandler('./routes/baidu/topwords')); - // 搜狗 router.get('/sogou/doodles', lazyloadRouteHandler('./routes/sogou/doodles')); @@ -834,9 +823,6 @@ router.get('/gov/veterans/:type', lazyloadRouteHandler('./routes/gov/veterans/ch // 河北省退伍士兵信息 router.get('/gov/veterans/hebei/:type', lazyloadRouteHandler('./routes/gov/veterans/hebei')); -// Dilbert Comic Strip -router.get('/dilbert/strip', lazyloadRouteHandler('./routes/dilbert/strip')); - // 怪物猎人 router.get('/monsterhunter/update', lazyloadRouteHandler('./routes/mhw/update')); router.get('/mhw/update', lazyloadRouteHandler('./routes/mhw/update')); @@ -901,9 +887,6 @@ router.get('/cninfo/announcement/:column/:code/:orgId/:category?/:search?', lazy router.get('/nosetime/:id/:type/:sort?', lazyloadRouteHandler('./routes/nosetime/comment')); router.get('/nosetime/home', lazyloadRouteHandler('./routes/nosetime/home')); -// 涂鸦王国 -router.get('/gracg/:user/:love?', lazyloadRouteHandler('./routes/gracg/user')); - // 大侠阿木 router.get('/daxiaamu/home', lazyloadRouteHandler('./routes/daxiaamu/home')); @@ -1301,9 +1284,6 @@ router.get('/ku/:name?', lazyloadRouteHandler('./routes/ku/index')); // 我有一片芝麻地 router.get('/blogs/hedwig/:type', lazyloadRouteHandler('./routes/blogs/hedwig')); -// LoveHeaven -router.get('/loveheaven/update/:slug', lazyloadRouteHandler('./routes/loveheaven/update')); - // 拉勾 router.get('/lagou/jobs/:position/:city', lazyloadRouteHandler('./routes/lagou/jobs')); @@ -1347,9 +1327,6 @@ router.get('/checkra1n/releases', lazyloadRouteHandler('./routes/checkra1n/relea // 四川省科学技术厅 router.get('/sckjt/news/:type?', lazyloadRouteHandler('./routes/sckjt/news')); -// 绝对领域 -router.get('/jdlingyu/:type', lazyloadRouteHandler('./routes/jdlingyu/index')); - // 湖北工业大学 router.get('/hbut/news/:type', lazyloadRouteHandler('./routes/universities/hbut/news')); router.get('/hbut/cs/:type', lazyloadRouteHandler('./routes/universities/hbut/cs')); @@ -1364,9 +1341,6 @@ router.get('/acwifi', lazyloadRouteHandler('./routes/acwifi')); router.get('/iyouport/article', lazyloadRouteHandler('./routes/iyouport')); router.get('/iyouport/:category?', lazyloadRouteHandler('./routes/iyouport')); -// girlimg -router.get('/girlimg/album/:tag?/:mode?', lazyloadRouteHandler('./routes/girlimg/album')); - // etoland router.get('/etoland/:bo_table', lazyloadRouteHandler('./routes/etoland/board')); @@ -1484,9 +1458,6 @@ router.get('/monotype/article', lazyloadRouteHandler('./routes/monotype/article' // Stork router.get('/stork/keyword/:trackID/:displayKey', lazyloadRouteHandler('./routes/stork/keyword')); -// 致美化 -router.get('/zhutix/latest', lazyloadRouteHandler('./routes/zhutix/latest')); - // arXiv router.get('/arxiv/:query', lazyloadRouteHandler('./routes/arxiv/query')); @@ -1532,7 +1503,6 @@ router.get('/gov/caict/caictgd', lazyloadRouteHandler('./routes/gov/caict/caictg router.get('/cs/news/:caty', lazyloadRouteHandler('./routes/cs/news')); // hentai-cosplays -router.get('/hentai-cosplays/:type?/:name?', lazyloadRouteHandler('./routes/hentai-cosplays/hentai-cosplays')); router.get('/porn-images-xxx/:type?/:name?', lazyloadRouteHandler('./routes/hentai-cosplays/porn-images-xxx')); // dcinside @@ -2008,10 +1978,6 @@ router.get('/tianyancha/hot', lazyloadRouteHandler('./routes/tianyancha/hot')); // King Arthur router.get('/kingarthur/:type', lazyloadRouteHandler('./routes/kingarthur/index')); -// BabeHub -router.get('/babehub/search/:keyword?', lazyloadRouteHandler('./routes/babehub/search')); -router.get('/babehub/:category?', lazyloadRouteHandler('./routes/babehub/index')); - // 深圳新闻网 router.get('/sznews/press', lazyloadRouteHandler('./routes/sznews/press')); router.get('/sznews/ranking', lazyloadRouteHandler('./routes/sznews/ranking')); @@ -2060,11 +2026,6 @@ router.get('/furaffinity/journal_comments/:id', lazyloadRouteHandler('./routes/f // 博客来 router.get('/bookscomtw/newbooks/:category', lazyloadRouteHandler('./routes/bookscomtw/newbooks')); -// Elite Babes -router.get('/elitebabes/videos/:sort?', lazyloadRouteHandler('./routes/elitebabes/videos')); -router.get('/elitebabes/search/:keyword?', lazyloadRouteHandler('./routes/elitebabes/search')); -router.get('/elitebabes/:category?', lazyloadRouteHandler('./routes/elitebabes/index')); - // Trakt.tv router.get('/trakt/collection/:username/:type?', lazyloadRouteHandler('./routes/trakt/collection')); diff --git a/lib/routes/babehub/index.js b/lib/routes/babehub/index.js deleted file mode 100644 index d145a3f44135e5..00000000000000 --- a/lib/routes/babehub/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const utils = require('./utils'); - -const categories = { - 'most-viewed': { - url: 'most-viewed', - title: 'Most Viewed', - }, - picture: { - url: 'picture-archive', - title: 'Pictures', - }, - video: { - url: 'video-archive', - title: 'Videos', - }, -}; - -module.exports = async (ctx) => { - const category = ctx.params.category || ''; - const title = `${category ? `${categories[category].title} - ` : ''}BabeHub`; - - const currentUrl = `${utils.rootUrl}/${category ? categories[category].url : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/babehub/search.js b/lib/routes/babehub/search.js deleted file mode 100644 index 335c30c5f55a62..00000000000000 --- a/lib/routes/babehub/search.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('./utils'); - -module.exports = async (ctx) => { - const keyword = ctx.params.keyword || ''; - const title = `${keyword ? `Search ${keyword} - ` : ''}BabeHub`; - - const currentUrl = `${utils.rootUrl}/${keyword ? `?s=${keyword}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/babehub/utils.js b/lib/routes/babehub/utils.js deleted file mode 100644 index 1dae3f9fa8c527..00000000000000 --- a/lib/routes/babehub/utils.js +++ /dev/null @@ -1,71 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://www.babehub.com'; - -const fetch = async (cache, currentUrl) => { - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.gallery-d li') - .slice(0, 50) - .map((_, item) => { - item = $(item).children('a').eq(0); - const image = item.find('img').eq(0); - const date = item.find('.date').text(); - - return { - link: item.attr('href'), - title: item.attr('title') || image.attr('alt'), - itunes_item_image: image.attr('src'), - pubDate: (date ? new Date(date.replace(/st|nd|rd|th/g, '')) : new Date()).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - cache.tryGet(item.link, async () => { - try { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - const video = content('video'); - - item.description = ''; - - if (video.length > 0) { - const poster = detailResponse.data.match(/posterImage: "(.*)",/); - item.itunes_item_image = (poster ? poster[1] : video.attr('poster')) || item.itunes_item_image; - - item.enclosure_type = 'video/mp4'; - item.enclosure_url = video.children('source').attr('src'); - item.description = ``; - } - - content('.gallery-e li a').each(function () { - item.description += ``; - }); - - return item; - } catch (e) { - return Promise.resolve(''); - } - }) - ) - ); - - return items; -}; - -module.exports = { - rootUrl, - fetch, -}; diff --git a/lib/routes/baidu/doodles.js b/lib/routes/baidu/doodles.js deleted file mode 100644 index 38be4f9a588c08..00000000000000 --- a/lib/routes/baidu/doodles.js +++ /dev/null @@ -1,27 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: 'http://logo.baidu.com/main/show_data/0/0/0/0', - }); - - const $ = cheerio.load(response.data); - - ctx.state.data = { - title: '百度趣画', - link: 'http://logo.baidu.com/', - item: $('.col') - .map((index, item) => { - item = $(item); - - return { - title: `${item.find('.title').text()}-${item.find('.date').text()}`, - description: ``, - link: item.find('.more a').attr('href'), - }; - }) - .get(), - }; -}; diff --git a/lib/routes/dilbert/strip.js b/lib/routes/dilbert/strip.js deleted file mode 100644 index e4cae5bcbcc782..00000000000000 --- a/lib/routes/dilbert/strip.js +++ /dev/null @@ -1,54 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const Parser = require('rss-parser'); -const parser = new Parser(); - -async function load(link, id) { - const response = await got.get(link); - const $ = cheerio.load(response.data); - - const context = $('.comic-item-container > .meta-info-container'); - const img = context.find('img.img-comic'); - const transcript = context.find('.comic-transcript p').html(); - - const title = img.attr('alt').replace('Dilbert by Scott Adams', id); - const src = img.attr('src'); - - let description = ``; - if (transcript) { - description += `

${transcript}

`; - } - - return { - title, - description, - }; -} - -module.exports = async (ctx) => { - const title = 'Dilbert Daily Strip'; - const feed_url = 'http://feed.dilbert.com/dilbert/daily_strip'; - - const feed = await parser.parseURL(feed_url); - const items = await Promise.all( - feed.items.slice(0, 7).map(async (item) => { - const link = item.link; - - const single = { - pubDate: item.pubDate, - link, - }; - - const other = await ctx.cache.tryGet(link, () => load(link, item.id)); - - return Promise.resolve(Object.assign({}, single, other)); - }) - ); - - ctx.state.data = { - title, - link: 'https://dilbert.com', - description: title, - item: items, - }; -}; diff --git a/lib/routes/elitebabes/index.js b/lib/routes/elitebabes/index.js deleted file mode 100644 index 83118a3dd7d56b..00000000000000 --- a/lib/routes/elitebabes/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const utils = require('./utils'); - -const categories = { - hot: { - url: 'trending', - title: 'Hot', - }, - popular: { - url: 'most-viewed', - title: 'Popular', - }, - recent: { - url: 'latest-updates', - title: 'Recent', - }, -}; - -module.exports = async (ctx) => { - const category = ctx.params.category || ''; - const title = `${category ? `${categories[category].title} - ` : ''}Elite Babes`; - - const currentUrl = `${utils.rootUrl}/${category ? categories[category].url : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/elitebabes/search.js b/lib/routes/elitebabes/search.js deleted file mode 100644 index 7f782b795a9291..00000000000000 --- a/lib/routes/elitebabes/search.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('./utils'); - -module.exports = async (ctx) => { - const keyword = ctx.params.keyword || ''; - const title = `${keyword ? `Search ${keyword} - ` : ''}Elite Babes`; - - const currentUrl = `${utils.rootUrl}/${keyword ? `?s=${keyword}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/elitebabes/utils.js b/lib/routes/elitebabes/utils.js deleted file mode 100644 index 125f22f51698c2..00000000000000 --- a/lib/routes/elitebabes/utils.js +++ /dev/null @@ -1,88 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://www.elitebabes.com'; - -const fetch = async (cache, currentUrl) => { - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - $('.clip-a, .displayblock').remove(); - - const list = $('.gallery-a li') - .slice(0, 50) - .map((_, item) => { - item = $(item).children('a').eq(0); - const image = item.find('img').eq(0); - - return { - link: item.attr('href'), - title: item.attr('title') || image.attr('alt'), - itunes_item_image: image.attr('src').replace('_200', '_400'), - pubDate: (item.next()[0] ? new Date(item.next().text()) : new Date()).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - cache.tryGet(item.link, async () => { - try { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - content('input, .link-btn, .m-pagination').remove(); - content('.mobile-hide, .wide-hide').remove(); - - if (item.link.indexOf(`${rootUrl}/model/`) === 0) { - item.author = content('.fn').text(); - item.description = content('#content').html(); - return item; - } - - const authors = []; - const video = content('video'); - - item.description = ''; - - if (video.length > 0) { - const poster = detailResponse.data.match(/posterImage: "(.*)",/); - item.itunes_item_image = (poster ? poster[1] : video.attr('poster')) || item.itunes_item_image; - - item.enclosure_type = 'video/mp4'; - item.enclosure_url = video.children('source').attr('src'); - item.description = ``; - } - - content('.link-btn h2 a').each(function () { - authors.push(content(this).text()); - }); - - item.author = authors.join(', '); - - content('.list-justified2 li a').each(function () { - item.description += ``; - }); - - return item; - } catch (e) { - return Promise.resolve(''); - } - }) - ) - ); - - return items; -}; - -module.exports = { - rootUrl, - fetch, -}; diff --git a/lib/routes/elitebabes/videos.js b/lib/routes/elitebabes/videos.js deleted file mode 100644 index a5d14d59d92218..00000000000000 --- a/lib/routes/elitebabes/videos.js +++ /dev/null @@ -1,26 +0,0 @@ -const utils = require('./utils'); - -const sorts = { - popular: { - url: '', - title: 'Popular', - }, - recent: { - url: 'latest', - title: 'Recent', - }, -}; - -module.exports = async (ctx) => { - const sort = ctx.params.sort || ''; - const title = `${sort ? sorts[sort].title : 'Popular'} videos - Elite Babes`; - - const currentUrl = `${utils.rootUrl}/videos${sort ? `?sort=${sorts[sort].url}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/girlimg/album.js b/lib/routes/girlimg/album.js deleted file mode 100644 index 8997135b5b727a..00000000000000 --- a/lib/routes/girlimg/album.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const CryptoJS = require('crypto-js'); -const password = 'gefdzfdef'; - -module.exports = async (ctx) => { - const tag = ctx.params.tag ? ctx.params.tag : 'all'; - const mode = ctx.params.mode ? ctx.params.mode : 'simple'; - const limit = 'simple' === mode ? 20 : 10; - - const url = `https://girlimg.epio.app/api/articles?lang=en-us&filter={"where":{"tag":"${tag}","lang":"en-us"},"limit":20,"skip":0}`; - - const index_json = await fetchUrl(url); - - const items = await Promise.all( - index_json.slice(0, limit).map(async (item) => { - const simple = { - title: item.title, - link: `https://girlimg.epio.app/article/detail/${item._id}`, - pubDate: new Date(item.release_date).toUTCString(), - }; - let details; - if ('simple' === mode) { - details = { - description: item.cover, - }; - } else { - details = await ctx.cache.tryGet(item._id, async () => { - const data = await fetchUrl(`https://girlimg.epio.app/api/articles/${item._id}?lang=en-us`); - return { - description: data.content, - }; - }); - } - return Promise.resolve(Object.assign({}, simple, details)); - }) - ); - ctx.state.data = { - title: 'girlimg - album', - link: `https://girlimg.epio.app`, - item: items, - }; -}; - -async function fetchUrl(url) { - const encrypt_json = ( - await got({ - method: 'get', - url, - headers: { - Referer: 'https://girlimg.epio.app/', - }, - }) - ).data; - - const bytes = CryptoJS.AES.decrypt(encrypt_json.string, password); - return JSON.parse(bytes.toString(CryptoJS.enc.Utf8)); -} diff --git a/lib/routes/gracg/user.js b/lib/routes/gracg/user.js deleted file mode 100644 index 86c149be666f52..00000000000000 --- a/lib/routes/gracg/user.js +++ /dev/null @@ -1,65 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const url = ctx.params.love ? `https://www.gracg.com/${ctx.params.user}/love` : `https://www.gracg.com/${ctx.params.user}`; - const response = await got({ - method: 'get', - url, - }); - const html = response.body; - const $ = cheerio.load(html); - const data = $('.TheWorksList').find('li'); - - if (data.length === 0) { - ctx.state.data = { - title: `${ctx.params.user} 的涂鸦王国作品`, - link: `https://gracg.com/${ctx.params.user}`, - description: `${ctx.params.user} 的涂鸦王国作品`, - }; - } else { - const name = $('.userbox .username').text(); - const item = await Promise.all( - data - .slice(0, 10) - .map(async (i, el) => { - const link = $(el).find('.imgbox a').attr('href'); - const pics = await ctx.cache.tryGet(link, async () => { - const res = await got.get(link); - const $1 = cheerio.load(res.body); - return $1('.workPage-images img') - .map((i, el) => $1(el).attr('src')) - .get(); - }); - const description = generateItemDesc(pics); - return { - title: $(el).find('.infobox .titles').text(), - description, - pubDate: new Date($(el).find('.infobox .time').text()).toUTCString(), - link, - }; - }) - .get() - ); - - ctx.state.data = { - title: `${name} 的涂鸦王国作品`, - link: `https://gracg.com/${ctx.params.user}`, - description: `${name} 的涂鸦王国作品`, - item, - }; - } -}; - -/** - * 根据图片链接生成 html - * @param {Array} pics - * @return {String} itemDesc - */ -function generateItemDesc(pics) { - const itemDesc = pics.reduce((acc, pic) => { - acc += ` { - const url = ctx.params.type ? `https://ja.hentai-cosplays.com/search/${ctx.params.type}/${encodeURIComponent(ctx.params.name)}/` : 'https://ja.hentai-cosplays.com/search/'; - const items = await processFeed(url); - ctx.state.data = { - title: `${ctx.params.name || '新着コスプレ一覧'} - エロコスプレ`, - link: url, - item: items, - }; -}; diff --git a/lib/routes/jdlingyu/index.js b/lib/routes/jdlingyu/index.js deleted file mode 100644 index cad3101c3e913d..00000000000000 --- a/lib/routes/jdlingyu/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const baseUrl = 'https://www.jdlingyu.mobi/'; -const viewProps = { - tuji: '图集', - as: '文章', -}; - -module.exports = async (ctx) => { - const type = ctx.params.type || 'tuji'; - const url = baseUrl + type; - const response = await got({ - method: 'get', - url, - }); - const $ = cheerio.load(response.data); - - const items = await Promise.all( - $('#post-list > ul.b2_gap > li') - .get() - .map(async (div) => { - const a = $(div).find('.post-info > h2 > a'); - const link = a.attr('href'); - const description = await ctx.cache.tryGet(link, async () => { - const response = await got.get(link); - const $ = cheerio.load(response.data); - return $('.entry-content > p').html(); - }); - return Promise.resolve({ - title: a.text(), - description, - author: $(div).find('.post-header .users').text(), - link, - pubDate: new Date($(div).find('.post-header time').attr('datetime')).toUTCString(), - }); - }) - ); - ctx.state.data = { - title: `${viewProps[type]} - 绝对领域`, - link: url, - description: `${viewProps[type]} - 绝对领域`, - item: items, - }; -}; diff --git a/lib/routes/loveheaven/update.js b/lib/routes/loveheaven/update.js deleted file mode 100644 index 96177b0bc3efef..00000000000000 --- a/lib/routes/loveheaven/update.js +++ /dev/null @@ -1,45 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const chrono = require('chrono-node'); - -const base = 'https://loveheaven.net/'; - -module.exports = async (ctx) => { - const slug = ctx.params.slug; - - const url = `https://loveheaven.net/manga-${slug.replace(/^manga-/, '').replace(/\.html$/, '')}.html`; - - const response = await got.get(url); - const $ = cheerio.load(response.data); - - const manga_name = $('.manga-info > h1').text(); - const manga_other_names = $('.manga-info > li:nth-child(3)').text(); - const manga_author = $('a.btn-info') - .map(function () { - return $(this).text(); - }) - .get() - .join(', '); - const manga_cover = $('img.thumbnail').attr('src'); - - const list = $('.tab-text .table > tbody > tr').get(); - - ctx.state.data = { - title: `${manga_name} - LoveHeaven`, - description: manga_other_names, - link: url, - image: manga_cover, - item: list.slice(0, 20).map((item) => { - item = $(item); - const entry = item.find('a'); - const humanized_date = item.find('time').text(); - return { - title: entry.text(), - author: manga_author, - description: ``, - link: base + entry.attr('href'), - pubDate: humanized_date ? chrono.parseDate(humanized_date) : new Date(), - }; - }), - }; -}; diff --git a/lib/routes/mzitu/category.js b/lib/routes/mzitu/category.js deleted file mode 100644 index 7af3bef985703f..00000000000000 --- a/lib/routes/mzitu/category.js +++ /dev/null @@ -1,26 +0,0 @@ -const got = require('@/utils/got'); -const { getItem } = require('./util'); - -const map = { - xinggan: '性感妹子', - japan: '日本妹子', - taiwan: '台湾妹子', - mm: '清纯妹子', -}; - -module.exports = async (ctx) => { - const { category } = ctx.params; - - const url = `https://www.mzitu.com/${category}`; - const response = await got({ - method: 'get', - url, - }); - const items = await getItem(ctx, response.data); - - ctx.state.data = { - title: `妹子图-${map[category]} `, - link: url, - item: items, - }; -}; diff --git a/lib/routes/mzitu/home.js b/lib/routes/mzitu/home.js deleted file mode 100644 index b736b3f89fd6c1..00000000000000 --- a/lib/routes/mzitu/home.js +++ /dev/null @@ -1,32 +0,0 @@ -const got = require('@/utils/got'); -const { getItem } = require('./util'); - -module.exports = async (ctx) => { - const { type = '' } = ctx.params; - let url; - let title = '妹子图'; - - if (type === 'hot') { - title += '-最热'; - url = 'https://www.mzitu.com/hot/'; - } else if (type === 'best') { - title += '-推荐'; - url = 'https://www.mzitu.com/best/'; - } else { - title += '-最新'; - url = 'https://www.mzitu.com/'; - } - - const response = await got({ - method: 'get', - url, - }); - - const items = await getItem(ctx, response.data); - - ctx.state.data = { - title, - link: url, - item: items, - }; -}; diff --git a/lib/routes/mzitu/post.js b/lib/routes/mzitu/post.js deleted file mode 100644 index 7bca9cb9978205..00000000000000 --- a/lib/routes/mzitu/post.js +++ /dev/null @@ -1,41 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const { id } = ctx.params; - - const link = `http://www.mzitu.com/${id}`; - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const page_lengh = $('div.pagenavi > a:nth-last-child(2) > span').text(); - const title = $('h2.main-title').text(); - - const pages = Array.from({ length: page_lengh }, (v, i) => i); - - ctx.state.data = { - title, - link, - item: await Promise.all( - pages.map(async (page) => { - const page_link = link + '/' + (page + 1).toString(); - - const response = await got({ - method: 'get', - url: page_link, - }); - const $ = cheerio.load(response.data); - const item_link = $('div.main-image img').attr('src'); - const item_title = `${title} (${page + 1})`; - const description = ``; - return { - title: item_title, - link: page_link, - description, - }; - }) - ), - }; -}; diff --git a/lib/routes/mzitu/tag.js b/lib/routes/mzitu/tag.js deleted file mode 100644 index 385e6e37eaebd2..00000000000000 --- a/lib/routes/mzitu/tag.js +++ /dev/null @@ -1,25 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const { getItem } = require('./util'); - -module.exports = async (ctx) => { - let tag = ctx.params.tag; - tag = tag === undefined || tag === 'undefined' ? '' : tag; - - const link = `https://www.mzitu.com/tag/${tag}`; - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const items = await getItem(ctx, response.data); - - let name = $('div.currentpath').text(); - name = name.split('»')[1]; - - ctx.state.data = { - title: name, - link, - item: items, - }; -}; diff --git a/lib/routes/mzitu/tags.js b/lib/routes/mzitu/tags.js deleted file mode 100644 index 0b9e67103fdd89..00000000000000 --- a/lib/routes/mzitu/tags.js +++ /dev/null @@ -1,23 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const link = 'https://www.mzitu.com/zhuanti'; - - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const list = $('div.postlist > dl > dd').get(); - - ctx.state.data = { - title: '妹子图专题', - link, - description: '妹子图美女专题栏目,为您精心准备各种美女图片专题,包括名站美女写真,妹子特点分类,美女大全等专题。', - item: list.map((item) => ({ - title: $(item).find('img').attr('alt'), - link: $(item).find('a').attr('href'), - })), - }; -}; diff --git a/lib/routes/mzitu/util.js b/lib/routes/mzitu/util.js deleted file mode 100644 index da53899341cfe4..00000000000000 --- a/lib/routes/mzitu/util.js +++ /dev/null @@ -1,51 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -exports.getItem = (ctx, data) => { - const $ = cheerio.load(data); - const list = $('#pins li').get().slice(0, 5); - - return Promise.all( - list.map(async (item) => { - const title = $(item).find('span > a').text(); - const item_link = $(item).find('span > a').attr('href'); - - const cache = await ctx.cache.get(item_link); - let description; - if (cache) { - description = cache; - } else { - const response = await got({ - method: 'get', - url: item_link, - }); - const $ = cheerio.load(response.data); - const page_lengh = $('div.pagenavi > a:nth-last-child(2) > span').text(); - - const pages = Array.from({ length: page_lengh }, (v, i) => i); - const description_list = await Promise.all( - pages.map(async (page) => { - const page_link = item_link + '/' + (page + 1).toString(); - - const response = await got({ - method: 'get', - url: page_link, - }); - const $ = cheerio.load(response.data); - - return `
`; - }) - ); - - description = description_list.join(''); - ctx.cache.set(item_link, description); - } - - return { - title, - description, - link: item_link, - }; - }) - ); -}; diff --git a/lib/routes/zhutix/latest.js b/lib/routes/zhutix/latest.js deleted file mode 100644 index 4c20403e72b965..00000000000000 --- a/lib/routes/zhutix/latest.js +++ /dev/null @@ -1,41 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const currentUrl = 'https://zhutix.com/'; - const response = await got({ - method: 'get', - url: currentUrl, - }); - const $ = cheerio.load(response.data); - const list = $('#main div.grid-bor div.content-card') - .slice(0, 10) - .map((_, item) => { - item = $(item); - const a = item.find('a'); - return { - title: a.text(), - link: a.attr('href'), - pubDate: new Date(item.find('i.feng-liulanjilu').parent().text()).toUTCString(), - }; - }) - .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.description = content('#entry-content').html(); - return item; - }) - ) - ); - - ctx.state.data = { - title: '致美化 - 最新主题', - link: currentUrl, - item: items, - }; -}; diff --git a/lib/v2/35photo/actual.js b/lib/v2/35photo/actual.js deleted file mode 100644 index c9c132fd70ea01..00000000000000 --- a/lib/v2/35photo/actual.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/actual`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/author.js b/lib/v2/35photo/author.js deleted file mode 100644 index 10bdbaf8b0fbcb..00000000000000 --- a/lib/v2/35photo/author.js +++ /dev/null @@ -1,9 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const currentUrl = `${rootUrl}/${id}`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/genre.js b/lib/v2/35photo/genre.js deleted file mode 100644 index 66da8f11e162a4..00000000000000 --- a/lib/v2/35photo/genre.js +++ /dev/null @@ -1,10 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const currentUrl = `${rootUrl}/genre_${id}`; - const apiUrl = `${rootUrl}/show_block.php?type=getNextPageData&page=genre&community_id=${id}`; - - ctx.state.data = await ProcessItems(currentUrl, apiUrl); -}; diff --git a/lib/v2/35photo/interesting.js b/lib/v2/35photo/interesting.js deleted file mode 100644 index be4c36d6a80a17..00000000000000 --- a/lib/v2/35photo/interesting.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/interesting`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/maintainer.js b/lib/v2/35photo/maintainer.js deleted file mode 100644 index 4d090293353422..00000000000000 --- a/lib/v2/35photo/maintainer.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - '/actual': ['nczitzk'], - '/author/:id': ['nczitzk'], - '/genre/:id': ['nczitzk'], - '/interesting': ['nczitzk'], - '/map': ['nczitzk'], - '/new': ['nczitzk'], -}; diff --git a/lib/v2/35photo/map.js b/lib/v2/35photo/map.js deleted file mode 100644 index 8e2550ec0b757b..00000000000000 --- a/lib/v2/35photo/map.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/map`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/new.js b/lib/v2/35photo/new.js deleted file mode 100644 index ff962b54665618..00000000000000 --- a/lib/v2/35photo/new.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/radar.js b/lib/v2/35photo/radar.js deleted file mode 100644 index c46af775eb1a88..00000000000000 --- a/lib/v2/35photo/radar.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = { - '35photo.pro': { - _name: '35PHOTO', - '.': [ - { - title: 'New photos', - docs: 'https://docs.rsshub.app/routes/picture#35photo-new-photos', - source: ['/new', '/'], - target: '/35photo/new', - }, - { - title: 'Featured photos', - docs: 'https://docs.rsshub.app/routes/picture#35photo-featured-photos', - source: ['/new/actual', '/'], - target: '/35photo/actual', - }, - { - title: 'New interesting', - docs: 'https://docs.rsshub.app/routes/picture#35photo-new-interesting', - source: ['/new/interesting', '/'], - target: '/35photo/interesting', - }, - { - title: 'Photos on the world map', - docs: 'https://docs.rsshub.app/routes/picture#35photo-photos-on-the-world-map', - source: ['/new/map', '/'], - target: '/35photo/map', - }, - { - title: 'Genre', - docs: 'https://docs.rsshub.app/routes/picture#35photo-genre', - source: ['/'], - target: (params, url) => `/35photo/genre/${url.match(/genre_(\d+)/)[1]}`, - }, - { - title: 'Author', - docs: 'https://docs.rsshub.app/routes/picture#35photo-author', - source: ['/:id', '/'], - target: '/35photo/author/:id', - }, - ], - }, -}; diff --git a/lib/v2/35photo/router.js b/lib/v2/35photo/router.js deleted file mode 100644 index 0975e35a37d255..00000000000000 --- a/lib/v2/35photo/router.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = function (router) { - router.get('/actual', require('./actual')); - router.get('/author/:id', require('./author')); - router.get('/genre/:id', require('./genre')); - router.get('/interesting', require('./interesting')); - router.get('/map', require('./map')); - router.get('/new', require('./new')); -}; diff --git a/lib/v2/35photo/utils.js b/lib/v2/35photo/utils.js deleted file mode 100644 index fc0dac09603ebf..00000000000000 --- a/lib/v2/35photo/utils.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://35photo.pro'; - -module.exports = { - rootUrl, - ProcessItems: async (currentUrl, apiUrl) => { - let $, response; - - response = await got({ - method: 'get', - url: currentUrl, - }); - - const data = response.data; - - $ = cheerio.load(data); - - const title = $('h1').text(); - - if (apiUrl) { - response = await got({ - method: 'get', - url: `${apiUrl}&lastId=${$('div.countLike').last().attr('photo-id')}`, - }); - - $ = cheerio.load(data + response.data.data); - } - - const items = $('.item') - .toArray() - .map((item) => { - item = $(item); - - const image = item.find('.showPrevPhoto'); - - return { - title: image.attr('title').replace(/Photographer\\'s photo - /, ''), - link: image.parent().attr('href'), - author: item.next().find('.userName').text().replace(/© /, ''), - category: image - .attr('alt') - .replace(/photo preview/g, '') - .split(/,|#/) - .map((c) => c.trim()), - description: ``, - }; - }); - - return { - title: `${title} - 35PHOTO`, - link: currentUrl, - item: items, - }; - }, -}; diff --git a/lib/v2/dbmv/index.js b/lib/v2/dbmv/index.js deleted file mode 100644 index 6d99a209dda22b..00000000000000 --- a/lib/v2/dbmv/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const got = require('@/utils/got'); -const cherrio = require('cheerio'); -const { parseDate } = require('@/utils/parse-date'); -const timezone = require('@/utils/timezone'); - -module.exports = async (ctx) => { - const { category = '' } = ctx.params; - let url; - - if (category !== '') { - url = 'https://www.buxiuse.com/?cid=' + category; - } else { - url = 'https://www.buxiuse.com'; - } - - const response = await got({ - url, - headers: { - Referer: 'https://www.buxiuse.com', - }, - }); - - const data = response.data; - const $ = cherrio.load(data); - - let resultItem = $('li.span3 img') - .toArray() - .map((item) => { - item = $(item); - const img_url = item.attr('src'); - return { - title: item.attr('title'), - link: item.parent().attr('href'), - description: ``, - guid: img_url, - }; - }); - - resultItem = await Promise.all( - resultItem.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - url: item.link, - headers: { - Referer: url, - }, - }); - const detailData = detailResponse.data; - const $ = cherrio.load(detailData); - - item.author = $('li.name').text(); - item.pubDate = timezone(parseDate($('div.info abbr').attr('title')), +8); - return item; - }) - ) - ); - - ctx.state.data = { - title: $('title').text(), - link: url, - item: resultItem, - description: '不羞涩 | 真实的图片分享交友社区', - }; -}; diff --git a/lib/v2/dbmv/maintainer.js b/lib/v2/dbmv/maintainer.js deleted file mode 100644 index b9119095dbe431..00000000000000 --- a/lib/v2/dbmv/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/:category?': ['kba977'], -}; diff --git a/lib/v2/dbmv/radar.js b/lib/v2/dbmv/radar.js deleted file mode 100644 index 99b51a1762c99a..00000000000000 --- a/lib/v2/dbmv/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'buxiuse.com': { - _name: '不羞涩', - '.': [ - { - title: '分类', - docs: 'https://docs.rsshub.app/routes/picture#bu-xiu-se', - source: '/', - target: (_params, url) => `/dbmv${new URL(url).searchParams.has('cid') ? `/${new URL(url).searchParams.get('cid')}` : ''}`, - }, - ], - }, -}; diff --git a/lib/v2/dbmv/router.js b/lib/v2/dbmv/router.js deleted file mode 100644 index 9885c36f134815..00000000000000 --- a/lib/v2/dbmv/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (router) => { - router.get('/:category?', require('./index')); -}; diff --git a/lib/v2/google/router.js b/lib/v2/google/router.js index ff5da905182d8b..b3064cf1ccae8d 100644 --- a/lib/v2/google/router.js +++ b/lib/v2/google/router.js @@ -6,6 +6,4 @@ module.exports = function (router) { router.get('/fonts/:sort?', require('./fonts')); router.get('/news/:category/:locale', require('./news')); router.get('/scholar/:query', require('./scholar')); - router.get('/sites/recentChanges/:id', require('./sitesRecentChanges')); - router.get('/sites/:id', require('./sites')); }; diff --git a/lib/v2/google/sitesRecentChanges.js b/lib/v2/google/sitesRecentChanges.js deleted file mode 100644 index de5d308d631cbb..00000000000000 --- a/lib/v2/google/sitesRecentChanges.js +++ /dev/null @@ -1,51 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const { parseDate } = require('@/utils/parse-date'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const rootUrl = 'https://sites.google.com'; - const currentUrl = `${rootUrl}/site/${id}/activity.xml`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - let items = $('entry') - .toArray() - .map((item) => { - item = $(item); - - return { - title: item.find('summary').text(), - link: item.find('summary a').attr('href'), - pubDate: parseDate(item.find('updated').text()), - author: item.find('author name').text(), - }; - }); - - items = await Promise.all( - items.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - item.description = content('#sites-canvas').html(); - - return item; - }) - ) - ); - - ctx.state.data = { - title: $('feed title').first().text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/v2/meituclub/latest.js b/lib/v2/meituclub/latest.js deleted file mode 100644 index e05eec2b574001..00000000000000 --- a/lib/v2/meituclub/latest.js +++ /dev/null @@ -1,41 +0,0 @@ -const path = require('path'); -const cheerio = require('cheerio'); -const got = require('@/utils/got'); -const { art } = require('@/utils/render'); -const { parseDate } = require('@/utils/parse-date'); -const timezone = require('@/utils/timezone'); - -const HOME_URL = 'https://www.meituclub.com/'; - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: HOME_URL, - }); - - const data = response.data; - - const $ = cheerio.load(data); - const list = $('#index-tab-main .posts-item.card'); - - ctx.state.data = { - title: '妹图社 - 最新', - link: HOME_URL, - item: list - .map((index, item) => { - item = $(item); - const img = item.find('.item-thumbnail').find('img'); - const heading = item.find('.item-heading').find('a'); - return { - title: heading.text(), - description: art(path.join(__dirname, 'templates/description.art'), { - src: img.attr('data-src'), - alt: img.attr('alt'), - }), - link: heading.attr('href'), - pubDate: timezone(parseDate(item.find('.item-meta').find('.icon-circle').attr('title'), 'YYYY-MM-DD HH:mm:ss'), +8), - }; - }) - .get(), - }; -}; diff --git a/lib/v2/meituclub/maintainer.js b/lib/v2/meituclub/maintainer.js deleted file mode 100644 index 0a784e3fc1e64c..00000000000000 --- a/lib/v2/meituclub/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/latest': ['ocleo1'], -}; diff --git a/lib/v2/meituclub/radar.js b/lib/v2/meituclub/radar.js deleted file mode 100644 index c2fbee36df7368..00000000000000 --- a/lib/v2/meituclub/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'meituclub.com': { - _name: '妹图社', - '.': [ - { - title: '最新', - docs: 'https://docs.rsshub.app/routes/picture#mei-tu-she-zui-xin', - source: ['/'], - target: '/meituclub/latest', - }, - ], - }, -}; diff --git a/lib/v2/meituclub/router.js b/lib/v2/meituclub/router.js deleted file mode 100644 index c7599855e195b8..00000000000000 --- a/lib/v2/meituclub/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function (router) { - router.get('/latest', require('./latest')); -}; diff --git a/lib/v2/meituclub/templates/description.art b/lib/v2/meituclub/templates/description.art deleted file mode 100644 index c961f7a31ef159..00000000000000 --- a/lib/v2/meituclub/templates/description.art +++ /dev/null @@ -1 +0,0 @@ -{{ alt }} \ No newline at end of file diff --git a/website/docs/routes/picture.mdx b/website/docs/routes/picture.mdx index db905f42432e56..b86598e33888c0 100644 --- a/website/docs/routes/picture.mdx +++ b/website/docs/routes/picture.mdx @@ -165,20 +165,6 @@ -## BabeHub {#babehub} - -### Category {#babehub-category} - - - | Home | Most Viewed | Picture Archive | Video Archive | - | ---- | ----------- | --------------- | ------------- | - | | most-viewed | picture | video | - - -### Search {#babehub-search} - - - ## Bing Wallpaper {#bing-wallpaper} ### Daily Wallpaper {#bing-wallpaper-daily-wallpaper} @@ -218,14 +204,6 @@ -## Dilbert Comic Strip {#dilbert-comic-strip} - -### Dilbert Comic Strip {#dilbert-comic-strip-dilbert-comic-strip} - - - 通过提取漫画,提供比官方源更佳的阅读体验。 - - ## E-Hentai {#e-hentai} For RSS content, specify options in the `routeParams` parameter in query string format to control additional functionality @@ -247,28 +225,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## Elite Babes {#elite-babes} - -### Home {#elite-babes-home} - - - | Home | Hot | Popular | Recent | - | ---- | --- | ------- | ------ | - | | hot | popular | recent | - - -### Videos {#elite-babes-videos} - - - | Popular | Recent | - | ------- | ------ | - | popular | recent | - - -### Search {#elite-babes-search} - - - ## Fantia {#fantia} ### Search {#fantia-search} @@ -329,12 +285,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## GirlImg {#girlimg} - -### album {#girlimg-album} - - - ## GoComics {#gocomics} ### Comic Strips {#gocomics-comic-strips} @@ -353,12 +303,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## Hentai Cosplay {#hentai-cosplay} - -### 最新图片 {#hentai-cosplay-zui-xin-tu-pian} - - - ## Konachan Anime Wallpapers {#konachan-anime-wallpapers} :::tip @@ -378,17 +322,11 @@ For RSS content, specify options in the `routeParams` parameter in query string - 1 year: [https://rsshub.app/konachan/post/popular\_recent/1y](https://rsshub.app/konachan/post/popular_recent/1y) -## LoveHeaven {#loveheaven} - -### Manga Updates {#loveheaven-manga-updates} - - - ## Mic Mic Idol {#mic-mic-idol} ### Latest {#mic-mic-idol-latest} - + ### 标签 {#mic-mic-idol-biao-qian} @@ -532,28 +470,12 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning - 1 year: [https://rsshub.app/yande.re/post/popular\_recent/1y](https://rsshub.app/yande.re/post/popular_recent/1y) -## 百度趣画 {#bai-du-qu-hua} - -### 更新 {#bai-du-qu-hua-geng-xin} - - - ## 北京天文馆 {#bei-jing-tian-wen-guan} ### 每日一图 {#bei-jing-tian-wen-guan-mei-ri-yi-tu} -## 不羞涩 {#bu-xiu-se} - -### 分类 {#bu-xiu-se-fen-lei} - - - | 大胸妹 | 小翘臀 | 黑丝袜 | 美腿控 | 有颜值 | 大杂烩 | - | ------ | ------ | ------ | ------ | ------ | ------ | - | 2 | 6 | 7 | 3 | 4 | 5 | - - ## 煎蛋 {#jian-dan} ### 板块 {#jian-dan-ban-kuai} @@ -576,16 +498,6 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning -## 绝对领域 {#jue-dui-ling-yu} - -### 图集文章 {#jue-dui-ling-yu-tu-ji-wen-zhang} - - - -| 图集 | 文章 | -| ---- | ---- | -| tuji | as | - ## 酷 18 {#ku-18} ### 分站 {#ku-18-fen-zhan} @@ -610,38 +522,6 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning -## 妹图社 {#mei-tu-she} - -### 最新 {#mei-tu-she-zui-xin} - - - -## 妹子图 {#mei-zi-tu} - -### 首页(最新) {#mei-zi-tu-shou-ye-zui-xin} - - - -### 分类 {#mei-zi-tu-fen-lei} - - - | 性感妹子 | 日本妹子 | 台湾妹子 | 清纯妹子 | - | -------- | -------- | -------- | -------- | - | xinggan | japan | taiwan | mm | - - -### 所有专题 {#mei-zi-tu-suo-you-zhuan-ti} - - - -### 专题详情 {#mei-zi-tu-zhuan-ti-xiang-qing} - - - -### 详情 {#mei-zi-tu-xiang-qing} - - - ## 喷嚏 {#pen-ti} ### 图卦 {#pen-ti-tu-gua} @@ -657,15 +537,3 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning ### 频道 {#qi-pa-mai-jia-xiu-pin-dao} - -## 涂鸦王国 {#tu-ya-wang-guo} - -### 用户上传作品和用户喜欢作品 {#tu-ya-wang-guo-yong-hu-shang-chuan-zuo-pin-he-yong-hu-xi-huan-zuo-pin} - - - -## 致美化 {#zhi-mei-hua} - -### 最新主题 {#zhi-mei-hua-zui-xin-zhu-ti} - -