feat:ipv_type_prefer unset
This commit is contained in:
parent
e4882adcec
commit
0462758598
@ -60,15 +60,15 @@ hotel_page_num = 1
|
||||
# 酒店源地区列表,"全部"表示所有地区 | Hotel source region list, "all" means all regions
|
||||
hotel_region_list = 全部
|
||||
# 结果中偏好的 IPv4 接口数量 | Preferred number of IPv4 interfaces in the result
|
||||
ipv4_num = 5
|
||||
ipv4_num =
|
||||
# 结果中偏好的 IPv6 接口数量 | Preferred number of IPv6 interfaces in the result
|
||||
ipv6_num = 5
|
||||
ipv6_num =
|
||||
# 强制认为当前网络支持IPv6,跳过检测 | Force to consider that the current network supports IPv6, skip detection
|
||||
ipv6_support = False
|
||||
# 生成结果中接口的协议类型,可选值:ipv4、ipv6、全部、all | Protocol type of the interface in the generated result, optional values: ipv4, ipv6, 全部, all
|
||||
ipv_type = 全部
|
||||
# 接口协议类型偏好,优先将该类型的接口排在结果前面,可选值:ipv4、ipv6、自动、auto | Interface protocol type preference, prefer to put this type of interface in front of the result, optional values: ipv4, ipv6, 自动, auto
|
||||
ipv_type_prefer = 自动
|
||||
ipv_type_prefer =
|
||||
# 本地源文件路径,默认值: config/local.txt | Local source file path, Default value: config/local.txt
|
||||
local_file = config/local.txt
|
||||
# 结果中偏好的本地源接口数量 | Preferred number of local source interfaces in the result
|
||||
|
@ -32,12 +32,12 @@ class PreferUI:
|
||||
self.prefer_ipv_type_combo = ttk.Combobox(frame_prefer_ipv_type)
|
||||
self.prefer_ipv_type_combo.pack(side=tk.LEFT, padx=4, pady=8)
|
||||
self.prefer_ipv_type_combo["values"] = ("IPv4", "IPv6", "自动")
|
||||
ipv_type_prefer = config.ipv_type_prefer
|
||||
if ipv_type_prefer[0] == "ipv4":
|
||||
ipv_type_prefer = config.ipv_type_prefer[0]
|
||||
if ipv_type_prefer == "ipv4":
|
||||
self.prefer_ipv_type_combo.current(0)
|
||||
elif ipv_type_prefer[0] == "ipv6":
|
||||
elif ipv_type_prefer == "ipv6":
|
||||
self.prefer_ipv_type_combo.current(1)
|
||||
else:
|
||||
elif ipv_type_prefer in ["自动", "auto"]:
|
||||
self.prefer_ipv_type_combo.current(2)
|
||||
self.prefer_ipv_type_combo.bind(
|
||||
"<<ComboboxSelected>>", self.update_ipv_type_prefer
|
||||
@ -190,6 +190,7 @@ class ConfigOption:
|
||||
self.combo_box.get()
|
||||
]
|
||||
origin_type_prefer_list[index] = select_value
|
||||
self.entry.delete(0, tk.END)
|
||||
self.entry.insert(
|
||||
0,
|
||||
config.source_limits[self.origin_type_prefer_obj[self.combo_box.get()]],
|
||||
|
@ -661,7 +661,7 @@ def write_channel_to_file(data, ipv6=False, callback=None):
|
||||
no_result_name = []
|
||||
open_empty_category = config.open_empty_category
|
||||
ipv_type_prefer = list(config.ipv_type_prefer)
|
||||
if any(pref in ipv_type_prefer for pref in ["自动", "auto"]) or not ipv_type_prefer:
|
||||
if any(pref in ipv_type_prefer for pref in ["自动", "auto"]):
|
||||
ipv_type_prefer = ["ipv6", "ipv4"] if ipv6 else ["ipv4", "ipv6"]
|
||||
origin_type_prefer = config.origin_type_prefer
|
||||
first_cate = True
|
||||
|
@ -86,17 +86,21 @@ class ConfigManager:
|
||||
return [
|
||||
type.strip().lower()
|
||||
for type in self.config.get(
|
||||
"Settings", "ipv_type_prefer", fallback="auto"
|
||||
"Settings", "ipv_type_prefer", fallback=""
|
||||
).split(",")
|
||||
]
|
||||
|
||||
@property
|
||||
def ipv4_num(self):
|
||||
return self.config.getint("Settings", "ipv4_num", fallback=15)
|
||||
return self.config.getint("Settings", "ipv4_num", fallback=5) if self.config.get(
|
||||
"Settings", "ipv_type_prefer", fallback=""
|
||||
) else ""
|
||||
|
||||
@property
|
||||
def ipv6_num(self):
|
||||
return self.config.getint("Settings", "ipv6_num", fallback=15)
|
||||
return self.config.getint("Settings", "ipv6_num", fallback=5) if self.config.get(
|
||||
"Settings", "ipv_type_prefer", fallback=""
|
||||
) else ""
|
||||
|
||||
@property
|
||||
def ipv6_support(self):
|
||||
@ -105,6 +109,7 @@ class ConfigManager:
|
||||
@property
|
||||
def ipv_limit(self):
|
||||
return {
|
||||
"all": self.urls_limit,
|
||||
"ipv4": self.ipv4_num,
|
||||
"ipv6": self.ipv6_num,
|
||||
}
|
||||
@ -140,6 +145,7 @@ class ConfigManager:
|
||||
@property
|
||||
def source_limits(self):
|
||||
return {
|
||||
"all": self.urls_limit,
|
||||
"local": self.local_num,
|
||||
"hotel": self.hotel_num,
|
||||
"multicast": self.multicast_num,
|
||||
|
@ -151,11 +151,14 @@ def get_total_urls(info_list, ipv_type_prefer, origin_type_prefer):
|
||||
"""
|
||||
Get the total urls from info list
|
||||
"""
|
||||
ipv_prefer_bool = bool(ipv_type_prefer)
|
||||
origin_prefer_bool = bool(origin_type_prefer)
|
||||
if not ipv_prefer_bool:
|
||||
ipv_type_prefer = ["all"]
|
||||
if not origin_prefer_bool:
|
||||
origin_type_prefer = ["all"]
|
||||
categorized_urls = {
|
||||
origin: {"ipv4": [], "ipv6": []} for origin in origin_type_prefer
|
||||
origin: {ipv_type: []} for origin in origin_type_prefer for ipv_type in ipv_type_prefer
|
||||
}
|
||||
total_urls = []
|
||||
for url, _, resolution, origin in info_list:
|
||||
@ -190,15 +193,9 @@ def get_total_urls(info_list, ipv_type_prefer, origin_type_prefer):
|
||||
if not origin_prefer_bool:
|
||||
origin = "all"
|
||||
|
||||
if url_is_ipv6:
|
||||
categorized_urls[origin]["ipv6"].append(url)
|
||||
else:
|
||||
categorized_urls[origin]["ipv4"].append(url)
|
||||
categorized_urls[origin]["all" if not ipv_prefer_bool else "ipv6" if url_is_ipv6 else "ipv4"].append(url)
|
||||
|
||||
ipv_num = {
|
||||
"ipv4": 0,
|
||||
"ipv6": 0,
|
||||
}
|
||||
ipv_num = {ipv_type: 0 for ipv_type in ipv_type_prefer}
|
||||
urls_limit = config.urls_limit
|
||||
for origin in origin_type_prefer:
|
||||
if len(total_urls) >= urls_limit:
|
||||
@ -221,7 +218,7 @@ def get_total_urls(info_list, ipv_type_prefer, origin_type_prefer):
|
||||
continue
|
||||
|
||||
if config.open_supply:
|
||||
ipv_type_total = list(dict.fromkeys(ipv_type_prefer + ["ipv4", "ipv6"]))
|
||||
ipv_type_total = list(dict.fromkeys(ipv_type_prefer + (["ipv4", "ipv6"] if ipv_prefer_bool else [])))
|
||||
if len(total_urls) < urls_limit:
|
||||
for origin in origin_type_prefer:
|
||||
if len(total_urls) >= urls_limit:
|
||||
|
Loading…
x
Reference in New Issue
Block a user