diff --git a/docs/en/university.md b/docs/en/university.md index e32863be7..58624fb22 100644 --- a/docs/en/university.md +++ b/docs/en/university.md @@ -40,6 +40,73 @@ Note: [Source website](https://gs.bjtu.edu.cn/) only provides articles in Chines +## Nanjing University of the Arts + +### Official Information + + + +| News Type | Parameters | +| ---- | --- | +| 公告 | 346 | +| 南艺要闻 | 332 | + + + +### Shuangxing Information + + + +| News Type | Parameters | +| ---- | --- | +| 校园电视 | 230 | +| 院部动态 | 232 | +| 动感校园 | 233 | +| 招就指南 | 234 | +| 南艺院报 | 236 | + + + +### School of Design + + + +| News Type | Parameters | +| ---------------------- | ---------- | +| 学院新闻 NEWS | news | +| 展览 EXHIBITION | exhibition | +| 研创 RESEARCH & CREATION | rc | +| 项目 PROJECT | project | +| 党团 PARTY | party | +| 后浪 YOUTH | youth | + + + +### Graduate Institute + + + +| News Type | Parameters | +| ---- | ---- | +| 招生工作 | 1959 | +| 培养工作 | 1962 | +| 学位工作 | 1958 | + + + +### Library + + + +| News Type | Parameters | +| ---- | ---- | +| 新闻动态 | xwdt | +| 党建动态 | djdt | +| 资源动态 | zydt | +| 服务动态 | fwdt | + + + ## Polimi ### News diff --git a/docs/university.md b/docs/university.md index 6102dd609..de3c0598c 100644 --- a/docs/university.md +++ b/docs/university.md @@ -2155,6 +2155,19 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS +### 图书馆 + + + +| 新闻模块 | 参数 | +| ---- | ---- | +| 新闻动态 | xwdt | +| 党建动态 | djdt | +| 资源动态 | zydt | +| 服务动态 | fwdt | + + + ## 南京邮电大学 ### 教务处通知与新闻 diff --git a/lib/v2/nua/lib.js b/lib/v2/nua/lib.js new file mode 100644 index 000000000..a181974f8 --- /dev/null +++ b/lib/v2/nua/lib.js @@ -0,0 +1,39 @@ +const util = require('./utils'); +const baseUrl = 'https://lib.nua.edu.cn'; + +module.exports = async (ctx) => { + const type = ctx.params.type; + let webPageName; + + switch (type) { + case 'xwdt': + webPageName = '.wp_column.column-1.selected'; + break; + case 'djdt': + webPageName = '.wp_column.column-2.selected'; + break; + case 'zydt': + webPageName = '.wp_column.column-3.selected'; + break; + case 'fwdt': + webPageName = '.wp_column.column-4.selected'; + break; + default: + throw Error(`暂不支持对${type}的订阅`); + } + + const newsUrl = `${baseUrl}/${type}/list.htm`; + const listName = 'div.news_con'; + const artiContent = '.wp_articlecontent'; + const listDate = '.news_date'; + + const items = await util.ProcessList(newsUrl, baseUrl, listName, listDate, webPageName); + const results = await util.ProcessFeed(items[0], artiContent, ctx); + + ctx.state.data = { + title: 'NUA-图书馆-' + items[1], + link: `${baseUrl}/${type}/list.htm`, + description: '南京艺术学院 图书馆 ' + items[1], + item: results, + }; +}; diff --git a/lib/v2/nua/maintainer.js b/lib/v2/nua/maintainer.js index 6d4282961..6eb22a2fd 100644 --- a/lib/v2/nua/maintainer.js +++ b/lib/v2/nua/maintainer.js @@ -2,5 +2,6 @@ module.exports = { '/dc/:type': ['evnydd0sf'], '/gra/:type': ['evnydd0sf'], '/index/:type': ['evnydd0sf'], + '/lib/:type': ['evnydd0sf'], '/sxw/:type': ['evnydd0sf'], }; diff --git a/lib/v2/nua/radar.js b/lib/v2/nua/radar.js index 9052e31d1..7edd41efa 100644 --- a/lib/v2/nua/radar.js +++ b/lib/v2/nua/radar.js @@ -33,5 +33,13 @@ module.exports = { target: '/nua/gra/:type', }, ], + lib: [ + { + title: '图书馆', + docs: 'https://docs.rsshub.app/university.html#nan-jing-yi-shu-xue-yuan', + source: ['/:type/list.htm'], + target: '/nua/lib/:type', + }, + ], }, }; diff --git a/lib/v2/nua/router.js b/lib/v2/nua/router.js index c7ac0eec4..1dad1a1b6 100644 --- a/lib/v2/nua/router.js +++ b/lib/v2/nua/router.js @@ -2,5 +2,6 @@ module.exports = function (router) { router.get('/dc/:type', require('./dc')); router.get('/gra/:type', require('./gra')); router.get('/index/:type', require('./index')); + router.get('/lib/:type', require('./lib')); router.get('/sxw/:type', require('./sxw')); }; diff --git a/lib/v2/nua/utils.js b/lib/v2/nua/utils.js index fedef79f5..47ccfe8fd 100644 --- a/lib/v2/nua/utils.js +++ b/lib/v2/nua/utils.js @@ -23,26 +23,21 @@ function arti_link(text, href) { } async function ProcessList(newsUrl, baseUrl, listName, listDate, webPageName) { - const result = await got(newsUrl, { - https: { - rejectUnauthorized: false, - }, - }); + const result = await got(newsUrl, { https: { rejectUnauthorized: false } }); const $ = cheerio.load(result.data); - const pageName = $(webPageName).text(); + const pageName = $(webPageName).text().trim(); const items = $(listName) .toArray() .map((item) => { - item = $(item); const href = $(item).find('a').attr('href'); const type = pageType(href); return { link: type === 'in-nua' ? baseUrl + href : href, - title: item.find('a').attr('title'), - pubDate: timezone(parseDate(item.find(listDate).first().text(), 'YYYY-MM-DD'), +8), + title: $(item).find('a').attr('title'), + pubDate: timezone(parseDate($(item).find(listDate).first().text(), 'YYYY-MM-DD'), +8), type, }; }); @@ -55,14 +50,14 @@ const ProcessFeed = async (items, artiContent, ctx) => items.map((item) => ctx.cache.tryGet(item.link, async () => { switch (item.type) { - case 'in-nua' || 'nua': - // eslint-disable-next-line no-case-declarations + case 'in-nua': + case 'nua': { const result = await got(item.link, { https: { rejectUnauthorized: false } }); - // eslint-disable-next-line no-case-declarations const $ = cheerio.load(result.data); item.author = $('.arti_publisher').text() + ' ' + $('.arti_views').text(); item.description = $(artiContent).html(); return item; + } case 'wechat-mp': return fetchArticle(ctx, item.link); case 'unknown':