rsshub 1.0.0-master.f97cdb2 → 1.0.0-master.fa3428f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/config.js +3 -1
- package/lib/radar-rules.js +0 -92
- package/lib/router.js +68 -71
- package/lib/routes/tencent/wechat/miniprogram/framework.js +4 -2
- package/lib/utils/common-config.js +4 -0
- package/lib/utils/parse-date.js +8 -7
- package/lib/utils/rand-user-agent.js +29 -0
- package/lib/utils/request-wrapper.js +2 -5
- package/lib/utils/wechat-mp.js +106 -10
- package/lib/v2/agirls/index.js +6 -0
- package/lib/v2/bilibili/video.js +1 -0
- package/lib/v2/bookfere/category.js +36 -0
- package/lib/v2/bookfere/maintainer.js +3 -0
- package/lib/v2/bookfere/radar.js +11 -0
- package/lib/v2/bookfere/router.js +3 -0
- package/lib/v2/cankaoxiaoxi/index.js +81 -0
- package/lib/v2/cankaoxiaoxi/maintainer.js +3 -0
- package/lib/v2/cankaoxiaoxi/radar.js +61 -0
- package/lib/v2/cankaoxiaoxi/router.js +3 -0
- package/lib/{routes → v2}/cctv/category.js +1 -1
- package/lib/{routes → v2}/cctv/jx.js +6 -1
- package/lib/{routes → v2}/cctv/lm.js +1 -1
- package/lib/v2/cctv/maintainer.js +7 -0
- package/lib/v2/cctv/radar.js +41 -0
- package/lib/v2/cctv/router.js +7 -0
- package/lib/{routes → v2}/cctv/special.js +6 -4
- package/lib/{routes → v2}/cctv/utils/mzzlbg.js +8 -6
- package/lib/{routes → v2}/cctv/utils/news.js +25 -22
- package/lib/{routes → v2}/cctv/utils/xinwen1j1.js +20 -17
- package/lib/v2/cctv/xwlb.js +50 -0
- package/lib/v2/chinacef/experts.js +38 -0
- package/lib/v2/chinacef/hot.js +38 -0
- package/lib/v2/chinacef/index.js +39 -0
- package/lib/v2/chinacef/maintainer.js +5 -0
- package/lib/v2/chinacef/radar.js +25 -0
- package/lib/v2/chinacef/router.js +5 -0
- package/lib/v2/{wechat → chinacef}/templates/description.art +0 -0
- package/lib/v2/chinacef/utils.js +55 -0
- package/lib/v2/chinanews/index.js +65 -0
- package/lib/v2/chinanews/maintainer.js +3 -0
- package/lib/v2/chinanews/radar.js +13 -0
- package/lib/v2/chinanews/router.js +3 -0
- package/lib/v2/cnbeta/index.js +2 -1
- package/lib/v2/cnbeta/utils.js +1 -0
- package/lib/v2/dapenti/maintainer.js +4 -0
- package/lib/v2/dapenti/radar.js +27 -0
- package/lib/v2/dapenti/router.js +4 -0
- package/lib/{routes → v2}/dapenti/subject.js +1 -1
- package/lib/{routes → v2}/dapenti/tugua.js +1 -1
- package/lib/v2/dapenti/utils.js +75 -0
- package/lib/{routes → v2}/dongqiudi/daily.js +10 -13
- package/lib/v2/dongqiudi/maintainer.js +8 -0
- package/lib/{routes → v2}/dongqiudi/player_news.js +0 -0
- package/lib/v2/dongqiudi/radar.js +45 -0
- package/lib/{routes → v2}/dongqiudi/result.js +2 -1
- package/lib/v2/dongqiudi/router.js +8 -0
- package/lib/{routes → v2}/dongqiudi/special.js +0 -0
- package/lib/{routes → v2}/dongqiudi/team_news.js +0 -0
- package/lib/{routes → v2}/dongqiudi/top_news.js +12 -15
- package/lib/{routes → v2}/dongqiudi/utils.js +47 -28
- package/lib/v2/dut/defaults.js +53 -0
- package/lib/v2/dut/index.js +78 -0
- package/lib/v2/dut/maintainer.js +14 -0
- package/lib/v2/dut/radar.js +109 -0
- package/lib/v2/dut/router.js +4 -0
- package/lib/v2/dut/shortcuts.js +77 -0
- package/lib/{routes → v2}/dx2025/index.js +0 -0
- package/lib/v2/dx2025/maintainer.js +3 -0
- package/lib/v2/dx2025/radar.js +19 -0
- package/lib/v2/dx2025/router.js +3 -0
- package/lib/v2/e-hentai/radar.js +21 -3
- package/lib/v2/eagle/blog.js +47 -0
- package/lib/{routes → v2}/eagle/changelog.js +3 -1
- package/lib/v2/eagle/maintainer.js +4 -0
- package/lib/v2/eagle/radar.js +101 -0
- package/lib/v2/eagle/router.js +4 -0
- package/lib/{routes → v2}/ehentai/ehapi.js +50 -21
- package/lib/{routes → v2}/ehentai/favorites.js +4 -2
- package/lib/v2/ehentai/maintainer.js +5 -0
- package/lib/v2/ehentai/router.js +5 -0
- package/lib/{routes → v2}/ehentai/search.js +5 -3
- package/lib/{routes → v2}/ehentai/tag.js +4 -2
- package/lib/v2/firefox/index.js +7 -2
- package/lib/v2/fortunechina/index.js +1 -1
- package/lib/v2/github/comments.js +7 -0
- package/lib/v2/gitpod/blog.js +8 -0
- package/lib/v2/gov/maintainer.js +1 -0
- package/lib/v2/gov/nrta/news.js +63 -0
- package/lib/v2/gov/radar.js +11 -0
- package/lib/v2/gov/router.js +1 -0
- package/lib/v2/guancha/index.js +1 -1
- package/lib/v2/guangdiu/cheaps.js +28 -0
- package/lib/v2/guangdiu/index.js +44 -0
- package/lib/v2/guangdiu/maintainer.js +5 -0
- package/lib/v2/guangdiu/radar.js +25 -0
- package/lib/v2/guangdiu/rank.js +38 -0
- package/lib/v2/guangdiu/router.js +5 -0
- package/lib/{routes/guokr/calendar.js → v2/guokr/channel.js} +2 -2
- package/lib/v2/guokr/maintainer.js +4 -0
- package/lib/v2/guokr/radar.js +19 -0
- package/lib/v2/guokr/router.js +4 -0
- package/lib/{routes → v2}/guokr/scientific.js +3 -3
- package/lib/v2/hkej/index.js +9 -15
- package/lib/v2/hkepc/index.js +8 -0
- package/lib/v2/hket/index.js +10 -2
- package/lib/v2/huangz/index.js +29 -0
- package/lib/v2/huangz/maintainer.js +3 -0
- package/lib/v2/huangz/radar.js +13 -0
- package/lib/v2/huangz/router.js +3 -0
- package/lib/v2/huanqiu/index.js +65 -0
- package/lib/v2/huanqiu/maintainer.js +3 -0
- package/lib/v2/huanqiu/radar.js +13 -0
- package/lib/v2/huanqiu/router.js +3 -0
- package/lib/v2/miris/blog.js +19 -0
- package/lib/v2/miris/maintainer.js +3 -0
- package/lib/v2/miris/radar.js +11 -0
- package/lib/v2/miris/router.js +3 -0
- package/lib/v2/news/whxw.js +2 -2
- package/lib/v2/npm/package.js +1 -1
- package/lib/v2/npm/router.js +1 -1
- package/lib/v2/qbittorrent/maintainer.js +3 -0
- package/lib/v2/qbittorrent/news.js +59 -0
- package/lib/v2/qbittorrent/radar.js +13 -0
- package/lib/v2/qbittorrent/router.js +3 -0
- package/lib/v2/rsshub/sponsors.js +1 -0
- package/lib/{routes → v2}/sciencenet/blog.js +17 -12
- package/lib/v2/sciencenet/maintainer.js +4 -0
- package/lib/v2/sciencenet/radar.js +19 -0
- package/lib/v2/sciencenet/router.js +4 -0
- package/lib/v2/sciencenet/user.js +65 -0
- package/lib/v2/sdu/cmse.js +59 -0
- package/lib/v2/sdu/cs.js +57 -0
- package/lib/v2/sdu/data.js +110 -0
- package/lib/v2/sdu/epe.js +55 -0
- package/lib/v2/sdu/extractor/index.js +15 -0
- package/lib/v2/sdu/extractor/sdrj.js +21 -0
- package/lib/v2/sdu/extractor/view.js +21 -0
- package/lib/v2/sdu/extractor/wh/jwc.js +24 -0
- package/lib/v2/sdu/extractor/wh/news.js +21 -0
- package/lib/v2/sdu/maintainer.js +9 -0
- package/lib/v2/sdu/mech.js +60 -0
- package/lib/v2/sdu/radar.js +159 -0
- package/lib/v2/sdu/router.js +9 -0
- package/lib/v2/sdu/sc.js +61 -0
- package/lib/v2/sdu/wh/jwc.js +42 -0
- package/lib/v2/sdu/wh/news.js +38 -0
- package/lib/v2/stratechery/index.js +20 -0
- package/lib/v2/stratechery/maintainer.js +3 -0
- package/lib/v2/stratechery/radar.js +11 -0
- package/lib/v2/stratechery/router.js +3 -0
- package/lib/{routes → v2}/taptap/changelog.js +2 -1
- package/lib/v2/taptap/maintainer.js +5 -0
- package/lib/v2/taptap/radar.js +25 -0
- package/lib/v2/taptap/review.js +69 -0
- package/lib/v2/taptap/router.js +5 -0
- package/lib/v2/taptap/templates/videoPost.art +2 -0
- package/lib/v2/taptap/topic.js +79 -0
- package/lib/v2/taptap/utils.js +48 -0
- package/lib/v2/thecover/channel.js +66 -0
- package/lib/v2/thecover/maintainer.js +3 -0
- package/lib/v2/thecover/radar.js +13 -0
- package/lib/v2/thecover/router.js +3 -0
- package/lib/{routes → v2}/twreporter/category.js +7 -12
- package/lib/{routes → v2}/twreporter/fetch_article.js +5 -4
- package/lib/v2/twreporter/maintainer.js +5 -0
- package/lib/{routes → v2}/twreporter/newest.js +8 -13
- package/lib/v2/twreporter/photography.js +46 -0
- package/lib/v2/twreporter/radar.js +25 -0
- package/lib/v2/twreporter/router.js +5 -0
- package/lib/{routes/tencent → v2}/wechat/announce.js +3 -2
- package/lib/v2/wechat/ce.js +69 -0
- package/lib/v2/wechat/data258.js +137 -0
- package/lib/v2/wechat/ershcimi.js +35 -0
- package/lib/{routes/tencent → v2}/wechat/feeds.js +0 -0
- package/lib/v2/wechat/maintainer.js +11 -0
- package/lib/{routes/tencent → v2}/wechat/mp.js +0 -0
- package/lib/{routes/tencent → v2}/wechat/msgalbum.js +0 -0
- package/lib/v2/wechat/radar.js +76 -1
- package/lib/v2/wechat/router.js +11 -0
- package/lib/{routes/tencent → v2}/wechat/tgchannel.js +0 -0
- package/lib/{routes/tencent → v2}/wechat/uread.js +0 -0
- package/lib/{routes/tencent → v2}/wechat/wemp.js +0 -0
- package/lib/{routes/tencent → v2}/wechat/wxnmh.js +0 -0
- package/lib/{routes → v2}/xueqiu/favorite.js +2 -1
- package/lib/v2/xueqiu/fund.js +50 -0
- package/lib/{routes → v2}/xueqiu/hots.js +2 -1
- package/lib/v2/xueqiu/maintainer.js +10 -0
- package/lib/v2/xueqiu/radar.js +60 -0
- package/lib/v2/xueqiu/router.js +10 -0
- package/lib/{routes → v2}/xueqiu/snb.js +2 -1
- package/lib/{routes → v2}/xueqiu/stock_comments.js +4 -20
- package/lib/{routes → v2}/xueqiu/stock_info.js +2 -1
- package/lib/v2/xueqiu/templates/comments_description.art +10 -0
- package/lib/{routes → v2}/xueqiu/user.js +2 -1
- package/lib/{routes → v2}/xueqiu/user_stock.js +3 -2
- package/lib/v2/yunspe/maintainer.js +3 -0
- package/lib/v2/yunspe/newsflash.js +42 -0
- package/lib/v2/yunspe/radar.js +13 -0
- package/lib/v2/yunspe/router.js +3 -0
- package/lib/{routes → v2}/yystv/category.js +8 -8
- package/lib/{routes → v2}/yystv/docs.js +2 -2
- package/lib/v2/yystv/maintainer.js +4 -0
- package/lib/v2/yystv/radar.js +49 -0
- package/lib/v2/yystv/router.js +4 -0
- package/lib/{routes/universities → v2}/zju/career/index.js +14 -13
- package/lib/{routes/universities → v2}/zju/cst/custom.js +2 -1
- package/lib/{routes/universities → v2}/zju/cst/index.js +20 -24
- package/lib/v2/zju/grs/index.js +43 -0
- package/lib/v2/zju/list.js +66 -0
- package/lib/v2/zju/maintainer.js +8 -0
- package/lib/v2/zju/physics/index.js +52 -0
- package/lib/v2/zju/radar.js +139 -0
- package/lib/v2/zju/router.js +8 -0
- package/lib/views/atom.art +13 -1
- package/lib/views/welcome.art +4 -1
- package/package.json +13 -12
- package/lib/routes/cctv/xwlb.js +0 -48
- package/lib/routes/dapenti/utils.js +0 -73
- package/lib/routes/taptap/review.js +0 -39
- package/lib/routes/taptap/topic.js +0 -85
- package/lib/routes/tencent/wechat/_README +0 -1
- package/lib/routes/tencent/wechat/ce.js +0 -40
- package/lib/routes/tencent/wechat/ershcimi.js +0 -43
- package/lib/routes/twreporter/photography.js +0 -57
- package/lib/routes/universities/dut/index.js +0 -60
- package/lib/routes/universities/dut/subsite.js +0 -50
- package/lib/routes/universities/sdu/cmse.js +0 -55
- package/lib/routes/universities/sdu/cs.js +0 -55
- package/lib/routes/universities/sdu/epe.js +0 -54
- package/lib/routes/universities/sdu/mech.js +0 -58
- package/lib/routes/universities/sdu/sc.js +0 -56
- package/lib/routes/universities/zju/grs/index.js +0 -44
- package/lib/routes/universities/zju/list.js +0 -78
- package/lib/routes/universities/zju/physics/index.js +0 -55
- package/lib/routes/xueqiu/fund.js +0 -71
- package/lib/v2/wechat/templates/image.art +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
3
4
|
|
|
4
5
|
const host = 'http://www.cst.zju.edu.cn/';
|
|
5
6
|
|
|
@@ -33,7 +34,7 @@ async function getPage(id) {
|
|
|
33
34
|
item = $(item);
|
|
34
35
|
return {
|
|
35
36
|
title: item.find('a').text(),
|
|
36
|
-
pubDate:
|
|
37
|
+
pubDate: parseDate(item.find('.fr').text()),
|
|
37
38
|
link: item.find('a').attr('href'),
|
|
38
39
|
};
|
|
39
40
|
})
|
|
@@ -42,7 +43,7 @@ async function getPage(id) {
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
module.exports = async (ctx) => {
|
|
45
|
-
const type =
|
|
46
|
+
const type = parseInt(ctx.params.type);
|
|
46
47
|
const link = host + map.get(type).id;
|
|
47
48
|
let items = [];
|
|
48
49
|
if (type === 0) {
|
|
@@ -59,30 +60,25 @@ module.exports = async (ctx) => {
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
const out = await Promise.all(
|
|
62
|
-
items.map(
|
|
63
|
+
items.map((item) => {
|
|
63
64
|
const itemUrl = host + item.link;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
return ctx.cache.tryGet(itemUrl, async () => {
|
|
66
|
+
const response = await got({
|
|
67
|
+
method: 'get',
|
|
68
|
+
url: itemUrl,
|
|
69
|
+
headers: {
|
|
70
|
+
Referer: link,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
const $ = cheerio.load(response.data);
|
|
74
|
+
const description = $('.vid_wz').html();
|
|
75
|
+
return {
|
|
76
|
+
title: item.title,
|
|
77
|
+
link: itemUrl,
|
|
78
|
+
description,
|
|
79
|
+
pubDate: item.pubDate,
|
|
80
|
+
};
|
|
75
81
|
});
|
|
76
|
-
const $ = cheerio.load(response.data);
|
|
77
|
-
const description = $('.vid_wz').html();
|
|
78
|
-
const single = {
|
|
79
|
-
title: item.title,
|
|
80
|
-
link: itemUrl,
|
|
81
|
-
description,
|
|
82
|
-
pubDate: item.pubDate,
|
|
83
|
-
};
|
|
84
|
-
ctx.cache.set(itemUrl, JSON.stringify(single));
|
|
85
|
-
return Promise.resolve(single);
|
|
86
82
|
})
|
|
87
83
|
);
|
|
88
84
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
4
|
+
|
|
5
|
+
const host = 'http://www.grs.zju.edu.cn/';
|
|
6
|
+
|
|
7
|
+
const map = new Map([
|
|
8
|
+
[1, { title: '浙大研究生院 -- 全部公告', tag: '1335' }],
|
|
9
|
+
[2, { title: '浙大研究生院 -- 教学管理', tag: '1336' }],
|
|
10
|
+
[3, { title: '浙大研究生院 -- 各类资助', tag: '1337' }],
|
|
11
|
+
[4, { title: '浙大研究生院 -- 学科建设', tag: '1338' }],
|
|
12
|
+
[5, { title: '浙大研究生院 -- 海外交流', tag: '1339' }],
|
|
13
|
+
]);
|
|
14
|
+
|
|
15
|
+
module.exports = async (ctx) => {
|
|
16
|
+
const type = parseInt(ctx.params.type);
|
|
17
|
+
const tag = map.get(type).tag;
|
|
18
|
+
const url = `${host}${tag}/list.htm`;
|
|
19
|
+
const res = await got(url);
|
|
20
|
+
|
|
21
|
+
const $ = cheerio.load(res.data);
|
|
22
|
+
const list = $('#wp_news_w24').find('.list_nav');
|
|
23
|
+
|
|
24
|
+
const items =
|
|
25
|
+
list &&
|
|
26
|
+
list
|
|
27
|
+
.map((index, item) => {
|
|
28
|
+
item = $(item);
|
|
29
|
+
return {
|
|
30
|
+
title: item.find('.list_tit').children('a').attr('title'),
|
|
31
|
+
pubDate: parseDate(item.find('.list_time').text()),
|
|
32
|
+
link: `http://www.grs.zju.edu.cn/${item.find('a').eq(-1).attr('href')}`,
|
|
33
|
+
description: item.find('.list_intro a').text(),
|
|
34
|
+
};
|
|
35
|
+
})
|
|
36
|
+
.get();
|
|
37
|
+
|
|
38
|
+
ctx.state.data = {
|
|
39
|
+
title: map.get(type).title,
|
|
40
|
+
link: `${host}${tag}/list.htm`,
|
|
41
|
+
item: items,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
4
|
+
const host = 'https://www.zju.edu.cn/';
|
|
5
|
+
module.exports = async (ctx) => {
|
|
6
|
+
const type = ctx.params.type ?? 'xs';
|
|
7
|
+
const link = host + type + `/list.htm`;
|
|
8
|
+
const response = await got({
|
|
9
|
+
method: 'get',
|
|
10
|
+
url: link,
|
|
11
|
+
headers: {
|
|
12
|
+
Referer: host,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const $ = cheerio.load(response.data);
|
|
16
|
+
|
|
17
|
+
function sortUrl(e) {
|
|
18
|
+
if (e.search('redirect') !== -1) {
|
|
19
|
+
return link;
|
|
20
|
+
} else {
|
|
21
|
+
return e;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const list = $('#wp_news_w7 ul.news li')
|
|
25
|
+
.map(function () {
|
|
26
|
+
const info = {
|
|
27
|
+
title: $(this).find('a').attr('title'),
|
|
28
|
+
link: sortUrl($(this).find('a').attr('href')),
|
|
29
|
+
date: $(this)
|
|
30
|
+
.text()
|
|
31
|
+
.match(/\d{4}-\d{2}-\d{2}/)[0],
|
|
32
|
+
};
|
|
33
|
+
return info;
|
|
34
|
+
})
|
|
35
|
+
.get();
|
|
36
|
+
|
|
37
|
+
const out = await Promise.all(
|
|
38
|
+
list.map((info) => {
|
|
39
|
+
const title = info.title;
|
|
40
|
+
const date = info.date;
|
|
41
|
+
const itemUrl = new URL(info.link, host).href;
|
|
42
|
+
return ctx.cache.tryGet(itemUrl, async () => {
|
|
43
|
+
const response = await got({
|
|
44
|
+
method: 'get',
|
|
45
|
+
url: itemUrl,
|
|
46
|
+
headers: {
|
|
47
|
+
Referer: link,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
const $ = cheerio.load(response.data);
|
|
51
|
+
const description = $('.right_content').html();
|
|
52
|
+
return {
|
|
53
|
+
title,
|
|
54
|
+
link: itemUrl,
|
|
55
|
+
description,
|
|
56
|
+
pubDate: parseDate(date),
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
ctx.state.data = {
|
|
62
|
+
title: `浙江大学` + $('ul.submenu .selected').text(),
|
|
63
|
+
link,
|
|
64
|
+
item: out,
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
4
|
+
|
|
5
|
+
// const host = 'http://physics.zju.edu.cn/redir.php?catalog_id=';
|
|
6
|
+
const host = 'http://physics.zju.edu.cn';
|
|
7
|
+
// const host = 'http://10.14.122.238/redir.php?catalog_id=';
|
|
8
|
+
|
|
9
|
+
const map = new Map([
|
|
10
|
+
[1, { title: '浙大物理学院 -- 本院动态', id: '39060' }],
|
|
11
|
+
[2, { title: '浙大物理学院 -- 科研进展', id: '39070' }],
|
|
12
|
+
[3, { title: '浙大物理学院 -- 研究生教育最新消息', id: '39079' }],
|
|
13
|
+
|
|
14
|
+
// could not find these sections due to http://physics.zju.edu.cn/2022/0325/c39060a2510676/page.htm
|
|
15
|
+
/* [4, { title: '浙大物理学院 -- 学生思政最新消息', id: '112' }],
|
|
16
|
+
[5, { title: '浙大物理学院 -- 研究生思政消息公告', id: '155' }],
|
|
17
|
+
[6, { title: '浙大物理学院 -- 研究生奖助学金', id: '661' }],
|
|
18
|
+
[7, { title: '浙大物理学院 -- 研究生思政就业信息', id: '664' }],
|
|
19
|
+
[8, { title: '浙大物理学院 -- 本科生思政消息公告', id: '667' }],
|
|
20
|
+
[9, { title: '浙大物理学院 -- 本科生奖助学金', id: '670' }],
|
|
21
|
+
[10, { title: '浙大物理学院 -- 本科生就业信息', id: '671' }],
|
|
22
|
+
[11, { title: '浙大物理学院 -- 学术报告', id: '3735' }],*/
|
|
23
|
+
]);
|
|
24
|
+
|
|
25
|
+
module.exports = async (ctx) => {
|
|
26
|
+
const type = parseInt(ctx.params.type);
|
|
27
|
+
const id = map.get(type).id;
|
|
28
|
+
const res = await got({
|
|
29
|
+
method: 'get',
|
|
30
|
+
url: `${host}/${id}/list.htm`,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const $ = cheerio.load(res.data);
|
|
34
|
+
const items = $('#arthd li')
|
|
35
|
+
.map((index, item) => {
|
|
36
|
+
item = $(item);
|
|
37
|
+
return {
|
|
38
|
+
title: item.find('a').attr('title'),
|
|
39
|
+
pubDate: parseDate(item.find('.art-date').text()),
|
|
40
|
+
|
|
41
|
+
link: `http://physics.zju.edu.cn/${item.find('a').attr('href')}`,
|
|
42
|
+
// link: `http://10.14.122.238/${item.find('a').attr('href')}`,
|
|
43
|
+
};
|
|
44
|
+
})
|
|
45
|
+
.get();
|
|
46
|
+
|
|
47
|
+
ctx.state.data = {
|
|
48
|
+
title: map.get(type).title,
|
|
49
|
+
link: `${host}${id}`,
|
|
50
|
+
item: items,
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
'zju.edu.cn': {
|
|
3
|
+
_name: '浙江大学',
|
|
4
|
+
physics: [
|
|
5
|
+
{
|
|
6
|
+
title: '物理学院',
|
|
7
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
8
|
+
source: ['/*path'],
|
|
9
|
+
target: (params) => {
|
|
10
|
+
let type;
|
|
11
|
+
switch (params.path) {
|
|
12
|
+
case '39060/list.htm':
|
|
13
|
+
type = '1';
|
|
14
|
+
break;
|
|
15
|
+
case '39070/list.htm':
|
|
16
|
+
type = '2';
|
|
17
|
+
break;
|
|
18
|
+
case '39079/list.htm':
|
|
19
|
+
type = '3';
|
|
20
|
+
break;
|
|
21
|
+
default:
|
|
22
|
+
type = '1';
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
return `/zju/physics/${type}`;
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
www: [
|
|
30
|
+
{
|
|
31
|
+
title: '普通栏目',
|
|
32
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
33
|
+
source: ['/*path'],
|
|
34
|
+
target: (params) => `/zju/list/${params.path.replace('/list.htm', '')}`,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
'www.career': [
|
|
38
|
+
{
|
|
39
|
+
title: '就业服务平台',
|
|
40
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
41
|
+
source: ['/'],
|
|
42
|
+
target: '/zju/career/1',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
'www.cst': [
|
|
46
|
+
{
|
|
47
|
+
title: '软件学院 - 全部通知',
|
|
48
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
49
|
+
source: ['', '/*tpath'],
|
|
50
|
+
target: '/zju/cst/0',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: '软件学院 - 招生信息',
|
|
54
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
55
|
+
source: '/32178/list.htm',
|
|
56
|
+
target: '/zju/cst/1',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: '软件学院 - 教务管理',
|
|
60
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
61
|
+
source: '/36216/list.htm',
|
|
62
|
+
target: '/zju/cst/2',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
title: '软件学院 - 论文管理',
|
|
66
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
67
|
+
source: '/36217/list.htm',
|
|
68
|
+
target: '/zju/cst/3',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: '软件学院 - 思政工作',
|
|
72
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
73
|
+
source: '/36192/list.htm',
|
|
74
|
+
target: '/zju/cst/4',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: '软件学院 - 评奖评优',
|
|
78
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
79
|
+
source: '/36228/list.htm',
|
|
80
|
+
target: '/zju/cst/5',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
title: '软件学院 - 实习就业',
|
|
84
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
85
|
+
source: '/36193/list.htm',
|
|
86
|
+
target: '/zju/cst/6',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
title: '软件学院 - 国际实习',
|
|
90
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
91
|
+
source: '/36235/list.htm',
|
|
92
|
+
target: '/zju/cst/7',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
title: '软件学院 - 国内合作科研',
|
|
96
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
97
|
+
source: '/36194/list.htm',
|
|
98
|
+
target: '/zju/cst/8',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
title: '软件学院 - 国际合作科研',
|
|
102
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
103
|
+
source: '/36246/list.htm',
|
|
104
|
+
target: '/zju/cst/9',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
'www.grs': [
|
|
108
|
+
{
|
|
109
|
+
title: '研究生院',
|
|
110
|
+
docs: 'https://docs.rsshub.app/university.html#zhe-jiang-da-xue',
|
|
111
|
+
source: ['/*path', '/'],
|
|
112
|
+
target: (params) => {
|
|
113
|
+
let type;
|
|
114
|
+
switch (params.path) {
|
|
115
|
+
case '1335/list.htm':
|
|
116
|
+
type = 1;
|
|
117
|
+
break;
|
|
118
|
+
case '1336/list.htm':
|
|
119
|
+
type = 2;
|
|
120
|
+
break;
|
|
121
|
+
case '1337/list.htm':
|
|
122
|
+
type = 3;
|
|
123
|
+
break;
|
|
124
|
+
case '1338/list.htm':
|
|
125
|
+
type = 4;
|
|
126
|
+
break;
|
|
127
|
+
case '1339/list.htm':
|
|
128
|
+
type = 5;
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
type = 1;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
return `/zju/grs/${type}`;
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
module.exports = (router) => {
|
|
2
|
+
router.get('/career/:type', require('./career'));
|
|
3
|
+
router.get('/cst/custom/:id', require('./cst/custom'));
|
|
4
|
+
router.get('/cst/:type', require('./cst'));
|
|
5
|
+
router.get('/grs/:type', require('./grs'));
|
|
6
|
+
router.get('/list/:type', require('./list'));
|
|
7
|
+
router.get('/physics/:type', require('./physics'));
|
|
8
|
+
};
|
package/lib/views/atom.art
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:rsshub="http://rsshub.app/xml/schemas">
|
|
3
3
|
<generator>RSSHub</generator>
|
|
4
4
|
<webMaster>i@diygod.me (DIYgod)</webMaster>
|
|
5
5
|
<language>{{ language || 'zh-cn' }}</language>
|
|
@@ -50,6 +50,18 @@
|
|
|
50
50
|
|
|
51
51
|
<link href="{{ $e.link }}" />
|
|
52
52
|
|
|
53
|
+
{{ if $e.upvotes }}
|
|
54
|
+
<rsshub:upvotes>{{ $e.upvotes }}</rsshub:upvotes>
|
|
55
|
+
{{ /if }}
|
|
56
|
+
|
|
57
|
+
{{ if $e.downvotes }}
|
|
58
|
+
<rsshub:downvotes>{{ $e.downvotes }}</rsshub:downvotes>
|
|
59
|
+
{{ /if }}
|
|
60
|
+
|
|
61
|
+
{{ if $e.comments }}
|
|
62
|
+
<rsshub:comments>{{ $e.comments }}</rsshub:comments>
|
|
63
|
+
{{ /if }}
|
|
64
|
+
|
|
53
65
|
{{ if $e.summary }}
|
|
54
66
|
<summary type="html"><![CDATA[{{@ $e.summary }}]]></summary>
|
|
55
67
|
{{ /if }}
|
package/lib/views/welcome.art
CHANGED
|
@@ -60,15 +60,18 @@
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
.debug-item {
|
|
63
|
+
white-space: nowrap;
|
|
63
64
|
margin: 5px 0;
|
|
64
65
|
font-size: 12px;
|
|
65
66
|
line-height: 24px;
|
|
67
|
+
max-width: 75%;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
.debug-value {
|
|
71
|
+
white-space: pre-wrap !important;
|
|
72
|
+
overflow-wrap: anywhere;
|
|
69
73
|
display: inline-block;
|
|
70
74
|
vertical-align: top;
|
|
71
|
-
white-space: pre;
|
|
72
75
|
}
|
|
73
76
|
</style>
|
|
74
77
|
</head>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rsshub",
|
|
3
|
-
"version": "1.0.0-master.
|
|
3
|
+
"version": "1.0.0-master.fa3428f",
|
|
4
4
|
"description": "Make RSS Great Again!",
|
|
5
5
|
"main": "lib/pkg.js",
|
|
6
6
|
"files": [
|
|
@@ -42,18 +42,18 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@napi-rs/pinyin": "1.7.0",
|
|
44
44
|
"@types/koa": "2.13.4",
|
|
45
|
-
"@vercel/nft": "0.18.
|
|
45
|
+
"@vercel/nft": "0.18.2",
|
|
46
46
|
"@vuepress/plugin-back-to-top": "1.9.7",
|
|
47
47
|
"@vuepress/plugin-google-analytics": "1.9.7",
|
|
48
48
|
"@vuepress/plugin-pwa": "1.9.7",
|
|
49
49
|
"@vuepress/shared-utils": "1.9.7",
|
|
50
50
|
"ci-info": "3.3.0",
|
|
51
51
|
"cross-env": "7.0.3",
|
|
52
|
-
"eslint": "8.
|
|
52
|
+
"eslint": "8.13.0",
|
|
53
53
|
"eslint-config-prettier": "8.5.0",
|
|
54
54
|
"eslint-plugin-prettier": "4.0.0",
|
|
55
55
|
"eslint-plugin-yml": "0.14.0",
|
|
56
|
-
"fs-extra": "10.0
|
|
56
|
+
"fs-extra": "10.1.0",
|
|
57
57
|
"jest": "27.5.1",
|
|
58
58
|
"mockdate": "3.0.5",
|
|
59
59
|
"nock": "13.2.4",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@koa/router": "10.1.1",
|
|
79
79
|
"@postlight/mercury-parser": "2.2.1",
|
|
80
|
-
"@sentry/node": "6.19.
|
|
80
|
+
"@sentry/node": "6.19.6",
|
|
81
81
|
"aes-js": "3.1.2",
|
|
82
82
|
"art-template": "4.13.2",
|
|
83
83
|
"bbcodejs": "0.0.4",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"city-timezones": "1.2.0",
|
|
87
87
|
"crypto-js": "4.1.1",
|
|
88
88
|
"currency-symbol-map": "5.0.1",
|
|
89
|
-
"dayjs": "1.11.
|
|
89
|
+
"dayjs": "1.11.1",
|
|
90
90
|
"dotenv": "16.0.0",
|
|
91
91
|
"emailjs-imap-client": "3.1.0",
|
|
92
92
|
"entities": "3.0.1",
|
|
@@ -95,10 +95,10 @@
|
|
|
95
95
|
"git-rev-sync": "3.0.2",
|
|
96
96
|
"googleapis": "100.0.0",
|
|
97
97
|
"got": "11.8.3",
|
|
98
|
-
"https-proxy-agent": "5.0.
|
|
98
|
+
"https-proxy-agent": "5.0.1",
|
|
99
99
|
"iconv-lite": "0.6.3",
|
|
100
100
|
"instagram-private-api": "1.45.3",
|
|
101
|
-
"ioredis": "5.0.
|
|
101
|
+
"ioredis": "5.0.4",
|
|
102
102
|
"ip": "*",
|
|
103
103
|
"ip-regex": "4.3.0",
|
|
104
104
|
"is-localhost-ip": "1.4.0",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"koa-basic-auth": "4.0.0",
|
|
110
110
|
"koa-favicon": "2.1.0",
|
|
111
111
|
"koa-mount": "4.0.0",
|
|
112
|
-
"lru-cache": "7.
|
|
112
|
+
"lru-cache": "7.8.1",
|
|
113
113
|
"lz-string": "1.4.4",
|
|
114
114
|
"mailparser": "3.4.0",
|
|
115
115
|
"markdown-it": "12.3.2",
|
|
@@ -117,13 +117,14 @@
|
|
|
117
117
|
"parse-torrent": "9.1.5",
|
|
118
118
|
"pidusage": "3.0.0",
|
|
119
119
|
"plist": "3.0.5",
|
|
120
|
-
"puppeteer": "13.
|
|
120
|
+
"puppeteer": "13.6.0",
|
|
121
121
|
"query-string": "7.1.1",
|
|
122
|
+
"rand-user-agent": "1.0.59",
|
|
122
123
|
"require-all": "3.0.0",
|
|
123
124
|
"rss-parser": "3.12.0",
|
|
124
|
-
"showdown": "2.0
|
|
125
|
+
"showdown": "2.1.0",
|
|
125
126
|
"simplecc-wasm": "0.1.4",
|
|
126
|
-
"socks-proxy-agent": "6.
|
|
127
|
+
"socks-proxy-agent": "6.2.0",
|
|
127
128
|
"string-similarity": "4.0.4",
|
|
128
129
|
"tiny-async-pool": "2.0.1",
|
|
129
130
|
"torrent-search-api": "2.1.4",
|
package/lib/routes/cctv/xwlb.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
const got = require('@/utils/got');
|
|
2
|
-
const date = require('@/utils/date');
|
|
3
|
-
const cheerio = require('cheerio');
|
|
4
|
-
const dayjs = require('dayjs');
|
|
5
|
-
require('dayjs/locale/zh-cn');
|
|
6
|
-
|
|
7
|
-
module.exports = async (ctx) => {
|
|
8
|
-
const res = await got({ method: 'get', url: 'http://tv.cctv.com/lm/xwlb/' });
|
|
9
|
-
const $ = cheerio.load(res.data);
|
|
10
|
-
// 解析最新一期新闻联播的日期
|
|
11
|
-
const latestDate = dayjs(date($('.md .mh_title > a').text().replace(/\s/g, '')), { locale: 'zh-cn' });
|
|
12
|
-
const count = [];
|
|
13
|
-
for (let i = 0; i < 20; i++) {
|
|
14
|
-
count.push(i);
|
|
15
|
-
}
|
|
16
|
-
const resultItems = await Promise.all(
|
|
17
|
-
count.map(async (i) => {
|
|
18
|
-
const newsDate = latestDate.subtract(i, 'days').set('hour', 19);
|
|
19
|
-
const url = `http://tv.cctv.com/lm/xwlb/day/${newsDate.format('YYYYMMDD')}.shtml`;
|
|
20
|
-
const item = {
|
|
21
|
-
title: `新闻联播 ${newsDate.format('YYYY/MM/DD')}`,
|
|
22
|
-
link: url,
|
|
23
|
-
pubDate: newsDate.toISOString(),
|
|
24
|
-
description: await ctx.cache.tryGet(url, async () => {
|
|
25
|
-
const res = await got.get(url);
|
|
26
|
-
const content = cheerio.load(res.data);
|
|
27
|
-
const alist = new Array();
|
|
28
|
-
content('a').map((i, e) => {
|
|
29
|
-
const a = content(e);
|
|
30
|
-
const href = a.attr('href');
|
|
31
|
-
const title = a.find('.text .title').text();
|
|
32
|
-
const dur = a.find('.text .bottom').text();
|
|
33
|
-
alist.push(`<a href="${href}">${title} ⏱${dur}</a>`);
|
|
34
|
-
return i;
|
|
35
|
-
});
|
|
36
|
-
return alist.join('<br/>\n');
|
|
37
|
-
}),
|
|
38
|
-
};
|
|
39
|
-
return item;
|
|
40
|
-
})
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
ctx.state.data = {
|
|
44
|
-
title: 'CCTV 新闻联播',
|
|
45
|
-
link: 'http://tv.cctv.com/lm/xwlb/',
|
|
46
|
-
item: resultItems,
|
|
47
|
-
};
|
|
48
|
-
};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
const got = require('@/utils/got');
|
|
2
|
-
const cheerio = require('cheerio');
|
|
3
|
-
const iconv = require('iconv-lite');
|
|
4
|
-
const { parseDate } = require('@/utils/parse-date');
|
|
5
|
-
const timezone = require('@/utils/timezone');
|
|
6
|
-
|
|
7
|
-
module.exports = {
|
|
8
|
-
parseFeed: async ({ subjectid }) => {
|
|
9
|
-
const url = `https://www.dapenti.com/blog/blog.asp?name=xilei&subjectid=${subjectid}`;
|
|
10
|
-
const listRes = await got({
|
|
11
|
-
method: 'get',
|
|
12
|
-
url,
|
|
13
|
-
headers: {
|
|
14
|
-
Referer: url,
|
|
15
|
-
},
|
|
16
|
-
// 喷嚏网编码为GBK,需要转码
|
|
17
|
-
// 转码需要设定返回数据的格式,其可选项是arraybuffer,blob,document,json,text,stream
|
|
18
|
-
// 默认为json
|
|
19
|
-
responseType: 'buffer',
|
|
20
|
-
});
|
|
21
|
-
// 转码
|
|
22
|
-
const data = iconv.decode(listRes.data, 'gb2312');
|
|
23
|
-
const $ = cheerio.load(data);
|
|
24
|
-
// 只取最近的三个,取全文rss
|
|
25
|
-
const list = $('li', 'ul').slice(0, 3).get();
|
|
26
|
-
|
|
27
|
-
const result_item = await Promise.all(
|
|
28
|
-
list.map(async (item) => {
|
|
29
|
-
const el = $(item);
|
|
30
|
-
const url = `https://www.dapenti.com/blog/${el.find('a').attr('href')}`;
|
|
31
|
-
const original_data = await got({
|
|
32
|
-
method: 'get',
|
|
33
|
-
url,
|
|
34
|
-
headers: {
|
|
35
|
-
Referer: url,
|
|
36
|
-
},
|
|
37
|
-
responseType: 'buffer',
|
|
38
|
-
});
|
|
39
|
-
const convert_data = iconv.decode(original_data.data, 'gbk');
|
|
40
|
-
const description = cheerio.load(convert_data, {
|
|
41
|
-
decodeEntities: false,
|
|
42
|
-
})('body > table > tbody > tr > td.oblog_t_2 > div > table > tbody > tr:nth-child(2) > td');
|
|
43
|
-
const pubInfo = description.find('span span.oblog_text').text().split('发布于');
|
|
44
|
-
description.find('table, .adsbygoogle').remove();
|
|
45
|
-
|
|
46
|
-
// remove header
|
|
47
|
-
const count = subjectid.toString() === '70' ? 8 : 3;
|
|
48
|
-
for (let index = 0; index < count; index++) {
|
|
49
|
-
description.children().first().remove();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// remove footer
|
|
53
|
-
for (let index = 0; index < 8; index++) {
|
|
54
|
-
description.children().last().remove();
|
|
55
|
-
}
|
|
56
|
-
const single = {
|
|
57
|
-
title: el.text(),
|
|
58
|
-
author: pubInfo[0].trim(),
|
|
59
|
-
description: description.html(),
|
|
60
|
-
pubDate: timezone(parseDate(pubInfo[1].trim()), +8),
|
|
61
|
-
link: url,
|
|
62
|
-
};
|
|
63
|
-
return single;
|
|
64
|
-
})
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
return {
|
|
68
|
-
title: `喷嚏-${subjectid}`,
|
|
69
|
-
link: url,
|
|
70
|
-
item: result_item,
|
|
71
|
-
};
|
|
72
|
-
},
|
|
73
|
-
};
|