Skip to content

Commit d9bd033

Browse files
committed
Merge branch 'main' into yutons
2 parents 43217ee + a0d9986 commit d9bd033

File tree

9 files changed

+146
-67
lines changed

9 files changed

+146
-67
lines changed

README.md

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

1414
## 更新记录
1515

16-
### 20241215
16+
### 20241217
1717

18-
更新至V1.0.11
18+
更新至V1.0.13
1919

20-
1. 支持vercel部署
21-
2. 增加自定义解析功能
20+
1. 配置生成逻辑优化
2221

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

controllers/api.js

+8
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,14 @@ export default (fastify, options, done) => {
184184
const statusCode = 200;
185185
const mediaType = 'application/json; charset=utf-8';
186186
if (typeof backResp === 'object') {
187+
if (!backResp.code) {
188+
let statusCode = backResp.url && backResp.url !== query.url ? 200 : 404;
189+
backResp.code = statusCode
190+
}
191+
if (!backResp.msg) {
192+
let msgState = backResp.url && backResp.url !== query.url ? '成功' : '失败';
193+
backResp.msg = `${jxName}解析${msgState}`;
194+
}
187195
let t2 = (new Date()).getTime();
188196
backResp.cost = t2 - t1;
189197
return reply.code(statusCode).type(`${mediaType}; charset=utf-8`).send(JSON.stringify(backResp));

controllers/config.js

+36-20
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,40 @@
11
import {readdirSync, readFileSync, writeFileSync, existsSync} from 'fs';
22
import path from 'path';
3+
import * as drpy from '../libs/drpyS.js';
34

45
// 工具函数:生成 JSON 数据
5-
function generateSiteJSON(jsDir, requestHost) {
6+
async function generateSiteJSON(jsDir, requestHost) {
67
const files = readdirSync(jsDir);
7-
const sites = files
8-
.filter((file) => file.endsWith('.js') && !file.startsWith('_')) // 筛选出不是 "_" 开头的 .js 文件
9-
.map((file) => {
10-
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
11-
const key = `drpyS_${baseName}`;
12-
const name = `${baseName}(DS)`;
13-
const api = `${requestHost}/api/${baseName}`; // 使用请求的 host 地址,避免硬编码端口
14-
return {
15-
key,
16-
name,
17-
type: 4, // 固定值
18-
api,
19-
searchable: 1, // 固定值
20-
filterable: 1, // 固定值
21-
quickSearch: 0, // 固定值
22-
ext: "", // 固定为空字符串
23-
};
24-
});
8+
const valid_files = files.filter((file) => file.endsWith('.js') && !file.startsWith('_')); // 筛选出不是 "_" 开头的 .js 文件
9+
let sites = [];
10+
for (const file of valid_files) {
11+
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
12+
const key = `drpyS_${baseName}`;
13+
const name = `${baseName}(DS)`;
14+
const api = `${requestHost}/api/${baseName}`; // 使用请求的 host 地址,避免硬编码端口
15+
let ruleObject = {
16+
searchable: 1, // 固定值
17+
filterable: 1, // 固定值
18+
quickSearch: 0, // 固定值
19+
};
20+
try {
21+
ruleObject = await drpy.getRuleObject(path.join(jsDir, file));
22+
// log(file, ruleObject.title);
23+
} catch (e) {
24+
log(`file:${file} error:${e.message}`);
25+
}
26+
const site = {
27+
key,
28+
name,
29+
type: 4, // 固定值
30+
api,
31+
searchable: ruleObject.searchable,
32+
filterable: ruleObject.filterable,
33+
quickSearch: ruleObject.quickSearch,
34+
ext: "", // 固定为空字符串
35+
};
36+
sites.push(site);
37+
}
2538
return {sites};
2639
}
2740

@@ -82,6 +95,7 @@ export default (fastify, options, done) => {
8295

8396
// 接口:返回配置 JSON,同时写入 index.json
8497
fastify.get('/config*', async (request, reply) => {
98+
let t1 = (new Date()).getTime();
8599
const cfg_path = request.params['*']; // 捕获整个路径
86100
console.log(cfg_path);
87101
try {
@@ -91,7 +105,7 @@ export default (fastify, options, done) => {
91105
const port = request.socket.localPort; // 获取当前服务的端口
92106
console.log('port:', port);
93107
let requestHost = cfg_path === '/1' ? `${protocol}://${hostname}` : `http://127.0.0.1:${options.PORT}`; // 动态生成根地址
94-
const siteJSON = generateSiteJSON(options.jsDir, requestHost);
108+
const siteJSON = await generateSiteJSON(options.jsDir, requestHost);
95109
const parseJSON = generateParseJSON(options.jxDir, requestHost);
96110
const configObj = {...siteJSON, ...parseJSON};
97111
const configStr = JSON.stringify(configObj, null, 2);
@@ -101,6 +115,8 @@ export default (fastify, options, done) => {
101115
writeFileSync(options.customFilePath, configStr, 'utf8'); // 写入 index.json
102116
}
103117
}
118+
let t2 = (new Date()).getTime();
119+
configObj.cost = t2 - t1;
104120
reply.send(configObj);
105121
} catch (error) {
106122
reply.status(500).send({error: 'Failed to generate site JSON', details: error.message});

docs/updateRecord.md

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

3+
### 20241217
4+
5+
更新至V1.0.13
6+
7+
1. 动态计算生成配置里的 `searchable` `filterable` `quickSearch` `cost`属性
8+
2. 修复前面版本变更导致的 `getProxyUrl` 环境异常问题
9+
3. 解析的object支持返回header:{"use-agent":"Mozilla/5.0"}
10+
4. 解析返回object会自动添加code和msg(如果没手动指定)
11+
312
### 20241216
413

514
更新至V1.0.12

index.json

+38-38
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"key": "drpyS_ikanbot",
55
"name": "ikanbot(DS)",
66
"type": 4,
7-
"api": "http://192.168.31.49:5757/api/ikanbot",
8-
"searchable": 1,
7+
"api": "http://127.0.0.1:5757/api/ikanbot",
8+
"searchable": 2,
99
"filterable": 1,
1010
"quickSearch": 0,
1111
"ext": ""
@@ -14,8 +14,8 @@
1414
"key": "drpyS_PTT[优]",
1515
"name": "PTT[优](DS)",
1616
"type": 4,
17-
"api": "http://192.168.31.49:5757/api/PTT[优]",
18-
"searchable": 1,
17+
"api": "http://127.0.0.1:5757/api/PTT[优]",
18+
"searchable": 2,
1919
"filterable": 1,
2020
"quickSearch": 0,
2121
"ext": ""
@@ -24,7 +24,7 @@
2424
"key": "drpyS_xvideos[密]",
2525
"name": "xvideos[密](DS)",
2626
"type": 4,
27-
"api": "http://192.168.31.49:5757/api/xvideos[密]",
27+
"api": "http://127.0.0.1:5757/api/xvideos[密]",
2828
"searchable": 1,
2929
"filterable": 1,
3030
"quickSearch": 0,
@@ -34,8 +34,8 @@
3434
"key": "drpyS_人人视频",
3535
"name": "人人视频(DS)",
3636
"type": 4,
37-
"api": "http://192.168.31.49:5757/api/人人视频",
38-
"searchable": 1,
37+
"api": "http://127.0.0.1:5757/api/人人视频",
38+
"searchable": 2,
3939
"filterable": 1,
4040
"quickSearch": 0,
4141
"ext": ""
@@ -44,18 +44,18 @@
4444
"key": "drpyS_兄弟影视",
4545
"name": "兄弟影视(DS)",
4646
"type": 4,
47-
"api": "http://192.168.31.49:5757/api/兄弟影视",
48-
"searchable": 1,
49-
"filterable": 1,
47+
"api": "http://127.0.0.1:5757/api/兄弟影视",
48+
"searchable": 2,
49+
"filterable": 0,
5050
"quickSearch": 0,
5151
"ext": ""
5252
},
5353
{
5454
"key": "drpyS_动漫巴士[漫]",
5555
"name": "动漫巴士[漫](DS)",
5656
"type": 4,
57-
"api": "http://192.168.31.49:5757/api/动漫巴士[漫]",
58-
"searchable": 1,
57+
"api": "http://127.0.0.1:5757/api/动漫巴士[漫]",
58+
"searchable": 2,
5959
"filterable": 1,
6060
"quickSearch": 0,
6161
"ext": ""
@@ -64,8 +64,8 @@
6464
"key": "drpyS_央视大全[官]",
6565
"name": "央视大全[官](DS)",
6666
"type": 4,
67-
"api": "http://192.168.31.49:5757/api/央视大全[官]",
68-
"searchable": 1,
67+
"api": "http://127.0.0.1:5757/api/央视大全[官]",
68+
"searchable": 0,
6969
"filterable": 1,
7070
"quickSearch": 0,
7171
"ext": ""
@@ -74,18 +74,18 @@
7474
"key": "drpyS_星芽短剧",
7575
"name": "星芽短剧(DS)",
7676
"type": 4,
77-
"api": "http://192.168.31.49:5757/api/星芽短剧",
78-
"searchable": 1,
77+
"api": "http://127.0.0.1:5757/api/星芽短剧",
78+
"searchable": 2,
7979
"filterable": 1,
80-
"quickSearch": 0,
80+
"quickSearch": 1,
8181
"ext": ""
8282
},
8383
{
8484
"key": "drpyS_瓜子H5",
8585
"name": "瓜子H5(DS)",
8686
"type": 4,
87-
"api": "http://192.168.31.49:5757/api/瓜子H5",
88-
"searchable": 1,
87+
"api": "http://127.0.0.1:5757/api/瓜子H5",
88+
"searchable": 2,
8989
"filterable": 1,
9090
"quickSearch": 0,
9191
"ext": ""
@@ -94,8 +94,8 @@
9494
"key": "drpyS_番茄小说[书]",
9595
"name": "番茄小说[书](DS)",
9696
"type": 4,
97-
"api": "http://192.168.31.49:5757/api/番茄小说[书]",
98-
"searchable": 1,
97+
"api": "http://127.0.0.1:5757/api/番茄小说[书]",
98+
"searchable": 2,
9999
"filterable": 1,
100100
"quickSearch": 0,
101101
"ext": ""
@@ -104,8 +104,8 @@
104104
"key": "drpyS_素白白",
105105
"name": "素白白(DS)",
106106
"type": 4,
107-
"api": "http://192.168.31.49:5757/api/素白白",
108-
"searchable": 1,
107+
"api": "http://127.0.0.1:5757/api/素白白",
108+
"searchable": 2,
109109
"filterable": 1,
110110
"quickSearch": 0,
111111
"ext": ""
@@ -114,8 +114,8 @@
114114
"key": "drpyS_老白故事[听]",
115115
"name": "老白故事[听](DS)",
116116
"type": 4,
117-
"api": "http://192.168.31.49:5757/api/老白故事[听]",
118-
"searchable": 1,
117+
"api": "http://127.0.0.1:5757/api/老白故事[听]",
118+
"searchable": 2,
119119
"filterable": 1,
120120
"quickSearch": 0,
121121
"ext": ""
@@ -124,8 +124,8 @@
124124
"key": "drpyS_腾云驾雾[官]",
125125
"name": "腾云驾雾[官](DS)",
126126
"type": 4,
127-
"api": "http://192.168.31.49:5757/api/腾云驾雾[官]",
128-
"searchable": 1,
127+
"api": "http://127.0.0.1:5757/api/腾云驾雾[官]",
128+
"searchable": 2,
129129
"filterable": 1,
130130
"quickSearch": 0,
131131
"ext": ""
@@ -134,8 +134,8 @@
134134
"key": "drpyS_色花堂[密+]",
135135
"name": "色花堂[密+](DS)",
136136
"type": 4,
137-
"api": "http://192.168.31.49:5757/api/色花堂[密+]",
138-
"searchable": 1,
137+
"api": "http://127.0.0.1:5757/api/色花堂[密+]",
138+
"searchable": 2,
139139
"filterable": 1,
140140
"quickSearch": 0,
141141
"ext": ""
@@ -144,8 +144,8 @@
144144
"key": "drpyS_色花堂[密]",
145145
"name": "色花堂[密](DS)",
146146
"type": 4,
147-
"api": "http://192.168.31.49:5757/api/色花堂[密]",
148-
"searchable": 1,
147+
"api": "http://127.0.0.1:5757/api/色花堂[密]",
148+
"searchable": 2,
149149
"filterable": 1,
150150
"quickSearch": 0,
151151
"ext": ""
@@ -154,8 +154,8 @@
154154
"key": "drpyS_草榴社区[密]",
155155
"name": "草榴社区[密](DS)",
156156
"type": 4,
157-
"api": "http://192.168.31.49:5757/api/草榴社区[密]",
158-
"searchable": 1,
157+
"api": "http://127.0.0.1:5757/api/草榴社区[密]",
158+
"searchable": 2,
159159
"filterable": 1,
160160
"quickSearch": 0,
161161
"ext": ""
@@ -164,8 +164,8 @@
164164
"key": "drpyS_金牌影院",
165165
"name": "金牌影院(DS)",
166166
"type": 4,
167-
"api": "http://192.168.31.49:5757/api/金牌影院",
168-
"searchable": 1,
167+
"api": "http://127.0.0.1:5757/api/金牌影院",
168+
"searchable": 2,
169169
"filterable": 1,
170170
"quickSearch": 0,
171171
"ext": ""
@@ -174,17 +174,17 @@
174174
"key": "drpyS_黑料不打烊[密]",
175175
"name": "黑料不打烊[密](DS)",
176176
"type": 4,
177-
"api": "http://192.168.31.49:5757/api/黑料不打烊[密]",
177+
"api": "http://127.0.0.1:5757/api/黑料不打烊[密]",
178178
"searchable": 1,
179-
"filterable": 1,
179+
"filterable": 0,
180180
"quickSearch": 0,
181181
"ext": ""
182182
}
183183
],
184184
"parses": [
185185
{
186186
"name": "虾米",
187-
"url": "http://192.168.31.49:5757/parse/虾米?url=",
187+
"url": "http://127.0.0.1:5757/parse/虾米?url=",
188188
"type": 1,
189189
"ext": {
190190
"flag": [

js/央视大全[官].js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)