Skip to content

Commit 1b9d0e0

Browse files
committed
update:框架功能
1 parent a0e3f88 commit 1b9d0e0

18 files changed

+572
-228
lines changed

README.md

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

1414
## 更新记录
1515

16-
### 20241219
16+
### 20241220
1717

18-
更新至V1.0.15
18+
更新至V1.0.16
1919

20-
1. 增加导出函数
21-
2. 新增源
22-
3. 新增订阅码过滤源机制,类似hipy
23-
4. 太冷了写不动,就这样吧
20+
1. 更新细节,增加一些函数
21+
2. 增加订阅码自定义排序功能
2422

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

controllers/config.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,30 @@
11
import {readdirSync, readFileSync, writeFileSync, existsSync} from 'fs';
22
import path from 'path';
33
import * as drpy from '../libs/drpyS.js';
4+
import {naturalSort} from '../utils/utils.js'
45

56
// 工具函数:生成 JSON 数据
6-
async function generateSiteJSON(jsDir, requestHost, sub) {
7+
async function generateSiteJSON(jsDir, requestHost, sub, subFilePath) {
78
const files = readdirSync(jsDir);
89
let valid_files = files.filter((file) => file.endsWith('.js') && !file.startsWith('_')); // 筛选出不是 "_" 开头的 .js 文件
10+
let sort_list = [];
911
if (sub) {
1012
if (sub.mode === 0) {
1113
valid_files = valid_files.filter(it => (new RegExp(sub.reg || '.*')).test(it));
1214
} else if (sub.mode === 1) {
1315
valid_files = valid_files.filter(it => !(new RegExp(sub.reg || '.*')).test(it));
1416
}
17+
let sort_file = path.join(path.dirname(subFilePath), `./order_common.txt`);
18+
if (sub.sort) {
19+
sort_file = path.join(path.dirname(subFilePath), `./${sub.sort}.txt`);
20+
}
21+
if (existsSync(sort_file)) {
22+
console.log('sort_file:', sort_file);
23+
let sort_file_content = readFileSync(sort_file, 'utf-8');
24+
// console.log(sort_file_content)
25+
sort_list = sort_file_content.split('\n').filter(it => it.trim()).map(it => it.trim());
26+
// console.log(sort_list);
27+
}
1528
}
1629
let sites = [];
1730
for (const file of valid_files) {
@@ -26,9 +39,9 @@ async function generateSiteJSON(jsDir, requestHost, sub) {
2639
};
2740
try {
2841
ruleObject = await drpy.getRuleObject(path.join(jsDir, file));
29-
// log(file, ruleObject.title);
42+
// console.log(file, ruleObject.title);
3043
} catch (e) {
31-
log(`file:${file} error:${e.message}`);
44+
console.log(`file:${file} error:${e.message}`);
3245
}
3346
const site = {
3447
key,
@@ -42,6 +55,7 @@ async function generateSiteJSON(jsDir, requestHost, sub) {
4255
};
4356
sites.push(site);
4457
}
58+
sites = naturalSort(sites, 'name', sort_list);
4559
return {sites};
4660
}
4761

@@ -91,10 +105,10 @@ function generateParseJSON(jxDir, requestHost) {
91105
function getSubs(subFilePath) {
92106
let subs = [];
93107
try {
94-
const subContent = readFileSync(subFilePath);
108+
const subContent = readFileSync(subFilePath, 'utf-8');
95109
subs = JSON.parse(subContent)
96110
} catch (e) {
97-
log(`读取订阅失败:${e.message}`);
111+
console.log(`读取订阅失败:${e.message}`);
98112
}
99113
return subs
100114
}
@@ -128,13 +142,13 @@ export default (fastify, options, done) => {
128142
if (sub_code) {
129143
let subs = getSubs(options.subFilePath);
130144
sub = subs.find(it => it.code === sub_code);
131-
console.log('sub:', sub);
145+
// console.log('sub:', sub);
132146
if (sub && sub.status === 0) {
133147
return reply.status(500).send({error: `此订阅码:【${sub_code}】已禁用`});
134148
}
135149
}
136150

137-
const siteJSON = await generateSiteJSON(options.jsDir, requestHost, sub);
151+
const siteJSON = await generateSiteJSON(options.jsDir, requestHost, sub, options.subFilePath);
138152
const parseJSON = generateParseJSON(options.jxDir, requestHost);
139153
const configObj = {sites_count: siteJSON.sites.length, ...siteJSON, ...parseJSON};
140154
// console.log(configObj);

0 commit comments

Comments
 (0)