Skip to content

Commit 881bd73

Browse files
author
Taois
committed
feat: 回退代码,修复bug,改不动了
1 parent 6db18f1 commit 881bd73

File tree

20 files changed

+445
-355
lines changed

20 files changed

+445
-355
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ nodejs作为服务端的drpy实现。全面升级异步写法
2121

2222
## 更新记录
2323

24+
### 20250805
25+
26+
更新至V1.2.6
27+
2428
### 20250804
2529

2630
更新至V1.2.5

controllers/api.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@ import {base64Decode} from '../libs_drpy/crypto-util.js';
44
import {ENV} from "../utils/env.js";
55
import {validatePwd} from "../utils/api_validate.js";
66
import {startJsonWatcher, getApiEngine} from "../utils/api_helper.js";
7-
import * as drpy from '../libs/drpyS.js';
8-
import * as drpy2 from '../libs/dr2Adapter.js';
9-
import * as pyadapter from '../libs/pyAdapter.js';
7+
import * as drpyS from '../libs/drpyS.js';
8+
import * as drpy2 from '../libs/drpy2.js';
9+
import * as hipy from '../libs/hipy.js';
10+
import * as xbpq from '../libs/xbpq.js';
1011

1112
const ENGINES = {
12-
drpy,
13+
drpyS,
1314
drpy2,
14-
pyadapter,
15+
hipy,
16+
xbpq,
1517
};
1618

1719
export default (fastify, options, done) => {
1820
// 启动JSON监听
19-
startJsonWatcher(drpy, options.jsonDir);
21+
startJsonWatcher(ENGINES, options.jsonDir);
2022

2123
// 动态加载模块并根据 query 执行不同逻辑
2224
fastify.route({

controllers/config.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {readdirSync, readFileSync, writeFileSync, existsSync} from 'fs';
22
import {readFile} from 'fs/promises';
33
import path from 'path';
4-
import * as drpy from '../libs/drpyS.js';
4+
import * as drpyS from '../libs/drpyS.js';
55
import '../libs_drpy/jinja.js'
66
import {naturalSort, urljoin, updateQueryString} from '../utils/utils.js'
77
import {md5} from "../libs_drpy/crypto-util.js";
@@ -13,7 +13,7 @@ import {getSitesMap} from "../utils/sites-map.js";
1313
import {getParsesDict} from "../utils/file.js";
1414
import batchExecute from '../libs_drpy/batchExecute.js';
1515

16-
const {jsEncoder} = drpy;
16+
const {jsEncoder} = drpyS;
1717

1818
// 工具函数:生成 JSON 数据
1919
async function generateSiteJSON(options, requestHost, sub, pwd) {
@@ -82,7 +82,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
8282

8383
let link_jar = '';
8484
let enableRuleName = ENV.get('enable_rule_name', '0') === '1';
85-
let isLoaded = await drpy.isLoaded();
85+
let isLoaded = await drpyS.isLoaded();
8686
let forceHeader = Number(process.env.FORCE_HEADER) || 0;
8787
let dr2ApiType = Number(process.env.DR2_API_TYPE) || 0; // 0 ds里的api 1壳子内置
8888
// console.log('hide_adult:', ENV.get('hide_adult'));
@@ -94,7 +94,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
9494
log(`开始生成ds的t4配置,jsDir:${jsDir},源数量: ${valid_files.length}`);
9595
const tasks = valid_files.map((file) => {
9696
return {
97-
func: async ({file, jsDir, requestHost, pwd, drpy, SitesMap, jsEncoder}) => {
97+
func: async ({file, jsDir, requestHost, pwd, drpyS, SitesMap, jsEncoder}) => {
9898
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
9999
let api = `${requestHost}/api/${baseName}`; // 使用请求的 host 地址,避免硬编码端口
100100
if (pwd) {
@@ -112,7 +112,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
112112
// console.log('ds header:', header);
113113
if (!header || forceHeader) {
114114
try {
115-
ruleObject = await drpy.getRuleObject(filePath);
115+
ruleObject = await drpyS.getRuleObject(filePath);
116116
} catch (e) {
117117
throw new Error(`Error parsing rule object for file: ${file}, ${e.message}`);
118118
}
@@ -169,7 +169,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
169169
sites.push(site);
170170
});
171171
},
172-
param: {file, jsDir, requestHost, pwd, drpy, SitesMap, jsEncoder},
172+
param: {file, jsDir, requestHost, pwd, drpyS, SitesMap, jsEncoder},
173173
id: file,
174174
};
175175
});
@@ -197,7 +197,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
197197

198198
const dr2_tasks = dr2_valid_files.map((file) => {
199199
return {
200-
func: async ({file, dr2Dir, requestHost, pwd, drpy, SitesMap}) => {
200+
func: async ({file, dr2Dir, requestHost, pwd, drpyS, SitesMap}) => {
201201
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
202202
let ruleObject = {
203203
searchable: 0, // 固定值
@@ -210,7 +210,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
210210
// console.log('dr2 header:', header);
211211
if (!header || forceHeader) {
212212
try {
213-
ruleObject = await drpy.getRuleObject(path.join(filePath));
213+
ruleObject = await drpyS.getRuleObject(path.join(filePath));
214214
} catch (e) {
215215
throw new Error(`Error parsing rule object for file: ${file}, ${e.message}`);
216216
}
@@ -300,7 +300,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
300300
}
301301
});
302302
},
303-
param: {file, dr2Dir, requestHost, pwd, drpy, SitesMap},
303+
param: {file, dr2Dir, requestHost, pwd, drpyS, SitesMap},
304304
id: file,
305305
};
306306
});
@@ -462,7 +462,7 @@ async function generateParseJSON(jxDir, requestHost) {
462462
let parses = [];
463463
const tasks = jx_files.map((file) => {
464464
return {
465-
func: async ({file, jxDir, requestHost, drpy}) => {
465+
func: async ({file, jxDir, requestHost, drpyS}) => {
466466
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
467467
const api = `${requestHost}/parse/${baseName}?url=`; // 使用请求的 host 地址,避免硬编码端口
468468

@@ -497,7 +497,7 @@ async function generateParseJSON(jxDir, requestHost) {
497497
}
498498
};
499499
try {
500-
let _jxObject = await drpy.getJx(path.join(jxDir, file));
500+
let _jxObject = await drpyS.getJx(path.join(jxDir, file));
501501
jxObject = {...jxObject, ..._jxObject};
502502
} catch (e) {
503503
throw new Error(`Error parsing jx object for file: ${file}, ${e.message}`);
@@ -511,7 +511,7 @@ async function generateParseJSON(jxDir, requestHost) {
511511
header: jxObject.header
512512
});
513513
},
514-
param: {file, jxDir, requestHost, drpy},
514+
param: {file, jxDir, requestHost, drpyS},
515515
id: file,
516516
};
517517
});

docs/updateRecord.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# drpyS更新记录
22

3+
### 20250805
4+
5+
更新至V1.2.6
6+
7+
由于上个版本实验性启用drpy2源t4风格接口,用户反馈极差,Bug难以修复,此版本弃用上版的drpy2解析逻辑
8+
9+
1. 移除原drpy2解析逻辑,预留解析libs,待后面实现
10+
2. 优化代码风格,全局导入问题
11+
3. 增加源
12+
313
### 20250804
414

515
更新至V1.2.5
File renamed without changes.
File renamed without changes.
File renamed without changes.

libs/drpyS.js

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,81 +2,59 @@ import {readFile} from 'fs/promises';
22
import {existsSync, readFileSync, writeFileSync, mkdirSync} from 'fs';
33
import {fileURLToPath} from "url";
44
import {XMLHttpRequest} from 'xmlhttprequest';
5+
import WebSocket, {WebSocketServer} from 'ws';
56
import path from "path";
67
import vm from 'vm';
7-
import WebSocket, {WebSocketServer} from 'ws';
88
import zlib from 'zlib';
99
import JSONbig from 'json-bigint';
10-
import * as minizlib from 'minizlib';
1110
import forge from "node-forge";
12-
import '../libs_drpy/es6-extend.js'
13-
import {getSitesMap} from "../utils/sites-map.js";
11+
import * as minizlib from 'minizlib';
1412
import * as utils from '../utils/utils.js';
1513
import * as misc from '../utils/misc.js';
1614
import COOKIE from '../utils/cookieManager.js';
15+
import AIS from '../utils/ais.js';
16+
import fileHeaderManager from "../utils/fileHeaderManager.js";
17+
import {getSitesMap} from "../utils/sites-map.js";
1718
import {ENV} from '../utils/env.js';
1819
import {Quark} from "../utils/quark.js";
1920
import {UC} from "../utils/uc.js";
2021
import {Ali} from "../utils/ali.js";
2122
import {Cloud} from "../utils/cloud.js";
2223
import {Yun} from "../utils/yun.js";
2324
import {Pan} from "../utils/pan123.js";
24-
import AIS from '../utils/ais.js';
25-
import fileHeaderManager from "../utils/fileHeaderManager.js";
2625
import {getContentType, getMimeType} from "../utils/mime-type.js";
2726
import {getParsesDict} from "../utils/file.js";
2827
import {getFirstLetter} from "../utils/pinyin-tool.js";
2928
import {reqs} from "../utils/req.js";
3029
import "../utils/random-http-ua.js";
31-
32-
// const { req } = await import('../utils/req.js');
33-
import {gbkTool} from '../libs_drpy/gbk.js'
34-
// import {atob, btoa, base64Encode, base64Decode, md5} from "../libs_drpy/crypto-util.js";
30+
import {rootRequire, initializeGlobalDollar} from "../libs_drpy/moduleLoader.js";
3531
import {base64Decode, base64Encode, md5, rc4, rc4_decode, rc4Decrypt, rc4Encrypt} from "../libs_drpy/crypto-util.js";
3632
import template from '../libs_drpy/template.js'
3733
import batchExecute from '../libs_drpy/batchExecute.js';
3834
import '../libs_drpy/abba.js'
39-
import '../libs_drpy/drpyInject.js'
40-
import '../libs_drpy/crypto-js.js';
4135
import '../libs_drpy/jsencrypt.js';
36+
import '../libs_drpy/gb18030.js';
37+
import '../libs_drpy/crypto-js.js';
4238
import '../libs_drpy/node-rsa.js';
4339
import '../libs_drpy/pako.min.js';
4440
import '../libs_drpy/json5.js'
4541
import '../libs_drpy/jinja.js'
46-
// import '../libs_drpy/jsonpathplus.min.js'
42+
import '../libs_drpy/drpyInject.js'
4743
import '../libs_drpy/drpyCustom.js'
48-
import {rootRequire, initializeGlobalDollar} from "../libs_drpy/moduleLoader.js";
49-
// import '../libs_drpy/crypto-js-wasm.js'
44+
import '../libs_drpy/es6-extend.js'
5045

5146
const __dirname = path.dirname(fileURLToPath(import.meta.url));
5247
const _data_path = path.join(__dirname, '../data');
5348
const _config_path = path.join(__dirname, '../config');
5449
const _lib_path = path.join(__dirname, '../spider/js');
5550

56-
globalThis.reqs = reqs;
57-
globalThis.forge = forge
58-
globalThis.misc = misc;
59-
globalThis.utils = utils;
60-
globalThis.COOKIE = COOKIE;
61-
globalThis.ENV = ENV;
51+
6252
globalThis._ENV = process.env;
63-
globalThis.Quark = Quark;
64-
globalThis.UC = UC;
65-
globalThis.Ali = Ali;
66-
globalThis.Cloud = Cloud;
67-
globalThis.Yun = Yun;
68-
globalThis.Pan = Pan;
69-
globalThis.require = rootRequire;
70-
initializeGlobalDollar();
7153
globalThis._fetch = fetch;
72-
globalThis.XMLHttpRequest = XMLHttpRequest;
73-
globalThis.WebSocket = WebSocket;
74-
globalThis.WebSocketServer = WebSocketServer;
75-
globalThis.zlib = zlib;
76-
globalThis.JSONbig = JSONbig;
7754
globalThis.JsonBig = JSONbig({storeAsString: true});
78-
globalThis.minizlib = minizlib;
79-
globalThis.AIS = AIS;
55+
globalThis.require = rootRequire;
56+
initializeGlobalDollar();
57+
8058
globalThis.pathLib = {
8159
basename: path.basename,
8260
extname: path.extname,
@@ -250,6 +228,7 @@ export async function getSandbox(env = {}) {
250228
aesX,
251229
desX,
252230
req,
231+
reqs,
253232
_fetch,
254233
XMLHttpRequest,
255234
simplecc,

libs/dsGlobal.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// import '../libs/jsonpathplus.min.js';
2+
// globalThis.reqs = reqs;
3+
// globalThis.forge = forge
4+
// globalThis.misc = misc;
5+
// globalThis.utils = utils;
6+
// globalThis.COOKIE = COOKIE;
7+
// globalThis.ENV = ENV;
8+
// globalThis.Quark = Quark;
9+
// globalThis.UC = UC;
10+
// globalThis.Ali = Ali;
11+
// globalThis.Cloud = Cloud;
12+
// globalThis.Yun = Yun;
13+
// globalThis.Pan = Pan;
14+
// globalThis.XMLHttpRequest = XMLHttpRequest;
15+
// globalThis.WebSocket = WebSocket;
16+
// globalThis.WebSocketServer = WebSocketServer;
17+
// globalThis.zlib = zlib;
18+
// globalThis.JSONbig = JSONbig;
19+
// globalThis.minizlib = minizlib;
20+
// globalThis.AIS = AIS;

libs/hipy.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
//在线解析py源,能力有限,暂时不会
2+
const getRule = async function () {
3+
4+
}
5+
6+
const init = async function () {
7+
8+
}
9+
10+
const home = async function () {
11+
12+
}
13+
14+
const homeVod = async function () {
15+
16+
}
17+
18+
19+
const cate = async function () {
20+
21+
}
22+
23+
const detail = async function () {
24+
25+
}
26+
27+
28+
const search = async function () {
29+
30+
}
31+
32+
const play = async function () {
33+
34+
}
35+
36+
37+
const proxy = async function () {
38+
39+
}
40+
41+
const action = async function () {
42+
43+
}
44+
45+
export default {
46+
getRule,
47+
init,
48+
home,
49+
homeVod,
50+
cate,
51+
detail,
52+
search,
53+
play,
54+
proxy,
55+
action,
56+
}

0 commit comments

Comments
 (0)