tindy2013 / subconverter

Utility to convert between various subscription format
GNU General Public License v3.0
13.48k stars 2.89k forks source link

处理多份订阅时可否在节点名称中生成不同订阅的别名 #177

Closed leic4u closed 4 years ago

leic4u commented 4 years ago

需求源于有多份订阅时,会忘记这个节点属于哪个订阅(特别是订阅地址是胡乱申请的域名情况下,根本不知道这份订阅来源于哪里)。我尝试了下现在的remarks参数,好像不支持对订阅链接?

类似于这样的处理: 转换地址: https://gfwsb.114514.best/sub?target=clashr&url=https://www.abc.com/sub?sub=1&remarks=ABC网站|https://www.xyz.com/sub?sub=1&remarks=XYZ网站

得到的节点: proxies:

at404bot commented 4 years ago

@leic4u 善用 GROUPID 来指定重命名

leic4u commented 4 years ago

@at404bot GROUPID好像做不到对多订阅链接的每个订阅进行分组,多订阅链接的情况下,GROUPID好像没法判断第几到第几属于某一个订阅。 而且这种方式要去创建策略组,对于命别名的需求来说不太完全匹配。

sengoku-f commented 4 years ago

@ at404bot GROUPID好像做不到对多订阅链接的每个订阅进行分组,多订阅链接的情况下,GROUPID好像没法判断第几到第几属于某人订阅。 而且这种方式要去创建策略组,对于命别名的需求来说不太完全匹配。

可以使用rename+GROUPID来重命名,只不过订阅连接的顺序必须按照GROUPID的顺序

leic4u commented 4 years ago

@sengoku-f 这种方法好像不得行,主要是因为订阅链接里有多少节点是变化的,而GROUPID进行命名需要固定的顺序才可以,相当于节点每变一次,就要重新去调整一次GROUPID和名称

sengoku-f commented 4 years ago

@sengoku-f 这种方法好像不得行,主要是因为订阅链接里有多少节点是变化的,而GROUPID进行命名需要固定的顺序才可以,相当于节点每变一次,就要重新去调整一次GROUPID和名称

并不是啊,GROUPID 是根据订阅链接的,和节点名字变动没关系,我也是用 GROUPID 添加机场名称的,你可能需要使用 正则表达式

leic4u commented 4 years ago

@sengoku-f 谢谢,我重看了rename_nodegroupid的文档,好像确实是支持重命名,但是我自己加了一个外部配置,试了很多种方法都没有生效,不知道为啥,你是怎么实现添加机场名称的呢,能否贴个样例出来呢

sengoku-f commented 4 years ago

@sengoku-f 谢谢,我重看了rename_nodegroupid的文档,好像确实是支持重命名,但是我自己加了一个外部配置,试了很多种方法都没有生效,不知道为啥,你是怎么实现添加机场名称的呢,能否贴个样例出来呢

具体看文档中的 外部配置 说明,或者查看已经写好的模板 外部配置示例文件

leic4u commented 4 years ago

@sengoku-f 谢谢,我找到为啥没生效的原因了,必须要经过 URLEncode 处理,用 UTF-8 编码

leic4u commented 4 years ago

不过这种方法有点麻烦,订阅顺序一变动,会导致后续所有的groupid都要发生变化,比如10个订阅,删除第二个订阅,从第三个订阅开始每一个的groupid都要去手动减1。。。能否将rename这种重命名方法放到每一个订阅的url后面呢? @tindy2013 @at404bot

tindy2013 commented 4 years ago

@leic4u 下一个版本可以对各个订阅单独定义 tag (组名) 并用 !!GROUP=组名 进行匹配

sengoku-f commented 4 years ago

@leic4u 下一个版本可以对各个订阅单独定义 tag (组名) 并用 !!GROUP=组名 进行匹配

这样需要把订阅放入 ini 配置里面?对于把配置文件上传到 Github 使用的会不安全

tindy2013 commented 4 years ago

@sengoku-f 不需要 tag 功能和链接组合使用 如 url=tag:airport,https%3A%2F%2Fexample.com

leic4u commented 4 years ago

@tindy2013 T大牛逼,感谢T大对项目的贡献

nb5p commented 4 years ago

@leic4u

rebron1900 commented 1 year ago

请问题主你最后的链接是怎么样的?我也有这个需求,但是研究了很久都写不来配置文件。

leic4u commented 1 year ago

请问题主你最后的链接是怎么样的?我也有这个需求,但是研究了很久都写不来配置文件。

首先需要在缝合的订阅中加入 tag=xxx ,然后需要在配置文件中有这个 tag 的定义。

给你一个订阅地址样例:

https://api.wcc.best/sub?target=clash&url=tag:aaaa,https://1234567.com/clash.yaml|tag:bbbb,https://7654321.com/clash.yaml&config=https://ghproxy.com/https://github.com/xxxx/xxxx/node.ini

其中, aaaa 是我给订阅 A 赋予的别名,https://1234567.com/clash.yaml 是 A 的订阅地址。 bbbb 是我给订阅 B 赋予的别名, https://7654321.com/clash.yaml 是 B 的订阅地址。 并且使用了 CareyWang ( sub-web 作者)搭建的订阅转换服务进行订阅缝合。

https://github.com/xxxx/xxxx/node.ini 是我自己创建的一个外部配置文件,托管在 GitHub 上。 由于众所周知的网络问题,所以使用了 ghproxy 进行加速,配置文件的内容如下:

[custom]
rename=!!GROUP=aaaa!!^@[订阅 A ]
rename=!!GROUP=bbbb!!^@[订阅 B ]

emoji=(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States|Sanjose|Ashburn|Phoenix),🇺🇸
emoji=(台|新北|彰化|TW|Taiwan),🇹🇼
emoji=(港|HK|HongKong|Hong Kong|Hongkong|hongkong),🇭🇰
emoji=(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan|Tokyo|Osaka),🇯🇵
emoji=(新加坡|坡|狮城|SG|Singapore),🇸🇬
emoji=(KR|Korea|KOR|首尔|韩|韓|Chuncheon|Seoul),🇰🇷
emoji=(俄|俄罗斯|RU|ru|Russia|russia),🇷🇺
emoji=(赞比亚|南非|ZA),🇿🇦
emoji=(巴西|Saopaulo|Vinhedo),🇧🇷
emoji=(沙特|Jeddah),🇸🇦
emoji=(澳大利亚|AU|Melbourne),🇦🇺
emoji=(英|英国|United Kingkom|UK|London|Cardiff),🇬🇧
emoji=(法|法国|France|FR|Marseille),🇫🇷
emoji=(印|印度|India|IN|Hyderabad),🇮🇳
emoji=(瑞典|SE|Stockholm),🇸🇪
emoji=(墨西哥|Mexico),🇲🇽
emoji=(加|加拿大|Canada|CA|Montreal),🇨🇦

nable_rule_generator=true
overwrite_original_rules=true
kenwestern commented 1 year ago

请问题主你最后的链接是怎么样的?我也有这个需求,但是研究了很久都写不来配置文件。

首先需要在缝合的订阅中加入 tag=xxx ,然后需要在配置文件中有这个 tag 的定义。

给你一个订阅地址样例:

https://api.wcc.best/sub?target=clash&url=tag:aaaa,https://1234567.com/clash.yaml|tag:bbbb,https://7654321.com/clash.yaml&config=https://ghproxy.com/https://github.com/xxxx/xxxx/node.ini

其中, aaaa 是我给订阅 A 赋予的别名,https://1234567.com/clash.yaml 是 A 的订阅地址。 bbbb 是我给订阅 B 赋予的别名, https://7654321.com/clash.yaml 是 B 的订阅地址。 并且使用了 CareyWang ( sub-web 作者)搭建的订阅转换服务进行订阅缝合。

https://github.com/xxxx/xxxx/node.ini 是我自己创建的一个外部配置文件,托管在 GitHub 上。 由于众所周知的网络问题,所以使用了 ghproxy 进行加速,配置文件的内容如下:

[custom]
rename=!!GROUP=aaaa!!^@[订阅 A ]
rename=!!GROUP=bbbb!!^@[订阅 B ]

emoji=(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States|Sanjose|Ashburn|Phoenix),🇺🇸
emoji=(台|新北|彰化|TW|Taiwan),🇹🇼
emoji=(港|HK|HongKong|Hong Kong|Hongkong|hongkong),🇭🇰
emoji=(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan|Tokyo|Osaka),🇯🇵
emoji=(新加坡|坡|狮城|SG|Singapore),🇸🇬
emoji=(KR|Korea|KOR|首尔|韩|韓|Chuncheon|Seoul),🇰🇷
emoji=(俄|俄罗斯|RU|ru|Russia|russia),🇷🇺
emoji=(赞比亚|南非|ZA),🇿🇦
emoji=(巴西|Saopaulo|Vinhedo),🇧🇷
emoji=(沙特|Jeddah),🇸🇦
emoji=(澳大利亚|AU|Melbourne),🇦🇺
emoji=(英|英国|United Kingkom|UK|London|Cardiff),🇬🇧
emoji=(法|法国|France|FR|Marseille),🇫🇷
emoji=(印|印度|India|IN|Hyderabad),🇮🇳
emoji=(瑞典|SE|Stockholm),🇸🇪
emoji=(墨西哥|Mexico),🇲🇽
emoji=(加|加拿大|Canada|CA|Montreal),🇨🇦

nable_rule_generator=true
overwrite_original_rules=true

大佬你好,请问在toml格式配置中,rename=!!GROUP=aaaa!!^@[订阅 A ]这句应该怎么写,这句直接复制到toml中,运行报错如下:

2023/11/20 Mon 10:37:23.481153 [8268 1][DEBG] [error] bad format: unknown value appeared --> pref.toml | 145 | rename=!!GROUP=aaa!!^@[aaa] | ^--- here 2023/11/20 Mon 10:37:23.481785 [8268 1][DEBG] Unable to load preference settings as TOML.

LM-Firefly commented 1 year ago

@kenwestern [[node_pref.rename_node]] match = "!!GROUP=aaaa!!^" replace = "[订阅 A ] "

Wrandz commented 7 months ago

@kenwestern [[node_pref.rename_node]] match = "!!GROUP=aaaa!!^" replace = "[订阅 A ] "

请教一下,默认配置文件中的replace = "$1x",起到什么作用。

比如我的节点名是,香港1A-x1.0,我将这里的配置随便改了一下(由于不太清楚replace的作用,所以随便试了一下)

[[node_pref.rename_node]]
match = '香港1A-x1.0'
replace = "$1x"

节点名变成了一个字母,x,不知道$1在其中起到什么作用。

sengoku-f commented 7 months ago

$1

$1是正则表达式的分组,你没有分组,所以$1=空

Wrandz commented 7 months ago

$1

$1是正则表达式的分组,你没有分组,所以$1=空

感谢感谢,明白了!