♻️ refactor(substore): 优化 alphaair 重命名规则与排序逻辑
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user