From 26bcb3062ab72a3c2fa5a66060579dbb1e51bf64 Mon Sep 17 00:00:00 2001 From: Orion Date: Wed, 3 Jun 2026 10:30:26 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(substore):=20?= =?UTF-8?q?=E5=B0=86=E5=80=8D=E7=8E=87=E6=A0=87=E8=AF=86=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=B0=E8=8A=82=E7=82=B9=E5=90=8D=E7=A7=B0=E6=9C=AB=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- substore/README.md | 3 +++ substore/rename.js | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/substore/README.md b/substore/README.md index 1f4908c..f18f4af 100644 --- a/substore/README.md +++ b/substore/README.md @@ -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`。 diff --git a/substore/rename.js b/substore/rename.js index 09ccda9..d0bb451 100644 --- a/substore/rename.js +++ b/substore/rename.js @@ -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; };