Skip to content

Commit fce4bce

Browse files
author
Taois
committed
feat: 发布新版本
1 parent 0ac2e55 commit fce4bce

25 files changed

+1876
-52
lines changed

README.md

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# drpyS(drpy-node)
22

33
nodejs作为服务端的drpy实现。全面升级异步写法
4-
~~积极开发中,每日一更~~,当前进度 `65%`
4+
~~积极开发中,每日一更~~,当前进度 `66%`
55
~~找工作中,随缘更新~~
66
上班当牛马,下班要带娃,阶段性佛系趁娃睡觉熬夜更新
77

@@ -21,6 +21,10 @@ nodejs作为服务端的drpy实现。全面升级异步写法
2121

2222
## 更新记录
2323

24+
### 20250806
25+
26+
更新至V1.2.7
27+
2428
### 20250805
2529

2630
更新至V1.2.6
@@ -29,34 +33,6 @@ nodejs作为服务端的drpy实现。全面升级异步写法
2933

3034
更新至V1.2.5
3135

32-
### 20250801
33-
34-
更新至V1.2.4
35-
36-
### 20250729
37-
38-
更新至V1.2.3
39-
40-
### 20250728
41-
42-
更新至V1.2.2
43-
44-
### 20250727
45-
46-
更新至V1.2.1
47-
48-
全新版本,大堆特性,性能优化,稳定性增强。
49-
50-
### 20250726
51-
52-
更新至V1.2.0
53-
54-
1. 支持挂载py源
55-
56-
### 20250310
57-
58-
更新至V1.1.23
59-
6036
[点此查看完整更新记录](docs/updateRecord.md)
6137

6238
**注意事项**

config/map.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
采集之王[合]@?type=url&params=../json/采集[zy]静态.json$1@采王zy[密]
88
采集之王[合]@?type=url&params=../json/采集[密]静态.json$1$@采王成人[密]
99
采集之王[合]@?type=url&params=../json/采集2024静态.json$1$@采王2024
10+
采集之王[合]@?type=url&params=../json/采集2025静态.json$1$@采王2025
1011
UC分享@?type=url&params=../json/UC分享.json@UC分享[盘]
1112
16wMV[听]@?type=url&params=../json/十六万歌曲.txt
1213
点歌欢唱[B]@?type=url&params=../json/十六万歌曲.txt

controllers/config.js

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
2020
const jsDir = options.jsDir;
2121
const dr2Dir = options.dr2Dir;
2222
const pyDir = options.pyDir;
23+
const catDir = options.catDir;
2324
const configDir = options.configDir;
2425
const jsonDir = options.jsonDir;
2526
const subFilePath = options.subFilePath;
@@ -395,6 +396,92 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
395396

396397
}
397398

399+
// 根据用户是否启用cat源去生成对应配置
400+
if (ENV.get('enable_cat', '1') === '1') {
401+
const cat_files = readdirSync(catDir);
402+
let cat_valid_files = cat_files.filter((file) => file.endsWith('.js') && !file.startsWith('_')); // 筛选出不是 "_" 开头的 .py 文件
403+
// log(py_valid_files);
404+
log(`开始生成catvod的t3配置,catDir:${catDir},源数量: ${cat_valid_files.length}`);
405+
406+
const cat_tasks = cat_valid_files.map((file) => {
407+
return {
408+
func: async ({file, catDir, requestHost, pwd, SitesMap}) => {
409+
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
410+
const extJson = path.join(catDir, baseName + '.json');
411+
let api = `${requestHost}/cat/${file}`;
412+
let ext = existsSync(extJson) ? `${requestHost}/cat/${file}` : '';
413+
if (pwd) {
414+
api += `?pwd=${pwd}`;
415+
if (ext) {
416+
ext += `?pwd=${pwd}`;
417+
}
418+
}
419+
let ruleObject = {
420+
searchable: 1, // 固定值
421+
filterable: 1, // 固定值
422+
quickSearch: 1, // 固定值
423+
};
424+
let ruleMeta = {...ruleObject};
425+
const filePath = path.join(catDir, file);
426+
const header = await FileHeaderManager.readHeader(filePath);
427+
// console.log('py header:', header);
428+
if (!header || forceHeader) {
429+
const fileContent = await readFile(filePath, 'utf-8');
430+
const title = extractNameFromCode(fileContent) || baseName;
431+
Object.assign(ruleMeta, {
432+
title: title,
433+
lang: 'cat',
434+
});
435+
// console.log('py ruleMeta:', ruleMeta);
436+
await FileHeaderManager.writeHeader(filePath, ruleMeta);
437+
} else {
438+
Object.assign(ruleMeta, header);
439+
}
440+
if (!isLoaded) {
441+
const sizeInBytes = await FileHeaderManager.getFileSize(filePath, {humanReadable: true});
442+
console.log(`Loading RuleObject: ${filePath} fileSize:${sizeInBytes}`);
443+
}
444+
ruleMeta.title = enableRuleName ? ruleMeta.title || baseName : baseName;
445+
446+
let fileSites = [];
447+
if (baseName === 'push_agent') {
448+
let key = 'push_agent';
449+
let name = `${ruleMeta.title}(cat)`;
450+
fileSites.push({key, name, ext});
451+
} else if (SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
452+
SitesMap[baseName].forEach((it) => {
453+
let key = `catvod_${it.alias}`;
454+
let name = `${it.alias}(cat)`;
455+
let _ext = updateQueryString(ext, it.queryStr);
456+
fileSites.push({key, name, ext: _ext});
457+
});
458+
} else {
459+
let key = `catvod_${ruleMeta.title}`;
460+
let name = `${ruleMeta.title}(cat)`;
461+
fileSites.push({key, name, ext});
462+
}
463+
464+
fileSites.forEach((fileSite) => {
465+
const site = {
466+
key: fileSite.key,
467+
name: fileSite.name,
468+
type: 3, // 固定值
469+
api,
470+
...ruleMeta,
471+
ext: fileSite.ext || "", // 固定为空字符串
472+
};
473+
sites.push(site);
474+
});
475+
},
476+
param: {file, catDir, requestHost, pwd, SitesMap},
477+
id: file,
478+
};
479+
});
480+
481+
await batchExecute(cat_tasks, listener);
482+
483+
}
484+
398485
// 根据用户是否启用挂载数据源去生成对应配置
399486
if (ENV.get('enable_link_data', '0') === '1') {
400487
log(`开始挂载外部T4数据`);

docs/updateRecord.md

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

3+
### 20250808
4+
5+
更新至V1.2.7
6+
7+
catvod源支持,更新部分源
8+
9+
1. 把月亮影视的底裤扒了,它的源配置为我所用 `采集2025静态.json`
10+
,原链接为[moontv](https://github.com/LunaTechLab/MoonTV/blob/main/config.json)
11+
2. spider/catvod目录新增原生js支持
12+
3. 增加 & 修复源
13+
314
### 20250805
415

516
更新至V1.2.6

index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ fastify.register(fastifyStatic, {
6161
}
6262
});
6363

64+
fastify.register(fastifyStatic, {
65+
root: catDir,
66+
prefix: '/cat/', // 新的访问路径前缀
67+
decorateReply: false, // 禁用 sendFile
68+
});
69+
6470
// 注册插件以支持 application/x-www-form-urlencoded
6571
fastify.register(formBody);
6672

0 commit comments

Comments
 (0)