From 93bb6a7a6c9394316400d5178b7046064c505075 Mon Sep 17 00:00:00 2001 From: Orion Date: Wed, 3 Jun 2026 09:55:44 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(substore):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20alphaair=20=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=A7=84=E5=88=99=E4=B8=8E=E6=8E=92=E5=BA=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- substore/README.md | 11 +++++++---- substore/alphaair-rename.js | 20 +++++++++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/substore/README.md b/substore/README.md index 9fbcd32..1f4908c 100644 --- a/substore/README.md +++ b/substore/README.md @@ -21,7 +21,7 @@ | `sntp-rename.js` | SNTP 单订阅 | 注入 `[三网]`、`[CF]`、`[直连]`、`[cn2]` 等线路标签 | | `yuetong-rename.js` | YueTong 单订阅 | 去掉 `悦·`、`💎`,把 `AI解锁` 压成 `AI` | | `peiqian-rename.js` | PeiQian 单订阅 | 压短 `电信联通推荐`、`移动联通推荐`、`高速专线`、`hy2`、倍率和用途描述 | -| `alphaair-rename.js` | Alpha Air 单订阅 | 去掉供应商/提供者/三网/家宽文案,保留地区、城市码、倍率并连续编号 | +| `alphaair-rename.js` | Alpha Air 单订阅 | 去掉提供者/三网/家宽文案,普通节点保留地区,高级非倍率节点保留供应商,倍率节点保留倍率并连续编号 | | `rename.js` | 整合订阅 | 统一国家/城市短码,移动国旗到首部,追加 `- _subName`,处理重名编号 | ## SNTP 规则 @@ -92,7 +92,7 @@ ## Alpha Air 规则 -`alphaair-rename.js` 建议挂在 Alpha Air 单条订阅里使用。它会把 Alpha Air 的供应商、提供者和线路文案压掉,并在该订阅内部按地区和倍率编号;之后再交给全局 `rename.js` 追加订阅后缀。 +`alphaair-rename.js` 建议挂在 Alpha Air 单条订阅里使用。它会把 Alpha Air 的提供者和线路文案压掉;普通节点只保留地区,高级非倍率节点保留供应商标签,倍率家宽节点只保留倍率;之后再交给全局 `rename.js` 追加订阅后缀。 ```text 🇺🇸 4X|美国夏威夷家宽|三网1 @@ -101,8 +101,11 @@ 3X 🇨🇳 台湾家宽Hinet|COP => 🇹🇼 TW 3X 01 -🇳🇱 搬瓦工荷兰|JC -=> 🇳🇱 NL 01 +🇭🇰 SkyStroll|毕业 +=> 🇭🇰 HK SkyStroll 01 + +香港HKT +=> 🇭🇰 HK 01 ``` ## 全局重命名 diff --git a/substore/alphaair-rename.js b/substore/alphaair-rename.js index 4e4c8bb..d6f7c38 100644 --- a/substore/alphaair-rename.js +++ b/substore/alphaair-rename.js @@ -1,7 +1,8 @@ /** * Alpha Air 专用节点清理脚本 - * - 压掉供应商、提供者、三网、家宽等 Alpha Air 专属文案 - * - 保留地区、城市码和倍率,按地区内倍率排序并连续编号 + * - 压掉提供者、三网、家宽等 Alpha Air 专属文案 + * - 普通节点只保留地区,非倍率高级节点保留供应商,倍率节点保留倍率 + * - 按地区内“普通 -> 倍率 -> 高级”排序并连续编号 * - 不追加订阅后缀,整合订阅最后仍交给 rename.js 处理 */ function operator(proxies) { @@ -93,6 +94,13 @@ function operator(proxies) { return match ? `${match[1]}X` : ''; }; + const providerOf = name => { + if (/SkyStroll/i.test(name)) return 'SkyStroll'; + if (/isif/i.test(name)) return 'ISIF'; + if (/(?:搬瓦工|Bandwagon|BWH|BWG)/i.test(name)) return 'BWH'; + return ''; + }; + const leadingRegionPrefixOf = name => { const match = name.match(/^([A-Z]{2})(?:\s+([A-Z]{3}))?(?=\s|$|-|\d|\|)/); if (!match) return ''; @@ -132,6 +140,7 @@ function operator(proxies) { const regionCode = regionPrefix.split(/\s+/)[0]; const cityCode = regionPrefix.split(/\s+/)[1] || ''; const multiplier = multiplierOf(text); + const provider = multiplier ? '' : providerOf(text); const normalizedFlag = regionCodeToFlag(regionCode); return { @@ -139,8 +148,10 @@ function operator(proxies) { originalIndex, countryCode: regionCode, cityCode, + provider, + providerRank: provider ? 1 : 0, multiplierValue: multiplier ? Number(multiplier.replace(/X$/i, '')) : Number.NEGATIVE_INFINITY, - normalizedName: [normalizedFlag, regionPrefix, multiplier].filter(Boolean).join(' ').trim() + normalizedName: [normalizedFlag, regionPrefix, provider, multiplier].filter(Boolean).join(' ').trim() }; }; @@ -160,6 +171,9 @@ function operator(proxies) { const firstOrder = countryOrder[firstItem.countryCode]; const secondOrder = countryOrder[secondItem.countryCode]; if (firstOrder !== secondOrder) return firstOrder - secondOrder; + if (firstItem.providerRank !== secondItem.providerRank) { + return firstItem.providerRank - secondItem.providerRank; + } if (firstItem.multiplierValue !== secondItem.multiplierValue) { return firstItem.multiplierValue - secondItem.multiplierValue; }