♻️ refactor(substore): 将倍率标识移动到节点名称末尾

This commit is contained in:
Orion
2026-06-03 10:30:26 +08:00
parent 07ef71bf4a
commit 26bcb3062a
2 changed files with 19 additions and 1 deletions
+3
View File
@@ -97,9 +97,11 @@
```text
🇺🇸 4X|美国夏威夷家宽|三网1
=> 🇺🇸 US HNL 4X 01
=> 🇺🇸 US HNL 01 4X - Alpha Air
3X 🇨🇳 台湾家宽Hinet|COP
=> 🇹🇼 TW 3X 01
=> 🇹🇼 TW 01 3X - Alpha Air
🇭🇰 SkyStroll|毕业
=> 🇭🇰 HK SkyStroll 01
@@ -116,6 +118,7 @@
- 常见城市转短码,例如 `Los Angeles` -> `LAX``San Jose` -> `SJC``Seattle` -> `SEA``东京` -> `TYO`
- 国家/地区别名表覆盖常见英文、中文国家名;城市尽量使用三字 IATA/城市码,避免 `LA` 这类两字码被旗帜操作误识别为国家。
- 支持国旗在中间的节点名,例如 `Pro-🇭🇰 Sharon|守夜人` -> `🇭🇰 HK Pro-Sharon|守夜人`
- 将倍率移动到节点核心末尾、订阅后缀之前,例如 `US 2X 02 - Alpha Air` -> `US 02 2X - Alpha Air`
- 清理 `[DIP China-Hongkong]``[DIP]`
- 清理 `IEPL 专线` 这类冗余描述。
- 追加订阅后缀 `- _subName`
+16 -1
View File
@@ -661,6 +661,21 @@ function operator(proxies) {
.trim();
};
const moveMultiplierToEnd = name => {
const multipliers = [];
const nameWithoutMultiplier = name
.replace(/\b(\d+(?:\.\d+)?X)\b/gi, multiplier => {
multipliers.push(multiplier.toUpperCase());
return ' ';
})
.replace(/\s+\[/g, ' [')
.replace(/\s{2,}/g, ' ')
.trim();
if (!multipliers.length) return name;
return `${nameWithoutMultiplier} ${multipliers.join(' ')}`.trim();
};
const normalizeBilingualName = name => {
const bilingualMatch = name.match(/^(.+?)\s*\s*(.+)$/);
if (!bilingualMatch) return name;
@@ -725,7 +740,7 @@ function operator(proxies) {
core = joinAlias(flagRegionCode, core);
}
core = simplifyCoreName(core);
core = moveMultiplierToEnd(simplifyCoreName(core));
return flag ? `${flag} ${core}` : core;
};