Skip to content

Commit e65dace

Browse files
committed
update:增加批量请求
1 parent 9ba9bcc commit e65dace

13 files changed

+556
-57
lines changed

Diff for: README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ nodejs作为服务端的drpy实现。全面升级异步写法
1313

1414
### 20241208
1515

16-
更新至V1.0.5
16+
更新至V1.0.6
1717

18-
1. 新增源老白故事
18+
1. 支持batchFetch与配置的两个优质源
1919

2020
[点此查看完整更新记录](docs/updateRecord.md)
2121

Diff for: custom.json

+20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
{
22
"sites": [
3+
{
4+
"key": "drpyS_PTT[优]",
5+
"name": "PTT[优](DS)",
6+
"type": 4,
7+
"api": "http://192.168.31.49:5757/api/PTT[优]",
8+
"searchable": 1,
9+
"filterable": 1,
10+
"quickSearch": 0,
11+
"ext": ""
12+
},
313
{
414
"key": "drpyS_xvideos[密]",
515
"name": "xvideos[密](DS)",
@@ -60,6 +70,16 @@
6070
"quickSearch": 0,
6171
"ext": ""
6272
},
73+
{
74+
"key": "drpyS_腾云驾雾[官]",
75+
"name": "腾云驾雾[官](DS)",
76+
"type": 4,
77+
"api": "http://192.168.31.49:5757/api/腾云驾雾[官]",
78+
"searchable": 1,
79+
"filterable": 1,
80+
"quickSearch": 0,
81+
"ext": ""
82+
},
6383
{
6484
"key": "drpyS_色花堂[密+]",
6585
"name": "色花堂[密+](DS)",

Diff for: docs/updateRecord.md

+9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# drpyS更新记录
22

3+
### 20241209
4+
5+
更新至V1.0.6
6+
7+
1. 新增特性,可以不写class_parse属性(但是得确保class_name和class_url不然无法获取分类)
8+
2. 增加腾云驾雾源,修正搜索只能一个结果的问题。
9+
3. 新增batchFetch批量请求,给drpyS源提速!!!腾云驾雾源的二级请求已提速,几百个播放链接的动漫二级秒加载
10+
4. 增加ptt[],同样支持二级batchFetch
11+
312
### 20241208
413

514
更新至V1.0.5

Diff for: index.json

+31-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
{
22
"sites": [
3+
{
4+
"key": "drpyS_PTT[优]",
5+
"name": "PTT[优](DS)",
6+
"type": 4,
7+
"api": "http://127.0.0.1:5757/api/PTT[优]",
8+
"searchable": 1,
9+
"filterable": 1,
10+
"quickSearch": 0,
11+
"ext": ""
12+
},
313
{
414
"key": "drpyS_xvideos[密]",
515
"name": "xvideos[密](DS)",
616
"type": 4,
7-
"api": "http://192.168.31.49:5757/api/xvideos[密]",
17+
"api": "http://127.0.0.1:5757/api/xvideos[密]",
818
"searchable": 1,
919
"filterable": 1,
1020
"quickSearch": 0,
@@ -14,7 +24,7 @@
1424
"key": "drpyS_人人视频",
1525
"name": "人人视频(DS)",
1626
"type": 4,
17-
"api": "http://192.168.31.49:5757/api/人人视频",
27+
"api": "http://127.0.0.1:5757/api/人人视频",
1828
"searchable": 1,
1929
"filterable": 1,
2030
"quickSearch": 0,
@@ -24,7 +34,7 @@
2434
"key": "drpyS_动漫巴士[漫]",
2535
"name": "动漫巴士[漫](DS)",
2636
"type": 4,
27-
"api": "http://192.168.31.49:5757/api/动漫巴士[漫]",
37+
"api": "http://127.0.0.1:5757/api/动漫巴士[漫]",
2838
"searchable": 1,
2939
"filterable": 1,
3040
"quickSearch": 0,
@@ -34,7 +44,7 @@
3444
"key": "drpyS_星芽短剧",
3545
"name": "星芽短剧(DS)",
3646
"type": 4,
37-
"api": "http://192.168.31.49:5757/api/星芽短剧",
47+
"api": "http://127.0.0.1:5757/api/星芽短剧",
3848
"searchable": 1,
3949
"filterable": 1,
4050
"quickSearch": 0,
@@ -44,7 +54,7 @@
4454
"key": "drpyS_番茄小说[书]",
4555
"name": "番茄小说[书](DS)",
4656
"type": 4,
47-
"api": "http://192.168.31.49:5757/api/番茄小说[书]",
57+
"api": "http://127.0.0.1:5757/api/番茄小说[书]",
4858
"searchable": 1,
4959
"filterable": 1,
5060
"quickSearch": 0,
@@ -54,7 +64,17 @@
5464
"key": "drpyS_老白故事[听]",
5565
"name": "老白故事[听](DS)",
5666
"type": 4,
57-
"api": "http://192.168.31.49:5757/api/老白故事[听]",
67+
"api": "http://127.0.0.1:5757/api/老白故事[听]",
68+
"searchable": 1,
69+
"filterable": 1,
70+
"quickSearch": 0,
71+
"ext": ""
72+
},
73+
{
74+
"key": "drpyS_腾云驾雾[官]",
75+
"name": "腾云驾雾[官](DS)",
76+
"type": 4,
77+
"api": "http://127.0.0.1:5757/api/腾云驾雾[官]",
5878
"searchable": 1,
5979
"filterable": 1,
6080
"quickSearch": 0,
@@ -64,7 +84,7 @@
6484
"key": "drpyS_色花堂[密+]",
6585
"name": "色花堂[密+](DS)",
6686
"type": 4,
67-
"api": "http://192.168.31.49:5757/api/色花堂[密+]",
87+
"api": "http://127.0.0.1:5757/api/色花堂[密+]",
6888
"searchable": 1,
6989
"filterable": 1,
7090
"quickSearch": 0,
@@ -74,7 +94,7 @@
7494
"key": "drpyS_色花堂[密]",
7595
"name": "色花堂[密](DS)",
7696
"type": 4,
77-
"api": "http://192.168.31.49:5757/api/色花堂[密]",
97+
"api": "http://127.0.0.1:5757/api/色花堂[密]",
7898
"searchable": 1,
7999
"filterable": 1,
80100
"quickSearch": 0,
@@ -84,7 +104,7 @@
84104
"key": "drpyS_草榴社区[密]",
85105
"name": "草榴社区[密](DS)",
86106
"type": 4,
87-
"api": "http://192.168.31.49:5757/api/草榴社区[密]",
107+
"api": "http://127.0.0.1:5757/api/草榴社区[密]",
88108
"searchable": 1,
89109
"filterable": 1,
90110
"quickSearch": 0,
@@ -94,7 +114,7 @@
94114
"key": "drpyS_金牌影院",
95115
"name": "金牌影院(DS)",
96116
"type": 4,
97-
"api": "http://192.168.31.49:5757/api/金牌影院",
117+
"api": "http://127.0.0.1:5757/api/金牌影院",
98118
"searchable": 1,
99119
"filterable": 1,
100120
"quickSearch": 0,
@@ -104,7 +124,7 @@
104124
"key": "drpyS_黑料不打烊[密]",
105125
"name": "黑料不打烊[密](DS)",
106126
"type": 4,
107-
"api": "http://192.168.31.49:5757/api/黑料不打烊[密]",
127+
"api": "http://127.0.0.1:5757/api/黑料不打烊[密]",
108128
"searchable": 1,
109129
"filterable": 1,
110130
"quickSearch": 0,

Diff for: js/PTT[优].js

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
var rule = {
2+
类型: '影视',//影视|听书|漫画|小说
3+
title: 'PTT[优]',
4+
host: 'https://ptt.red',
5+
homeUrl: '/zh-cn',
6+
url: '/zh-cn/p/fyclassfyfilter',
7+
searchUrl: '/zh-cn/q/**?page=fypage',
8+
searchable: 2,
9+
quickSearch: 0,
10+
filterable: 1,
11+
filter: 'H4sIAAAAAAAAAO2X32saQRDH/5d76JMQ74d3Z8C/pIRytD6UpimYtBCCYCIGY9qoIbWVSltIqia1UUkQf+TSf8bdPf+Luml0ZtcsBFqf9HH3M+vOznxnvNnRdG316Y72Kr6trWqk0iLv+1pI2/Bex/H6nbf+Nn5nuMG3M/VRus63xwstGbrfPauNyvv3u0+8RNx79vJFzJjyUbVMu02ZR+B8vkV7tzK34Py3c/LFl7nuTA3opx+00pgxcMGgUWO3R7KBDfyq9dANYXDxQ4v0qzMG4CPJdIaDkmxgask1bvE3yKw9IF8PIcjT9WOCPLypssIkyCvPV0wT7s7Vh34FEIpsqUIOakDgxSzbpukMEAgmqxVJbwAERXG3QFMlIFE4k2sy/wIIihzNfh72DxDSsd/05idCIJmx14J7OryW9S+I/xEFAt2112ClIkIWvoudoFeZkYdTN0YWvDionQbNa3TKEBJKetfDgY+qZrJ+TEKNsGFN9LId9xKxuw1ETZmamBoyNTDVZapjGpZpGFE9KlE9iqkrUxdTR6YOprZMbUwjMo1gKseK1x5KBT06Jv08pGK6FlPB9tv0+JecClpJ0VJrcsHmm8RWbN3b3OIXrIU0Yy59kota0QJ50UHMhe7JESpI3Pd4QUIehZ7JEQhAaIbcDVdZCjxBS70vmN7NueldLWqUkZlS0JV6d02l3l1DqXekHOF/n1eJoSwFw1yWwsKVgjWvUjBstahttagdtagdtXLdpXIXTrkR3MX/afAIOleskEbTBeSbNS9FBI+n3S7N5hGCfIwbvHDKRt/2flFEigGLt+plP148Vdv2/1I1y/riZAzRCeopYfa0Iazs/HfQyQFy1LOng+bc/Flwimdt9NmS9kl3D3V4+EF2UiGX3xECRQblAt09REg9zDrWskwWrEySfwAneSZu2xMAAA==',
12+
filter_url: '{% if fyclass !="1" %}{{fl.地区}}?page=fypage{% else %}{{fl.类型}}?page=fypage{{fl.地区|safe}}{% endif %}{{fl.年份|safe}}{{fl.排序|safe}}',
13+
filter_def: {},
14+
headers: {
15+
'User-Agent': 'MOBILE_UA',
16+
},
17+
timeout: 5000,
18+
// class_parse: '.nav-tabs&&a;a&&Text;a&&href;(\\d+)',
19+
cate_exclude: '',
20+
play_parse: true,
21+
class_parse: async function () {
22+
let {input, pdfa, pdfh, pd} = this;
23+
let html = await request(input);
24+
let d = [];
25+
let data = pdfa(html, '.nav-tabs&&a');
26+
data.forEach((it) => {
27+
d.push({
28+
type_name: pdfh(it, 'a&&Text'),
29+
type_id: pd(it, 'a&&href').match(/(\d+)/)[1],
30+
})
31+
});
32+
return {
33+
class: d
34+
}
35+
},
36+
lazy: async function () {
37+
let {input} = this;
38+
let html = await request(input);
39+
let sdata = pdfh(html, '.container-fluid&&script&&Html');
40+
let json = JSON.parse(sdata);
41+
if (json.contentUrl) {
42+
return {parse: 0, url: json.contentUrl, js: ''};
43+
}
44+
return input
45+
},
46+
double: false,
47+
推荐: async function () {
48+
let {input, pdfa, pdfh, pd} = this;
49+
let html = await request(input);
50+
let d = [];
51+
let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))');
52+
data.forEach((it) => {
53+
d.push({
54+
title: pdfh(it, 'a:eq(-1)&&Text'),
55+
pic_url: pd(it, 'img&&src'),
56+
desc: pdfh(it, '.badge-success&&Text'),
57+
url: pd(it, 'a:eq(-1)&&href'),
58+
})
59+
});
60+
return setResult(d)
61+
},
62+
一级: async function () {
63+
let {input, pdfa, pdfh, pd} = this;
64+
let html = await request(input);
65+
let d = [];
66+
let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))');
67+
data.forEach((it) => {
68+
d.push({
69+
title: pdfh(it, 'a:eq(-1)&&Text'),
70+
pic_url: pd(it, 'img&&src'),
71+
desc: pdfh(it, '.badge-success&&Text'),
72+
url: pd(it, 'a:eq(-1)&&href'),
73+
})
74+
});
75+
return setResult(d)
76+
},
77+
二级: async function () {
78+
let {input, pdfh, pd} = this;
79+
let html = await request(input);
80+
let data = html.split('node:')[1].split('},')[0] + '}';
81+
data = data.trim();
82+
let json = JSON.parse(data);
83+
let VOD = {};
84+
VOD.vod_name = json.title;
85+
VOD.type_name = json.type;
86+
VOD.vod_id = input;
87+
VOD.vod_pic = urljoin(input, json.thumbnail);
88+
VOD.vod_year = json.year;
89+
VOD.vod_area = json._area;
90+
VOD.vod_remarks = json.note;
91+
VOD.vod_content = json.description;
92+
VOD.vod_director = json.director;
93+
VOD.vod_actor = json.actors;
94+
let v_tabs = pdfa(html, '.nav-tabs&&li');
95+
let v_tab_urls = v_tabs.map(it => pd(it, 'a&&href', input));
96+
v_tabs = v_tabs.map(it => pdfh(it, 'a&&title'));
97+
VOD.vod_play_from = v_tabs.join('$$$');
98+
let lists = [];
99+
let list1 = pdfa(html, '.mb-2.fullwidth&&a').map(it => pdfh(it, 'a&&Text') + '$' + pd(it, 'a&&href', input));
100+
// log(list1);
101+
lists.push(list1);
102+
// log(v_tab_urls);
103+
if (v_tab_urls.length > 1) {
104+
let reqUrls = v_tab_urls.slice(1).map(it => {
105+
return {
106+
url: it,
107+
options: {
108+
timeout: 5000,
109+
headers: rule.headers
110+
}
111+
}
112+
});
113+
let htmls = await batchFetch(reqUrls);
114+
htmls.forEach((ht) => {
115+
if (ht) {
116+
let list0 = pdfa(ht, '.mb-2.fullwidth&&a').map(it => pdfh(it, 'a&&Text') + '$' + pd(it, 'a&&href', input));
117+
lists.push(list0);
118+
} else {
119+
lists.push([]);
120+
}
121+
});
122+
}
123+
let playUrls = lists.map(it => it.join('#'));
124+
VOD.vod_play_url = playUrls.join('$$$');
125+
return VOD
126+
},
127+
搜索: async function () {
128+
let {input, pdfa, pdfh, pd} = this;
129+
let html = await request(input);
130+
let d = [];
131+
let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))');
132+
data.forEach((it) => {
133+
d.push({
134+
title: pdfh(it, 'a:eq(-1)&&Text'),
135+
pic_url: pd(it, 'img&&src'),
136+
desc: pdfh(it, '.badge-success&&Text'),
137+
url: pd(it, 'a:eq(-1)&&href'),
138+
})
139+
});
140+
return setResult(d)
141+
}
142+
}

Diff for: js/_fq2.js

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ var rule = {
1111
log(btoa('123456'));
1212
log(misc.randMAC());
1313
log(getRandomFromList(['drpy','drpyS','hipy']));
14+
log('oheaders:',oheaders)
15+
log('rule_fetch_params:',rule_fetch_params)
16+
log('type of batchFetch:',batchFetch)
1417
// return {}
1518
},
1619
headers:{

0 commit comments

Comments
 (0)