rsshub 1.0.0-master.fe69819 → 1.0.0-master.fee75c6
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/lib/config.js +4 -0
- package/lib/radar-rules.js +0 -162
- package/lib/router.js +82 -83
- package/lib/routes/dsndsht23/index.js +2 -1
- package/lib/routes/ehentai/ehapi.js +16 -6
- package/lib/routes/ehentai/favorites.js +14 -7
- package/lib/routes/ehentai/search.js +14 -5
- package/lib/routes/ehentai/tag.js +14 -5
- package/lib/routes/mofish/index.js +21 -9
- package/lib/routes/mofish/templates/description.art +4 -0
- package/lib/routes/or/index.js +1 -1
- package/lib/routes/prestige-av/series.js +3 -6
- package/lib/routes/tencent/wechat/tgchannel.js +84 -29
- package/lib/routes/weibo/timeline.js +18 -1
- package/lib/routes/weibo/user.js +19 -3
- package/lib/routes/weibo/utils.js +113 -5
- package/lib/routes/zhihu/hot.js +3 -2
- package/lib/v2/36kr/maintainer.js +7 -0
- package/lib/{routes → v2}/36kr/motif.js +2 -1
- package/lib/v2/36kr/news.js +56 -0
- package/lib/{routes → v2}/36kr/newsflashes.js +2 -1
- package/lib/v2/36kr/radar.js +37 -0
- package/lib/v2/36kr/router.js +7 -0
- package/lib/{routes → v2}/36kr/search/article.js +3 -2
- package/lib/{routes → v2}/36kr/user.js +2 -1
- package/lib/v2/52hrtt/index.js +57 -0
- package/lib/v2/52hrtt/maintainer.js +4 -0
- package/lib/v2/52hrtt/radar.js +19 -0
- package/lib/v2/52hrtt/router.js +4 -0
- package/lib/v2/52hrtt/symposium.js +57 -0
- package/lib/v2/8kcos/article.js +24 -0
- package/lib/v2/8kcos/cat.js +22 -0
- package/lib/{routes → v2}/8kcos/const.js +0 -0
- package/lib/v2/8kcos/latest.js +23 -0
- package/lib/v2/8kcos/maintainer.js +5 -0
- package/lib/v2/8kcos/radar.js +25 -0
- package/lib/v2/8kcos/router.js +5 -0
- package/lib/v2/8kcos/tag.js +23 -0
- package/lib/{routes → v2}/95mm/category.js +5 -3
- package/lib/v2/95mm/maintainer.js +5 -0
- package/lib/v2/95mm/radar.js +25 -0
- package/lib/v2/95mm/router.js +5 -0
- package/lib/v2/95mm/tab.js +9 -0
- package/lib/v2/95mm/tag.js +9 -0
- package/lib/v2/95mm/templates/description.art +3 -0
- package/lib/v2/95mm/utils.js +59 -0
- package/lib/v2/abskoop/index.js +52 -0
- package/lib/v2/abskoop/maintainer.js +3 -0
- package/lib/v2/abskoop/radar.js +13 -0
- package/lib/v2/abskoop/router.js +3 -0
- package/lib/v2/abskoop/templates/description.art +3 -0
- package/lib/v2/apple/exchange_repair.js +40 -0
- package/lib/v2/apple/maintainer.js +3 -0
- package/lib/v2/apple/radar.js +13 -0
- package/lib/v2/apple/router.js +3 -0
- package/lib/{routes/apple → v2}/appstore/gofans.js +3 -3
- package/lib/{routes/apple → v2}/appstore/in-app-purchase.js +0 -0
- package/lib/v2/appstore/maintainer.js +7 -0
- package/lib/{routes/apple → v2}/appstore/price.js +0 -0
- package/lib/v2/appstore/radar.js +41 -0
- package/lib/v2/appstore/router.js +7 -0
- package/lib/{routes/apple → v2}/appstore/update.js +0 -0
- package/lib/{routes/apple → v2}/appstore/xianmian.js +3 -2
- package/lib/{routes/universities → v2}/bjfu/grs.js +0 -0
- package/lib/v2/bjfu/it/index.js +49 -0
- package/lib/v2/bjfu/it/utils.js +64 -0
- package/lib/{routes/universities → v2}/bjfu/jwc/index.js +0 -0
- package/lib/{routes/universities → v2}/bjfu/jwc/utils.js +10 -9
- package/lib/{routes/universities → v2}/bjfu/kjc.js +0 -0
- package/lib/v2/bjfu/maintainer.js +7 -0
- package/lib/{routes/universities → v2}/bjfu/news/index.js +0 -0
- package/lib/{routes/universities → v2}/bjfu/news/utils.js +10 -9
- package/lib/v2/bjfu/radar.js +45 -0
- package/lib/v2/bjfu/router.js +7 -0
- package/lib/v2/dahecube/index.js +66 -0
- package/lib/v2/dahecube/maintainer.js +3 -0
- package/lib/v2/dahecube/radar.js +23 -0
- package/lib/v2/dahecube/router.js +3 -0
- package/lib/v2/dahecube/utils.js +47 -0
- package/lib/v2/dhu/jiaowu/news.js +37 -0
- package/lib/v2/dhu/maintainer.js +4 -0
- package/lib/v2/dhu/radar.js +17 -0
- package/lib/v2/dhu/router.js +4 -0
- package/lib/v2/dhu/xxgk/news.js +32 -0
- package/lib/v2/douban/people/wish.js +2 -1
- package/lib/{routes → v2}/dtcj/datahero.js +3 -2
- package/lib/v2/dtcj/datainsight.js +53 -0
- package/lib/v2/dtcj/maintainer.js +4 -0
- package/lib/v2/dtcj/radar.js +25 -0
- package/lib/v2/dtcj/router.js +4 -0
- package/lib/v2/eastday/24.js +90 -0
- package/lib/v2/eastday/maintainer.js +2 -0
- package/lib/v2/eastday/radar.js +16 -0
- package/lib/v2/eastday/router.js +2 -0
- package/lib/{routes → v2}/eastday/sh.js +6 -11
- package/lib/v2/eastmoney/radar.js +13 -0
- package/lib/v2/eastmoney/router.js +3 -0
- package/lib/v2/eastmoney/ttjj/user.js +65 -0
- package/lib/v2/ems/apple.js +42 -0
- package/lib/v2/ems/maintainer.js +4 -0
- package/lib/{routes → v2}/ems/news.js +0 -0
- package/lib/v2/ems/radar.js +19 -0
- package/lib/v2/ems/router.js +4 -0
- package/lib/v2/ems/templates/apple.art +6 -0
- package/lib/{routes → v2}/flyert/creditcard.js +0 -0
- package/lib/v2/flyert/maintainer.js +4 -0
- package/lib/{routes → v2}/flyert/preferential.js +0 -0
- package/lib/v2/flyert/radar.js +19 -0
- package/lib/v2/flyert/router.js +4 -0
- package/lib/{routes → v2}/flyert/utils.js +2 -1
- package/lib/v2/hdu/cs/index.js +57 -0
- package/lib/v2/hdu/maintainer.js +3 -0
- package/lib/v2/hdu/radar.js +13 -0
- package/lib/v2/hdu/router.js +4 -0
- package/lib/v2/hellobtc/information.js +51 -0
- package/lib/v2/hellobtc/kepu.js +64 -0
- package/lib/v2/hellobtc/maintainer.js +6 -0
- package/lib/v2/hellobtc/news.js +29 -0
- package/lib/v2/hellobtc/radar.js +85 -0
- package/lib/v2/hellobtc/router.js +6 -0
- package/lib/v2/hellobtc/topic.js +43 -0
- package/lib/v2/ielts/index.js +58 -0
- package/lib/v2/ielts/maintainer.js +3 -0
- package/lib/v2/ielts/radar.js +13 -0
- package/lib/v2/ielts/router.js +3 -0
- package/lib/{routes → v2}/javbus/genre.js +0 -0
- package/lib/{routes → v2}/javbus/home.js +0 -0
- package/lib/v2/javbus/label.js +7 -0
- package/lib/v2/javbus/maintainer.js +16 -0
- package/lib/v2/javbus/radar.js +99 -0
- package/lib/v2/javbus/router.js +16 -0
- package/lib/{routes → v2}/javbus/series.js +0 -0
- package/lib/{routes → v2}/javbus/star.js +0 -0
- package/lib/v2/javbus/studio.js +7 -0
- package/lib/{routes → v2}/javbus/uncensored/genre.js +0 -0
- package/lib/{routes → v2}/javbus/uncensored/home.js +0 -0
- package/lib/{routes → v2}/javbus/uncensored/series.js +0 -0
- package/lib/{routes → v2}/javbus/uncensored/star.js +0 -0
- package/lib/{routes → v2}/javbus/util.js +5 -9
- package/lib/{routes → v2}/javbus/western/genre.js +0 -0
- package/lib/{routes → v2}/javbus/western/home.js +0 -0
- package/lib/{routes → v2}/javbus/western/series.js +0 -0
- package/lib/{routes → v2}/javbus/western/star.js +0 -0
- package/lib/v2/javlibrary/utils.js +1 -1
- package/lib/v2/kbs/maintainer.js +4 -0
- package/lib/v2/kbs/news.js +67 -0
- package/lib/v2/kbs/radar.js +19 -0
- package/lib/v2/kbs/router.js +4 -0
- package/lib/{routes → v2}/kbs/today.js +1 -1
- package/lib/v2/lofter/maintainer.js +4 -0
- package/lib/v2/lofter/radar.js +17 -0
- package/lib/v2/lofter/router.js +4 -0
- package/lib/{routes → v2}/lofter/tag.js +4 -4
- package/lib/v2/lofter/user.js +52 -0
- package/lib/v2/lvv2/maintainer.js +4 -0
- package/lib/v2/lvv2/news.js +75 -0
- package/lib/v2/lvv2/radar.js +79 -0
- package/lib/v2/lvv2/router.js +4 -0
- package/lib/v2/lvv2/templates/outlink.art +1 -0
- package/lib/v2/lvv2/top.js +77 -0
- package/lib/v2/nbd/article.js +50 -0
- package/lib/{routes → v2}/nbd/index.js +8 -5
- package/lib/v2/nbd/maintainer.js +4 -0
- package/lib/v2/nbd/radar.js +19 -0
- package/lib/v2/nbd/router.js +4 -0
- package/lib/v2/njnu/ceai/ceai.js +44 -0
- package/lib/v2/njnu/ceai/utils.js +55 -0
- package/lib/v2/njnu/jwc/jwc.js +43 -0
- package/lib/v2/njnu/jwc/utils.js +59 -0
- package/lib/v2/njnu/maintainer.js +4 -0
- package/lib/v2/njnu/radar.js +21 -0
- package/lib/v2/njnu/router.js +4 -0
- package/lib/v2/nltimes/maintainer.js +3 -0
- package/lib/v2/nltimes/news.js +89 -0
- package/lib/v2/nltimes/radar.js +19 -0
- package/lib/v2/nltimes/router.js +3 -0
- package/lib/{routes → v2}/nowcoder/discuss.js +17 -22
- package/lib/v2/nowcoder/experience.js +48 -0
- package/lib/{routes → v2}/nowcoder/jobcenter.js +0 -0
- package/lib/v2/nowcoder/maintainer.js +7 -0
- package/lib/v2/nowcoder/radar.js +40 -0
- package/lib/{routes → v2}/nowcoder/recommend.js +1 -1
- package/lib/v2/nowcoder/router.js +7 -0
- package/lib/{routes → v2}/nowcoder/schedule.js +4 -3
- package/lib/v2/odaily/post.js +10 -8
- package/lib/v2/oilchem/index.js +67 -0
- package/lib/v2/oilchem/maintainer.js +3 -0
- package/lib/v2/oilchem/radar.js +11 -0
- package/lib/v2/oilchem/router.js +3 -0
- package/lib/v2/oilchem/routes.js +671 -0
- package/lib/v2/picuki/maintainer.js +3 -0
- package/lib/v2/picuki/profile.js +167 -0
- package/lib/v2/picuki/radar.js +13 -0
- package/lib/v2/picuki/router.js +3 -0
- package/lib/v2/picuki/templates/post.art +7 -0
- package/lib/v2/qq88/index.js +60 -0
- package/lib/v2/qq88/maintainer.js +3 -0
- package/lib/v2/qq88/radar.js +13 -0
- package/lib/v2/qq88/router.js +3 -0
- package/lib/v2/readhub/index.js +106 -0
- package/lib/v2/readhub/maintainer.js +3 -0
- package/lib/v2/readhub/radar.js +13 -0
- package/lib/v2/readhub/router.js +6 -0
- package/lib/v2/shmeea/maintainer.js +1 -0
- package/lib/v2/shmeea/radar.js +6 -0
- package/lib/v2/shmeea/router.js +2 -1
- package/lib/v2/shmeea/self-study.js +61 -0
- package/lib/{routes/universities/sysu/sdcs.js → v2/sysu/cse.js} +3 -3
- package/lib/v2/sysu/maintainer.js +3 -0
- package/lib/v2/sysu/radar.js +13 -0
- package/lib/v2/sysu/router.js +3 -0
- package/lib/v2/telegram/channel.js +446 -112
- package/lib/v2/telegram/maintainer.js +1 -1
- package/lib/v2/telegram/router.js +1 -1
- package/lib/v2/telegram/templates/video.art +3 -1
- package/lib/v2/tencent/maintainer.js +3 -0
- package/lib/v2/tencent/qq/sdk/changelog.js +56 -0
- package/lib/v2/tencent/radar.js +56 -0
- package/lib/v2/tencent/router.js +3 -0
- package/lib/v2/tokeninsight/blog.js +52 -0
- package/lib/v2/tokeninsight/bulletin.js +44 -0
- package/lib/v2/tokeninsight/maintainer.js +5 -0
- package/lib/v2/tokeninsight/radar.js +25 -0
- package/lib/v2/tokeninsight/report.js +52 -0
- package/lib/v2/tokeninsight/router.js +5 -0
- package/lib/v2/txrjy/fornumtopic.js +72 -0
- package/lib/v2/txrjy/maintainer.js +3 -0
- package/lib/v2/txrjy/radar.js +17 -0
- package/lib/v2/txrjy/router.js +3 -0
- package/lib/v2/txrjy/templates/fornumtopic.art +6 -0
- package/lib/v2/wfu/jwc.js +54 -0
- package/lib/v2/wfu/maintainer.js +4 -0
- package/lib/v2/wfu/news.js +96 -0
- package/lib/v2/wfu/radar.js +21 -0
- package/lib/v2/wfu/router.js +4 -0
- package/lib/v2/who/maintainer.js +5 -0
- package/lib/v2/who/news-room.js +76 -0
- package/lib/{routes → v2}/who/news.js +1 -1
- package/lib/v2/who/radar.js +25 -0
- package/lib/v2/who/router.js +5 -0
- package/lib/{routes → v2}/who/speeches.js +0 -0
- package/lib/v2/wikinews/index.js +43 -0
- package/lib/v2/wikinews/maintainer.js +3 -0
- package/lib/v2/wikinews/radar.js +13 -0
- package/lib/v2/wikinews/router.js +4 -0
- package/lib/{routes → v2}/wsj/index.js +6 -4
- package/lib/v2/wsj/maintainer.js +3 -0
- package/lib/v2/wsj/radar.js +21 -0
- package/lib/v2/wsj/router.js +3 -0
- package/lib/v2/xiaoyuzhou/maintainer.js +1 -1
- package/lib/v2/xiaoyuzhou/podcast.js +1 -1
- package/lib/v2/xmanhua/index.js +74 -0
- package/lib/v2/xmanhua/radar.js +13 -0
- package/lib/v2/xmanhua/router.js +3 -0
- package/lib/{routes → v2}/zhibo8/forum.js +8 -16
- package/lib/v2/zhibo8/maintainer.js +5 -0
- package/lib/v2/zhibo8/more.js +82 -0
- package/lib/{routes → v2}/zhibo8/post.js +1 -1
- package/lib/v2/zhibo8/radar.js +27 -0
- package/lib/v2/zhibo8/router.js +5 -0
- package/package.json +10 -9
- package/lib/routes/36kr/news.js +0 -94
- package/lib/routes/8kcos/article.js +0 -17
- package/lib/routes/8kcos/cat.js +0 -28
- package/lib/routes/8kcos/latest.js +0 -27
- package/lib/routes/95mm/tab.js +0 -9
- package/lib/routes/95mm/tag.js +0 -7
- package/lib/routes/95mm/utils.js +0 -51
- package/lib/routes/apple/exchange_repair.js +0 -47
- package/lib/routes/eastmoney/user.js +0 -30
- package/lib/routes/lofter/posts.js +0 -54
- package/lib/routes/nbd/article.js +0 -60
- package/lib/routes/picuki/profile.js +0 -90
- package/lib/routes/readhub/category.js +0 -102
- package/lib/routes/who/news-room.js +0 -56
- package/lib/routes/zhibo8/more.js +0 -45
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
|
|
4
|
+
const rootUrl = 'https://www.hellobtc.com';
|
|
5
|
+
|
|
6
|
+
const channelSelector = {
|
|
7
|
+
latest: 'div.index_tabs_container.js-tabs-container > div:nth-child(1)',
|
|
8
|
+
bitcoin: 'div.index_tabs_container.js-tabs-container > div:nth-child(2)',
|
|
9
|
+
ethereum: 'div.index_tabs_container.js-tabs-container > div:nth-child(3)',
|
|
10
|
+
defi: 'div.index_tabs_container.js-tabs-container > div:nth-child(4)',
|
|
11
|
+
inter_blockchain: 'div.index_tabs_container.js-tabs-container > div:nth-child(5)',
|
|
12
|
+
mining: 'div.index_tabs_container.js-tabs-container > div:nth-child(6)',
|
|
13
|
+
safety: 'div.index_tabs_container.js-tabs-container > div:nth-child(7)',
|
|
14
|
+
satoshi_nakamoto: 'div.index_tabs_container.js-tabs-container > div:nth-child(8)',
|
|
15
|
+
public_blockchain: 'div.index_tabs_container.js-tabs-container > div:nth-child(9)',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const titleMap = {
|
|
19
|
+
latest: '最新',
|
|
20
|
+
bitcoin: '比特币',
|
|
21
|
+
ethereum: '以太坊',
|
|
22
|
+
defi: 'DeFi',
|
|
23
|
+
inter_blockchain: '跨链',
|
|
24
|
+
mining: '挖矿',
|
|
25
|
+
safety: '安全',
|
|
26
|
+
satoshi_nakamoto: '中本聪',
|
|
27
|
+
public_blockchain: '公链',
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
module.exports = async (ctx) => {
|
|
31
|
+
const channel = ctx.params.channel ?? 'latest';
|
|
32
|
+
const url = `${rootUrl}/kepu.html`;
|
|
33
|
+
|
|
34
|
+
const response = await got(url);
|
|
35
|
+
const $ = cheerio.load(response.data);
|
|
36
|
+
const list = $(channelSelector[channel])
|
|
37
|
+
.find('div.new_item')
|
|
38
|
+
.map((_, item) => ({
|
|
39
|
+
title: $(item).find('a').text(),
|
|
40
|
+
link: $(item).find('a').attr('href'),
|
|
41
|
+
}))
|
|
42
|
+
.get();
|
|
43
|
+
|
|
44
|
+
const items = await Promise.all(
|
|
45
|
+
list.map((item) =>
|
|
46
|
+
ctx.cache.tryGet(item.link, async () => {
|
|
47
|
+
const detailResponse = await got(item.link);
|
|
48
|
+
const content = cheerio.load(detailResponse.data);
|
|
49
|
+
|
|
50
|
+
item.description = content('#js_content')
|
|
51
|
+
.html()
|
|
52
|
+
.replace(/(<img.*?)data-src(.*?>)/g, '$1src$2');
|
|
53
|
+
|
|
54
|
+
return item;
|
|
55
|
+
})
|
|
56
|
+
)
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
ctx.state.data = {
|
|
60
|
+
title: `白话区块链 - 科普 ${titleMap[channel]}`,
|
|
61
|
+
link: url,
|
|
62
|
+
item: items,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
4
|
+
const timezone = require('@/utils/timezone');
|
|
5
|
+
|
|
6
|
+
const rootUrl = 'https://www.hellobtc.com';
|
|
7
|
+
|
|
8
|
+
module.exports = async (ctx) => {
|
|
9
|
+
const url = `${rootUrl}/news`;
|
|
10
|
+
|
|
11
|
+
const response = await got(url);
|
|
12
|
+
const $ = cheerio.load(response.data);
|
|
13
|
+
const items = $('nav.js-nav')
|
|
14
|
+
.find('div.item')
|
|
15
|
+
.map((_, item) => ({
|
|
16
|
+
title: $(item).find('h2').text(),
|
|
17
|
+
link: $(item).find('a').attr('href'),
|
|
18
|
+
description: $(item).find('div.sub').text(),
|
|
19
|
+
pubDate: timezone(parseDate($(item).find('span.date').text(), 'MM-DD HH:mm'), +8),
|
|
20
|
+
}))
|
|
21
|
+
.filter((item) => item)
|
|
22
|
+
.get();
|
|
23
|
+
|
|
24
|
+
ctx.state.data = {
|
|
25
|
+
title: `白话区块链 - 快讯`,
|
|
26
|
+
link: url,
|
|
27
|
+
item: items,
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
'hellobtc.com': {
|
|
3
|
+
_name: '白话区块链',
|
|
4
|
+
'.': [
|
|
5
|
+
{
|
|
6
|
+
title: '首页-最新',
|
|
7
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
8
|
+
source: ['/'],
|
|
9
|
+
target: '/hellobtc/information/latest',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
title: '首页-应用',
|
|
13
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
14
|
+
source: ['/'],
|
|
15
|
+
target: '/hellobtc/information/application',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: '快讯',
|
|
19
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
20
|
+
source: ['/news'],
|
|
21
|
+
target: '/hellobtc/news',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
title: '科普-最新',
|
|
25
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
26
|
+
source: ['/kepu.html'],
|
|
27
|
+
target: '/hellobtc/kepu/latest',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: '科普-比特币',
|
|
31
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
32
|
+
source: ['/kepu.html'],
|
|
33
|
+
target: '/hellobtc/kepu/bitcoin',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
title: '科普-以太坊',
|
|
37
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
38
|
+
source: ['/kepu.html'],
|
|
39
|
+
target: '/hellobtc/kepu/ethereum',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: '科普-DeFi',
|
|
43
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
44
|
+
source: ['/kepu.html'],
|
|
45
|
+
target: '/hellobtc/kepu/defi',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: '科普-跨链',
|
|
49
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
50
|
+
source: ['/kepu.html'],
|
|
51
|
+
target: '/hellobtc/kepu/inter_blockchain',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: '科普-挖矿',
|
|
55
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
56
|
+
source: ['/kepu.html'],
|
|
57
|
+
target: '/hellobtc/kepu/mining',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
title: '科普-安全',
|
|
61
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
62
|
+
source: ['/kepu.html'],
|
|
63
|
+
target: '/hellobtc/kepu/safety',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
title: '科普-中本聪',
|
|
67
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
68
|
+
source: ['/kepu.html'],
|
|
69
|
+
target: '/hellobtc/kepu/satoshi_nakamoto',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
title: '科普-公链',
|
|
73
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
74
|
+
source: ['/kepu.html'],
|
|
75
|
+
target: '/hellobtc/kepu/public_blockchain',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
title: '专栏',
|
|
79
|
+
docs: 'https://docs.rsshub.app/new-media.html#bai-hua-qu-kuai-lian',
|
|
80
|
+
source: ['/topic/:id'],
|
|
81
|
+
target: (params) => `/hellobtc/topic/${params.id.split('.')[0]}`,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
4
|
+
const timezone = require('@/utils/timezone');
|
|
5
|
+
|
|
6
|
+
const rootUrl = 'https://www.hellobtc.com';
|
|
7
|
+
|
|
8
|
+
module.exports = async (ctx) => {
|
|
9
|
+
const id = ctx.params.id;
|
|
10
|
+
const url = `${rootUrl}/topic/${id}.html`;
|
|
11
|
+
|
|
12
|
+
const response = await got(url);
|
|
13
|
+
const $ = cheerio.load(response.data);
|
|
14
|
+
const title = $('div.content > h1').text();
|
|
15
|
+
const list = $('div.tab_pane')
|
|
16
|
+
.find('div.new_item')
|
|
17
|
+
.map((_, item) => ({
|
|
18
|
+
title: $(item).find('h2').text(),
|
|
19
|
+
link: $(item).find('a').attr('href'),
|
|
20
|
+
}))
|
|
21
|
+
.filter((item) => item)
|
|
22
|
+
.get();
|
|
23
|
+
|
|
24
|
+
const items = await Promise.all(
|
|
25
|
+
list.map((item) =>
|
|
26
|
+
ctx.cache.tryGet(item.link, async () => {
|
|
27
|
+
const detailResponse = await got(item.link);
|
|
28
|
+
const content = cheerio.load(detailResponse.data);
|
|
29
|
+
|
|
30
|
+
item.description = content('#nr').html();
|
|
31
|
+
item.pubDate = timezone(parseDate(content('span.date').text(), 'YYYY-MM-DD HH:mm:ss'), +8);
|
|
32
|
+
|
|
33
|
+
return item;
|
|
34
|
+
})
|
|
35
|
+
)
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
ctx.state.data = {
|
|
39
|
+
title: `白话区块链 - ${title}专栏`,
|
|
40
|
+
link: url,
|
|
41
|
+
item: items,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const cheerio = require('cheerio');
|
|
2
|
+
const got = require('@/utils/got');
|
|
3
|
+
const timezone = require('@/utils/timezone');
|
|
4
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
5
|
+
const targetUrl = 'https://ielts.neea.cn/allnews?locale=zh_CN';
|
|
6
|
+
|
|
7
|
+
module.exports = async (ctx) => {
|
|
8
|
+
const browser = await require('@/utils/puppeteer')();
|
|
9
|
+
const page = await browser.newPage();
|
|
10
|
+
await page.evaluateOnNewDocument(() => {
|
|
11
|
+
const proto = navigator.__proto__;
|
|
12
|
+
delete proto.webdriver;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
await page.goto(targetUrl, {
|
|
16
|
+
waitUntil: 'networkidle0',
|
|
17
|
+
});
|
|
18
|
+
const list = await page.evaluate(() =>
|
|
19
|
+
window
|
|
20
|
+
.$('#newsListUl li')
|
|
21
|
+
.get()
|
|
22
|
+
.map((elem) => {
|
|
23
|
+
const $elem = window.$(elem);
|
|
24
|
+
return {
|
|
25
|
+
title: $elem.find('a').text(),
|
|
26
|
+
link: $elem.find('a').attr('href'),
|
|
27
|
+
pubDate: $elem.find('span').eq(-1).text().replace(/[[\]]/g, '').trim(),
|
|
28
|
+
};
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
browser.close();
|
|
32
|
+
|
|
33
|
+
list.sort((a, b) => parseDate(b.pubDate) - parseDate(a.pubDate));
|
|
34
|
+
list.forEach((item) => {
|
|
35
|
+
item.pubDate = timezone(parseDate(item.pubDate), +8);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const items = await Promise.all(
|
|
39
|
+
list.map((item) =>
|
|
40
|
+
ctx.cache.tryGet(item.link, async () => {
|
|
41
|
+
const detailResponse = await got({
|
|
42
|
+
method: 'get',
|
|
43
|
+
url: item.link,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const $ = cheerio.load(detailResponse.data);
|
|
47
|
+
item.description = $('.content').html();
|
|
48
|
+
return item;
|
|
49
|
+
})
|
|
50
|
+
)
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
ctx.state.data = {
|
|
54
|
+
title: 'IELTS雅思最新消息',
|
|
55
|
+
link: targetUrl,
|
|
56
|
+
item: items,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
'/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
|
|
3
|
+
'/home': ['MegrezZhu', 'CoderTonyChan'],
|
|
4
|
+
'/label/:labelid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
|
|
5
|
+
'/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
|
|
6
|
+
'/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
|
|
7
|
+
'/studio/:studioid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
|
|
8
|
+
'/uncensored/home': ['MegrezZhu', 'CoderTonyChan'],
|
|
9
|
+
'/uncensored/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
|
|
10
|
+
'/uncensored/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
|
|
11
|
+
'/uncensored/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
|
|
12
|
+
'/western/home': ['MegrezZhu', 'CoderTonyChan'],
|
|
13
|
+
'/western/genre/:gid': ['MegrezZhu', 'CoderTonyChan'],
|
|
14
|
+
'/western/series/:seriesid': ['MegrezZhu', 'CoderTonyChan', 'Felix2yu'],
|
|
15
|
+
'/western/star/:sid': ['MegrezZhu', 'CoderTonyChan'],
|
|
16
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const westernJavbus = {
|
|
2
|
+
_name: 'JavBus',
|
|
3
|
+
www: [
|
|
4
|
+
{
|
|
5
|
+
title: '首页 / 欧陆风云',
|
|
6
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
7
|
+
source: '/',
|
|
8
|
+
target: '/javbus/western/home',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
title: '分类 / 欧陆风云',
|
|
12
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
13
|
+
source: '/genre/:gid',
|
|
14
|
+
target: '/javbus/western/genre/:gid',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
title: '演员 / 欧陆风云',
|
|
18
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
19
|
+
source: '/star/:sid',
|
|
20
|
+
target: '/javbus/western/star/:sid',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: '系列 / 欧陆风云',
|
|
24
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
25
|
+
source: '/series/:seriesid',
|
|
26
|
+
target: '/javbus/western/series/:seriesid',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
module.exports = {
|
|
32
|
+
'javbus.com': {
|
|
33
|
+
_name: 'JavBus',
|
|
34
|
+
www: [
|
|
35
|
+
{
|
|
36
|
+
title: '首页',
|
|
37
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
38
|
+
source: '/',
|
|
39
|
+
target: '/javbus/home',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: '分类',
|
|
43
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
44
|
+
source: '/genre/:gid',
|
|
45
|
+
target: '/javbus/genre/:gid',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: '演员',
|
|
49
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
50
|
+
source: '/star/:sid',
|
|
51
|
+
target: '/javbus/star/:sid',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: '系列',
|
|
55
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
56
|
+
source: '/series/:seriesid',
|
|
57
|
+
target: '/javbus/series/:seriesid',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
title: '制作商',
|
|
61
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
62
|
+
source: '/studio/:studioid',
|
|
63
|
+
target: '/javbus/studio/:studioid',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
title: '发行商',
|
|
67
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
68
|
+
source: '/label/:labelid',
|
|
69
|
+
target: '/javbus/label/:labelid',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
title: '首页 / 步兵',
|
|
73
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
74
|
+
source: '/uncensored',
|
|
75
|
+
target: '/javbus/uncensored/home',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
title: '分类 / 步兵',
|
|
79
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
80
|
+
source: '/uncensored/genre/:gid',
|
|
81
|
+
target: '/javbus/uncensored/genre/:gid',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
title: '演员 / 步兵',
|
|
85
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
86
|
+
source: '/uncensored/star/:sid',
|
|
87
|
+
target: '/javbus/uncensored/star/:sid',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
title: '系列 / 步兵',
|
|
91
|
+
docs: 'https://docs.rsshub.app/multimedia.html#javbus',
|
|
92
|
+
source: '/uncensored/series/:seriesid',
|
|
93
|
+
target: '/javbus/uncensored/series/:seriesid',
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
'javbus.one': westernJavbus,
|
|
98
|
+
'javbus.org': westernJavbus,
|
|
99
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = (router) => {
|
|
2
|
+
router.get('/genre/:gid', require('./genre'));
|
|
3
|
+
router.get('/home', require('./home'));
|
|
4
|
+
router.get('/label/:labelid', require('./label'));
|
|
5
|
+
router.get('/series/:seriesid', require('./series'));
|
|
6
|
+
router.get('/star/:sid', require('./star'));
|
|
7
|
+
router.get('/studio/:studioid', require('./studio'));
|
|
8
|
+
router.get('/uncensored/home', require('./uncensored/home'));
|
|
9
|
+
router.get('/uncensored/genre/:gid', require('./uncensored/genre'));
|
|
10
|
+
router.get('/uncensored/series/:seriesid', require('./uncensored/series'));
|
|
11
|
+
router.get('/uncensored/star/:sid', require('./uncensored/star'));
|
|
12
|
+
router.get('/western/home', require('./western/home'));
|
|
13
|
+
router.get('/western/genre/:gid', require('./western/genre'));
|
|
14
|
+
router.get('/western/series/:seriesid', require('./western/series'));
|
|
15
|
+
router.get('/western/star/:sid', require('./western/star'));
|
|
16
|
+
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const { load } = require('cheerio');
|
|
3
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
3
4
|
|
|
4
5
|
exports.getPage = async (url, ctx) => {
|
|
5
6
|
const { data } = await got(url);
|
|
@@ -25,7 +26,7 @@ const parseItems = ($, ctx) =>
|
|
|
25
26
|
title: $(ele).find('img').attr('title'),
|
|
26
27
|
thumb: $(ele).find('img').attr('src'),
|
|
27
28
|
link: $(ele).attr('href'),
|
|
28
|
-
pubDate:
|
|
29
|
+
pubDate: parseDate($(ele).find('date:nth-child(4)').text(), 'YYYY-MM-DD'),
|
|
29
30
|
aid: $(ele).find('date:nth-child(3)').text(),
|
|
30
31
|
}))
|
|
31
32
|
.toArray()
|
|
@@ -58,11 +59,8 @@ const parseItems = ($, ctx) =>
|
|
|
58
59
|
};
|
|
59
60
|
});
|
|
60
61
|
|
|
61
|
-
const getDetail = async (link, ctx) =>
|
|
62
|
-
|
|
63
|
-
if (cache) {
|
|
64
|
-
return JSON.parse(cache);
|
|
65
|
-
} else {
|
|
62
|
+
const getDetail = async (link, ctx) =>
|
|
63
|
+
await ctx.cache.tryGet(link, async () => {
|
|
66
64
|
const resp = await got(link);
|
|
67
65
|
const detailPage = resp.data;
|
|
68
66
|
// 演员
|
|
@@ -205,7 +203,5 @@ const getDetail = async (link, ctx) => {
|
|
|
205
203
|
}
|
|
206
204
|
|
|
207
205
|
const detail = { actresses, filmId, filmTime, filmLast, filmEstabName, filmMakerbName, seriesName, directorName, code, screenData, magnetlinks, videoplayer, videolink };
|
|
208
|
-
ctx.cache.set(link, JSON.stringify(detail));
|
|
209
206
|
return detail;
|
|
210
|
-
}
|
|
211
|
-
};
|
|
207
|
+
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -77,7 +77,7 @@ module.exports = {
|
|
|
77
77
|
thumbs: content('.previewthumbs img')
|
|
78
78
|
.toArray()
|
|
79
79
|
.map((img) => content(img).attr('src').replace(/-/g, 'jp-')),
|
|
80
|
-
videos: [...new Set(detailResponse.data.match(/(http[\
|
|
80
|
+
videos: [...new Set(detailResponse.data.match(/(http[^[\]"]+\.mp4)/g))],
|
|
81
81
|
});
|
|
82
82
|
item.pubDate = item.pubDate.toString() === 'Invalid Date' ? parseDate(content('#video_date').find('.text').text()) : item.pubDate;
|
|
83
83
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const got = require('@/utils/got');
|
|
2
|
+
const cheerio = require('cheerio');
|
|
3
|
+
const timezone = require('@/utils/timezone');
|
|
4
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
5
|
+
|
|
6
|
+
module.exports = async (ctx) => {
|
|
7
|
+
const category = ctx.params.category ?? 'all';
|
|
8
|
+
const language = ctx.params.language ?? 'e';
|
|
9
|
+
|
|
10
|
+
const rootUrl = 'http://world.kbs.co.kr';
|
|
11
|
+
const currentUrl = `${rootUrl}/service/news_list.htm?lang=${language}${category === 'all' ? '' : `&id=${category}`}`;
|
|
12
|
+
|
|
13
|
+
const response = await got({
|
|
14
|
+
method: 'get',
|
|
15
|
+
url: currentUrl,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const $ = cheerio.load(response.data);
|
|
19
|
+
|
|
20
|
+
$('.comp_pagination').remove();
|
|
21
|
+
|
|
22
|
+
const list = $('.comp_contents_1x article')
|
|
23
|
+
.map((_, item) => {
|
|
24
|
+
item = $(item);
|
|
25
|
+
|
|
26
|
+
const a = item.find('h2 a');
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
title: a.text(),
|
|
30
|
+
category: item.find('.cate').text(),
|
|
31
|
+
link: `${rootUrl}/service${a.attr('href').replace('./', '/')}`,
|
|
32
|
+
pubDate: timezone(
|
|
33
|
+
parseDate(
|
|
34
|
+
item
|
|
35
|
+
.find('.date')
|
|
36
|
+
.text()
|
|
37
|
+
.match(/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/)[1]
|
|
38
|
+
),
|
|
39
|
+
+9
|
|
40
|
+
),
|
|
41
|
+
};
|
|
42
|
+
})
|
|
43
|
+
.get();
|
|
44
|
+
|
|
45
|
+
const items = await Promise.all(
|
|
46
|
+
list.map((item) =>
|
|
47
|
+
ctx.cache.tryGet(item.link, async () => {
|
|
48
|
+
const detailResponse = await got({
|
|
49
|
+
method: 'get',
|
|
50
|
+
url: item.link,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const content = cheerio.load(detailResponse.data);
|
|
54
|
+
|
|
55
|
+
item.description = content('.body_txt').html();
|
|
56
|
+
|
|
57
|
+
return item;
|
|
58
|
+
})
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
ctx.state.data = {
|
|
63
|
+
title: `${$('.active').text() || list[0].category} - KBS WORLD`,
|
|
64
|
+
link: currentUrl,
|
|
65
|
+
item: items,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
'kbs.co.kr': {
|
|
3
|
+
_name: 'KBS',
|
|
4
|
+
world: [
|
|
5
|
+
{
|
|
6
|
+
title: 'News',
|
|
7
|
+
docs: 'https://docs.rsshub.app/new-media.html#kbs',
|
|
8
|
+
source: '/',
|
|
9
|
+
target: '/kbs/news',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
title: 'Today',
|
|
13
|
+
docs: 'https://docs.rsshub.app/new-media.html#kbs',
|
|
14
|
+
source: '/',
|
|
15
|
+
target: '/kbs/today',
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
};
|