Skip to content

Commit 67db74e

Browse files
committed
update:发布新版本
1 parent 6561b0e commit 67db74e

22 files changed

+1596
-241
lines changed

README.md

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

1717
## 更新记录
1818

19-
### 20250111
19+
### 20250113
2020

21-
更新至V1.1.7
21+
更新至V1.1.8
2222

23-
1. 修复lazy函数里input变量bug
24-
2. 设置中心AI增强
23+
1. 支持天翼网盘
24+
2. 支持dr2源
2525

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

controllers/config.js

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {readdirSync, readFileSync, writeFileSync, existsSync} from 'fs';
22
import path from 'path';
33
import * as drpy from '../libs/drpyS.js';
4-
import {naturalSort, urljoin} from '../utils/utils.js'
4+
import {naturalSort, urljoin, updateQueryString} from '../utils/utils.js'
55
import {ENV} from "../utils/env.js";
66
import {validatePwd} from "../utils/api_validate.js";
77
import {getSitesMap} from "../utils/sites-map.js";
@@ -11,7 +11,7 @@ import batchExecute from '../libs_drpy/batchExecute.js';
1111
const {jsEncoder} = drpy;
1212

1313
// 工具函数:生成 JSON 数据
14-
async function generateSiteJSON(jsDir, configDir, requestHost, sub, subFilePath, pwd) {
14+
async function generateSiteJSON(jsDir, dr2Dir, configDir, requestHost, sub, subFilePath, pwd) {
1515
const files = readdirSync(jsDir);
1616
let valid_files = files.filter((file) => file.endsWith('.js') && !file.startsWith('_')); // 筛选出不是 "_" 开头的 .js 文件
1717
let sort_list = [];
@@ -118,6 +118,77 @@ async function generateSiteJSON(jsDir, configDir, requestHost, sub, subFilePath,
118118
};
119119

120120
await batchExecute(tasks, listener);
121+
122+
// 根据用户是否启用dr2源去生成对应配置
123+
if (ENV.get('enable_dr2', '1') === '1') {
124+
const dr2_files = readdirSync(dr2Dir);
125+
let dr2_valid_files = dr2_files.filter((file) => file.endsWith('.js') && !file.startsWith('_')); // 筛选出不是 "_" 开头的 .js 文件
126+
// log(dr2_valid_files);
127+
log(`开始生成dr2的t3配置,dr2Dir:${dr2Dir},源数量: ${dr2_valid_files.length}`);
128+
129+
const dr2_tasks = dr2_valid_files.map((file) => {
130+
return {
131+
func: async ({file, dr2Dir, requestHost, pwd, drpy, SitesMap}) => {
132+
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
133+
let api = `./drpy2.min.js`; // 使用内置drpy2
134+
let ext = `${requestHost}/js/${file}`;
135+
if (pwd) {
136+
ext += `?pwd=${pwd}`;
137+
}
138+
let ruleObject = {
139+
searchable: 0, // 固定值
140+
filterable: 0, // 固定值
141+
quickSearch: 0, // 固定值
142+
};
143+
try {
144+
// console.log('file:', path.join(dr2Dir, file));
145+
ruleObject = await drpy.getRuleObject(path.join(dr2Dir, file));
146+
} catch (e) {
147+
throw new Error(`Error parsing rule object for file: ${file}, ${e.message}`);
148+
}
149+
150+
let fileSites = [];
151+
if (baseName === 'push_agent') {
152+
let key = 'push_agent';
153+
let name = `${ruleObject.title}(DR2)`;
154+
fileSites.push({key, name, ext});
155+
} else if (SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
156+
SitesMap[baseName].forEach((it) => {
157+
let key = `drpy2_${it.alias}`;
158+
let name = `${it.alias}(DR2)`;
159+
let _ext = updateQueryString(ext, it.queryStr);
160+
fileSites.push({key, name, ext: _ext});
161+
});
162+
} else {
163+
let key = `drpy2_${baseName}`;
164+
let name = `${baseName}(DR2)`;
165+
fileSites.push({key, name, ext});
166+
}
167+
168+
fileSites.forEach((fileSite) => {
169+
const site = {
170+
key: fileSite.key,
171+
name: fileSite.name,
172+
type: 3, // 固定值
173+
api,
174+
searchable: ruleObject.searchable,
175+
filterable: ruleObject.filterable,
176+
quickSearch: ruleObject.quickSearch,
177+
more: ruleObject.more,
178+
ext: fileSite.ext || "", // 固定为空字符串
179+
};
180+
sites.push(site);
181+
});
182+
},
183+
param: {file, dr2Dir, requestHost, pwd, drpy, SitesMap},
184+
id: file,
185+
};
186+
});
187+
188+
await batchExecute(dr2_tasks, listener);
189+
190+
}
191+
121192
// 订阅再次处理别名的情况
122193
if (sub) {
123194
if (sub.mode === 0) {
@@ -298,7 +369,7 @@ export default (fastify, options, done) => {
298369
}
299370
}
300371

301-
const siteJSON = await generateSiteJSON(options.jsDir, options.configDir, requestHost, sub, options.subFilePath, pwd);
372+
const siteJSON = await generateSiteJSON(options.jsDir, options.dr2Dir, options.configDir, requestHost, sub, options.subFilePath, pwd);
302373
const parseJSON = await generateParseJSON(options.jxDir, requestHost);
303374
const livesJSON = generateLivesJSON(requestHost);
304375
const playerJSON = generatePlayerJSON(options.configDir, requestHost);

0 commit comments

Comments
 (0)