feat: switch to local full surge sync and local merge-convert pipeline

This commit is contained in:
袁震
2026-04-06 13:53:11 +08:00
parent f8ff7279c6
commit f1b218f57d
8 changed files with 169 additions and 697 deletions
+21 -3
View File
@@ -2,8 +2,9 @@
一个最小可用的规则生成器:
- 数据源来自 **Gitea** 仓库
- 输入按目录分类(默认读取 `rule/Surge/<Name>/<Name>.list`
- 先全量拉取上游 `ios_rule_script``Surge` 规则到本地缓存
- 再在本地做合并去重并转换多渠道
- 输入按目录分类(默认读取 `upstream/rule/Surge/<Name>/...`
- 输出仅包含你要的两种格式:
- `dist/surge/<Name>.list`
- `dist/loon/<Name>.list`
@@ -22,7 +23,7 @@
## 快速开始
仓库已内置可直接跑的默认配置文件 `config.json`指向 `yuanzhen869/ios-rule-script-full` 全量源)。
仓库已内置可直接跑的默认配置文件 `config.json`本地源模式,默认读 `upstream/`)。
1. 复制配置:
@@ -46,6 +47,12 @@ export GITEA_TOKEN='your-token'
如果数据源仓库是公开的(当前默认就是公开源),可以不设置 token。
默认配置会生成约 600+ 分类(当前为 667 个可直接生成的分类)。
3.1 先同步 Surge 全量源到本地缓存:
```bash
bash scripts/sync_surge_full.sh
```
4. 生成全部分类:
```bash
@@ -89,6 +96,16 @@ USER-AGENT,*youtube*
## 转换规则说明
### 基础合并策略(Surge
每个分类优先按下面三份源文件做合并去重(按顺序):
1. `<Name>.list`
2. `<Name>_Domain.list`
3. `<Name>_Resolve.list`
如果某分类不满足上述结构,会自动回退到 `_All.list` 等可用文件。
- Surge 输出:保留源规则(去重、清理空白)
- Loon 输出:基于 Surge 规则直接输出(同样去重、清理空白)
- Clash 输出:
@@ -123,6 +140,7 @@ USER-AGENT,*youtube*
3. 推送到 `main` 后会自动执行;也可在 Actions 页面手动触发
当前定时表达式是 `0 3 * * *`(UTC),对应北京时间(UTC+8)每天 `11:00`
工作流会先执行 `scripts/sync_surge_full.sh` 拉取上游 Surge 全量数据,再生成多渠道规则。
### 发布到独立仓库/分支(已内置)