♻️ refactor(substore): 优化 alphaair 重命名规则与排序逻辑
This commit is contained in:
+7
-4
@@ -21,7 +21,7 @@
|
|||||||
| `sntp-rename.js` | SNTP 单订阅 | 注入 `[三网]`、`[CF]`、`[直连]`、`[cn2]` 等线路标签 |
|
| `sntp-rename.js` | SNTP 单订阅 | 注入 `[三网]`、`[CF]`、`[直连]`、`[cn2]` 等线路标签 |
|
||||||
| `yuetong-rename.js` | YueTong 单订阅 | 去掉 `悦·`、`💎`,把 `AI解锁` 压成 `AI` |
|
| `yuetong-rename.js` | YueTong 单订阅 | 去掉 `悦·`、`💎`,把 `AI解锁` 压成 `AI` |
|
||||||
| `peiqian-rename.js` | PeiQian 单订阅 | 压短 `电信联通推荐`、`移动联通推荐`、`高速专线`、`hy2`、倍率和用途描述 |
|
| `peiqian-rename.js` | PeiQian 单订阅 | 压短 `电信联通推荐`、`移动联通推荐`、`高速专线`、`hy2`、倍率和用途描述 |
|
||||||
| `alphaair-rename.js` | Alpha Air 单订阅 | 去掉供应商/提供者/三网/家宽文案,保留地区、城市码、倍率并连续编号 |
|
| `alphaair-rename.js` | Alpha Air 单订阅 | 去掉提供者/三网/家宽文案,普通节点保留地区,高级非倍率节点保留供应商,倍率节点保留倍率并连续编号 |
|
||||||
| `rename.js` | 整合订阅 | 统一国家/城市短码,移动国旗到首部,追加 `- _subName`,处理重名编号 |
|
| `rename.js` | 整合订阅 | 统一国家/城市短码,移动国旗到首部,追加 `- _subName`,处理重名编号 |
|
||||||
|
|
||||||
## SNTP 规则
|
## SNTP 规则
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
|
|
||||||
## Alpha Air 规则
|
## Alpha Air 规则
|
||||||
|
|
||||||
`alphaair-rename.js` 建议挂在 Alpha Air 单条订阅里使用。它会把 Alpha Air 的供应商、提供者和线路文案压掉,并在该订阅内部按地区和倍率编号;之后再交给全局 `rename.js` 追加订阅后缀。
|
`alphaair-rename.js` 建议挂在 Alpha Air 单条订阅里使用。它会把 Alpha Air 的提供者和线路文案压掉;普通节点只保留地区,高级非倍率节点保留供应商标签,倍率家宽节点只保留倍率;之后再交给全局 `rename.js` 追加订阅后缀。
|
||||||
|
|
||||||
```text
|
```text
|
||||||
🇺🇸 4X|美国夏威夷家宽|三网1
|
🇺🇸 4X|美国夏威夷家宽|三网1
|
||||||
@@ -101,8 +101,11 @@
|
|||||||
3X 🇨🇳 台湾家宽Hinet|COP
|
3X 🇨🇳 台湾家宽Hinet|COP
|
||||||
=> 🇹🇼 TW 3X 01
|
=> 🇹🇼 TW 3X 01
|
||||||
|
|
||||||
🇳🇱 搬瓦工荷兰|JC
|
🇭🇰 SkyStroll|毕业
|
||||||
=> 🇳🇱 NL 01
|
=> 🇭🇰 HK SkyStroll 01
|
||||||
|
|
||||||
|
香港HKT
|
||||||
|
=> 🇭🇰 HK 01
|
||||||
```
|
```
|
||||||
|
|
||||||
## 全局重命名
|
## 全局重命名
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* Alpha Air 专用节点清理脚本
|
* Alpha Air 专用节点清理脚本
|
||||||
* - 压掉供应商、提供者、三网、家宽等 Alpha Air 专属文案
|
* - 压掉提供者、三网、家宽等 Alpha Air 专属文案
|
||||||
* - 保留地区、城市码和倍率,按地区内倍率排序并连续编号
|
* - 普通节点只保留地区,非倍率高级节点保留供应商,倍率节点保留倍率
|
||||||
|
* - 按地区内“普通 -> 倍率 -> 高级”排序并连续编号
|
||||||
* - 不追加订阅后缀,整合订阅最后仍交给 rename.js 处理
|
* - 不追加订阅后缀,整合订阅最后仍交给 rename.js 处理
|
||||||
*/
|
*/
|
||||||
function operator(proxies) {
|
function operator(proxies) {
|
||||||
@@ -93,6 +94,13 @@ function operator(proxies) {
|
|||||||
return match ? `${match[1]}X` : '';
|
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 leadingRegionPrefixOf = name => {
|
||||||
const match = name.match(/^([A-Z]{2})(?:\s+([A-Z]{3}))?(?=\s|$|-|\d|\|)/);
|
const match = name.match(/^([A-Z]{2})(?:\s+([A-Z]{3}))?(?=\s|$|-|\d|\|)/);
|
||||||
if (!match) return '';
|
if (!match) return '';
|
||||||
@@ -132,6 +140,7 @@ function operator(proxies) {
|
|||||||
const regionCode = regionPrefix.split(/\s+/)[0];
|
const regionCode = regionPrefix.split(/\s+/)[0];
|
||||||
const cityCode = regionPrefix.split(/\s+/)[1] || '';
|
const cityCode = regionPrefix.split(/\s+/)[1] || '';
|
||||||
const multiplier = multiplierOf(text);
|
const multiplier = multiplierOf(text);
|
||||||
|
const provider = multiplier ? '' : providerOf(text);
|
||||||
const normalizedFlag = regionCodeToFlag(regionCode);
|
const normalizedFlag = regionCodeToFlag(regionCode);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -139,8 +148,10 @@ function operator(proxies) {
|
|||||||
originalIndex,
|
originalIndex,
|
||||||
countryCode: regionCode,
|
countryCode: regionCode,
|
||||||
cityCode,
|
cityCode,
|
||||||
|
provider,
|
||||||
|
providerRank: provider ? 1 : 0,
|
||||||
multiplierValue: multiplier ? Number(multiplier.replace(/X$/i, '')) : Number.NEGATIVE_INFINITY,
|
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 firstOrder = countryOrder[firstItem.countryCode];
|
||||||
const secondOrder = countryOrder[secondItem.countryCode];
|
const secondOrder = countryOrder[secondItem.countryCode];
|
||||||
if (firstOrder !== secondOrder) return firstOrder - secondOrder;
|
if (firstOrder !== secondOrder) return firstOrder - secondOrder;
|
||||||
|
if (firstItem.providerRank !== secondItem.providerRank) {
|
||||||
|
return firstItem.providerRank - secondItem.providerRank;
|
||||||
|
}
|
||||||
if (firstItem.multiplierValue !== secondItem.multiplierValue) {
|
if (firstItem.multiplierValue !== secondItem.multiplierValue) {
|
||||||
return firstItem.multiplierValue - secondItem.multiplierValue;
|
return firstItem.multiplierValue - secondItem.multiplierValue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user