From e9210ac7c4031f32693b60c9c6187504d5302d17 Mon Sep 17 00:00:00 2001
From: "guorong.zheng" <360996299@qq.com>
Date: Wed, 13 Nov 2024 17:26:07 +0800
Subject: [PATCH 1/5] feat:domain_blacklist
---
config/config.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/config.ini b/config/config.ini
index 0e688d45ee5..956ec365e1e 100644
--- a/config/config.ini
+++ b/config/config.ini
@@ -20,7 +20,7 @@ ipv_type = 全部
ipv_type_prefer = 自动
ipv4_num = 15
ipv6_num = 15
-domain_blacklist = epg.pw,skype.serv00.net,iptv.yjxfz.com,live-hls-web-ajb.getaj.net,live.goodiptv.club,hc73k3dhwo5gfkt.wcetv.com,stream1.freetv.fun
+domain_blacklist = epg.pw,skype.serv00.net,iptv.yjxfz.com,live-hls-web-ajb.getaj.net,live.goodiptv.club,hc73k3dhwo5gfkt.wcetv.com,stream1.freetv.fun,zw9999.cnstream.top
open_m3u_result = True
url_keywords_blacklist =
open_subscribe = True
From 2e6ad4c2cbe6234ea449e975ef08ff9d09ee1afc Mon Sep 17 00:00:00 2001
From: "guorong.zheng" <360996299@qq.com>
Date: Thu, 14 Nov 2024 12:02:42 +0800
Subject: [PATCH 2/5] refactor:write_content_into_txt
---
utils/channel.py | 41 ++++++++++++-----------------------------
utils/tools.py | 17 +++++++++++++++++
2 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/utils/channel.py b/utils/channel.py
index b7d368c884f..81787412025 100644
--- a/utils/channel.py
+++ b/utils/channel.py
@@ -7,6 +7,7 @@
add_url_info,
remove_cache_info,
resource_path,
+ write_content_into_txt,
)
from utils.speed import (
sort_urls_by_speed_and_resolution,
@@ -145,6 +146,8 @@ def format_channel_name(name):
return name
cc = OpenCC("t2s")
name = cc.convert(name)
+ for region in constants.region_list:
+ name = name.replace(f"{region}|", "")
name = re.sub(constants.sub_pattern, "", name)
for old, new in constants.replace_dict.items():
name = name.replace(old, new)
@@ -408,32 +411,6 @@ def get_results_from_multicast_soup_requests(soup, hotel=False):
return results
-def update_channel_urls_txt(cate, name, urls, callback=None):
- """
- Update the category and channel urls to the final file
- """
- genre_line = cate + ",#genre#\n"
- filename = "output/result_new.txt"
-
- if not os.path.exists(filename):
- open(filename, "w").close()
-
- with open(filename, "r", encoding="utf-8") as f:
- content = f.read()
-
- with open(filename, "a", encoding="utf-8") as f:
- if genre_line not in content:
- f.write(genre_line)
- if urls:
- for url in urls:
- if url is not None:
- f.write(f"{name},{url}\n")
- if callback:
- callback()
- else:
- f.write(f"{name},url\n")
-
-
def get_channel_url(text):
"""
Get the url from text
@@ -727,16 +704,19 @@ def write_channel_to_file(data, ipv6=False, callback=None):
"""
Write channel to file
"""
+ path = "output/result_new.txt"
if config.open_update_time:
now = datetime.datetime.now()
if os.environ.get("GITHUB_ACTIONS"):
now += datetime.timedelta(hours=8)
update_time = now.strftime("%Y-%m-%d %H:%M:%S")
- update_channel_urls_txt("更新时间", f"{update_time}", ["url"])
+ write_content_into_txt(f"更新时间,#genre#", path, newline=False)
+ write_content_into_txt(f"{update_time},url", path)
no_result_name = []
open_empty_category = config.open_empty_category
for cate, channel_obj in data.items():
print(f"\n{cate}:", end=" ")
+ write_content_into_txt(f"{cate},#genre#", path)
channel_obj_keys = channel_obj.keys()
names_len = len(list(channel_obj_keys))
for i, name in enumerate(channel_obj_keys):
@@ -748,14 +728,17 @@ def write_channel_to_file(data, ipv6=False, callback=None):
if open_empty_category:
no_result_name.append(name)
continue
- update_channel_urls_txt(cate, name, channel_urls, callback=callback)
+ for url in channel_urls:
+ write_content_into_txt(f"{name},{url}", path, callback=callback)
print()
+ write_content_into_txt("", path)
if open_empty_category and no_result_name:
print("\n🈳 No result channel name:")
+ write_content_into_txt("🈳无结果频道,#genre#", path)
for i, name in enumerate(no_result_name):
end_char = ", " if i < len(no_result_name) - 1 else ""
print(name, end=end_char)
- update_channel_urls_txt("🈳无结果频道", name, [])
+ write_content_into_txt(f"{name},url", path)
print()
diff --git a/utils/tools.py b/utils/tools.py
index 3019749db62..f38f2052942 100644
--- a/utils/tools.py
+++ b/utils/tools.py
@@ -499,3 +499,20 @@ def resource_path(relative_path, persistent=False):
return os.path.join(base_path, relative_path)
except Exception:
return total_path
+
+
+def write_content_into_txt(content, path=None, newline=True, callback=None):
+ """
+ Write content into txt file
+ """
+ if not path:
+ return
+
+ with open(path, "a", encoding="utf-8") as f:
+ if newline:
+ f.write(f"\n{content}")
+ else:
+ f.write(content)
+
+ if callback:
+ callback()
From a123eb66a447dc3b491f08d48e24cc7becfa7984 Mon Sep 17 00:00:00 2001
From: "guorong.zheng" <360996299@qq.com>
Date: Thu, 14 Nov 2024 12:03:57 +0800
Subject: [PATCH 3/5] feat:local channels
---
README.md | 17 +-
README_en.md | 16 +-
config/config.ini | 12 +-
config/demo.txt | 1321 ++++++++++++++++++++-
updates/fofa/fofa_hotel_region_result.pkl | Bin 42796 -> 83850 bytes
utils/constants.py | 32 +-
6 files changed, 1386 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index 5fd7eaf927c..9c0483c7fff 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,11 @@
- 🏠广东频道: 广东珠江, 广东体育, 广东新闻, 广东民生, 广东卫视, 大湾区卫视, 广州综合, 广州影视, 广州竞赛, 江门综合, 江门侨乡生活, 佛山综合, 深圳卫视, 汕头综合, 汕头经济, 汕头文旅, 茂名综合, 茂名公共
+ ☘️广东频道: 广东珠江, 广东体育, 广东新闻, 广东民生, 广东卫视, 大湾区卫视, 广州综合, 广州影视, 广州竞赛, 江门综合, 江门侨乡生活, 佛山综合, 深圳卫视, 汕头综合, 汕头经济, 汕头文旅, 茂名综合, 茂名公共
+
+
+
+ ☘️各省份地方台
@@ -152,23 +156,29 @@ pipenv run ui
建议都试用一次,选择自己合适的版本
1. 拉取镜像:
+
- driver:
+
```bash
docker pull guovern/tv-driver:latest
```
- requests:
+
```bash
docker pull guovern/tv-requests:latest
```
2. 运行容器:
+
- driver:
+
```bash
docker run -d -p 8000:8000 guovern/tv-driver
```
- requests:
+
```bash
docker run -d -p 8000:8000 guovern/tv-requests
```
@@ -176,13 +186,16 @@ docker run -d -p 8000:8000 guovern/tv-requests
卷挂载参数(可选):
实现宿主机文件与容器文件同步,修改模板、配置、获取更新结果文件可直接在宿主机文件夹下操作
-以宿主机路径/etc/docker为例:
+以宿主机路径/etc/docker 为例:
+
- driver:
+
```bash
docker run -v /etc/docker/config:/tv-driver/config -v /etc/docker/output:/tv-driver/output -d -p 8000:8000 guovern/tv-driver
```
- requests:
+
```bash
docker run -v /etc/docker/config:/tv-requests/config -v /etc/docker/output:/tv-requests/output -d -p 8000:8000 guovern/tv-requests
```
diff --git a/README_en.md b/README_en.md
index 686ef65f25d..a0f0859e113 100644
--- a/README_en.md
+++ b/README_en.md
@@ -21,7 +21,11 @@
- 🏠Guangdong Channel: 广东珠江, 广东体育, 广东新闻, 广东民生, 广东卫视, 大湾区卫视, 广州综合, 广州影视, 广州竞赛, 江门综合, 江门侨乡生活, 佛山综合, 深圳卫视, 汕头综合, 汕头经济, 汕头文旅, 茂名综合, 茂名公共
+ ☘️Guangdong Channel: 广东珠江, 广东体育, 广东新闻, 广东民生, 广东卫视, 大湾区卫视, 广州综合, 广州影视, 广州竞赛, 江门综合, 江门侨乡生活, 佛山综合, 深圳卫视, 汕头综合, 汕头经济, 汕头文旅, 茂名综合, 茂名公共
+
+
+
+ ☘️Local channels in each province
@@ -152,23 +156,29 @@ pipenv run ui
It's recommended to try each one and choose the version that suits you
1. Pull the image:
+
- driver
+
```bash
docker pull guovern/tv-driver:latest
```
- requests
+
```bash
docker pull guovern/tv-requests:latest
```
2. Run the container:
+
- driver
+
```bash
docker run -d -p 8000:8000 guovern/tv-driver
```
- requests
+
```bash
docker run -d -p 8000:8000 guovern/tv-requests
```
@@ -179,14 +189,16 @@ This allows synchronization of files between the host machine and the container.
Taking the host path /etc/docker as an example:
- driver:
+
```bash
docker run -v /etc/docker/config:/tv-driver/config -v /etc/docker/output:/tv-driver/output -d -p 8000:8000 guovern/tv-driver
```
- requests:
+
```bash
docker run -v /etc/docker/config:/tv-requests/config -v /etc/docker/output:/tv-requests/output -d -p 8000:8000 guovern/tv-requests
-````
+```
3. Check the update results: Visit (domain:8000)
diff --git a/config/config.ini b/config/config.ini
index 956ec365e1e..01de777dd59 100644
--- a/config/config.ini
+++ b/config/config.ini
@@ -18,8 +18,8 @@ resolution_weight = 0.5
recent_days = 30
ipv_type = 全部
ipv_type_prefer = 自动
-ipv4_num = 15
-ipv6_num = 15
+ipv4_num = 5
+ipv6_num = 5
domain_blacklist = epg.pw,skype.serv00.net,iptv.yjxfz.com,live-hls-web-ajb.getaj.net,live.goodiptv.club,hc73k3dhwo5gfkt.wcetv.com,stream1.freetv.fun,zw9999.cnstream.top
open_m3u_result = True
url_keywords_blacklist =
@@ -40,9 +40,9 @@ hotel_page_num = 1
open_update_time = True
request_timeout = 10
origin_type_prefer = hotel,multicast,subscribe,online_search
-hotel_num = 10
-multicast_num = 10
-subscribe_num = 10
+hotel_num = 4
+multicast_num = 3
+subscribe_num = 3
online_search_num = 0
open_url_info = True
-open_empty_category = True
\ No newline at end of file
+open_empty_category = False
\ No newline at end of file
diff --git a/config/demo.txt b/config/demo.txt
index 1a9fea875af..32c400526e1 100644
--- a/config/demo.txt
+++ b/config/demo.txt
@@ -72,7 +72,7 @@ CETV5
新疆卫视
云南卫视
-🏠广东频道,#genre#
+☘️广东频道,#genre#
广东珠江
广东体育
广东新闻
@@ -92,6 +92,1325 @@ CETV5
茂名综合
茂名公共
+☘️浙江频道,#genre#
+浙江钱江
+浙江钱江都市
+浙江钱江台
+浙江生活
+浙江经济生活
+浙江教育
+浙江民生
+浙江新闻
+浙江少儿
+杭州综合
+杭州明珠
+杭州西湖明珠
+杭州生活
+杭州影视
+杭州青少
+杭州少体
+杭州导视
+宁波TV1
+宁波TV2
+宁波TV3
+宁波TV4
+宁波TV5
+宁波电视台1套
+宁波电视台2套
+宁波电视台3套
+宁波电视台4套
+宁波4套影视
+NBTV-1
+NBTV-2
+NBTV-3
+NBTV-4
+浙江教科
+浙江经济
+之江纪录
+浙江国际
+嘉兴新闻综合
+嘉兴公共
+嘉兴文化影视
+丽水公共
+丽水新闻
+湖州公共
+湖州新闻综合
+湖州文化娱乐
+衢州公共
+衢州新闻综合
+金华教育科技
+金华新闻综合
+金华公共
+舟山新闻综合
+舟山公共
+温州新闻综合
+浙江经视
+浙江留学
+浙江民生休闲
+浙江松阳
+浙江数码时代
+浙江教科影院
+浙江教科影视
+浙江公共新闻
+浙江休闲台
+浙江龙泉
+浙江青田
+浙江遂昌
+诸暨新闻综合
+龙游生活娱乐
+龙游新闻综合
+龙泉新闻综合
+青田电视台
+镇海先锋影院
+金华都市农村
+金华公共
+鄞州二套
+鄞州一套
+遂昌综合
+遂昌新闻综合
+象山综合
+象山电视台新闻综合
+象山新闻综合
+衢江新闻综合
+萧山生活
+萧山新闻综合
+苍南新闻综合
+舟山群岛旅游
+舟山公共生活
+缙云综合
+缙云新闻综合
+绍兴电视台公共
+绍兴新闻综合
+绍兴文化影院
+绍兴文化影视
+绍兴公共
+湖州公共民生
+温州都市生活
+温州经济科教
+淳安电视台
+海盐新闻
+海宁生活服务
+海宁新闻综合
+洞头综合
+永嘉新闻综合
+武义新闻综合
+桐庐综合
+桐乡新闻综合
+松阳综合
+松阳新闻综合
+普陀电视台
+普陀新闻综合
+新昌生活
+新昌新闻综合
+文成综合
+文成新闻综合
+数码时代
+德清新闻综合
+德清文化生活
+开化新闻综合
+开化国家公园
+庆元综合
+庆元新闻综合
+平湖民生休闲
+平湖新闻综合
+嵊泗综合
+嵊泗新闻综合
+嵊州新闻综合
+北仑电视台
+兰溪新闻综合
+余杭综合
+余杭未来E
+余姚综合
+余姚新闻综合
+余姚姚江文化
+云和新闻综合
+义乌新闻综合
+中国蓝新闻
+东阳影视生活
+上虞新闻综合
+上虞新商都
+上虞文化影院
+上虞文化影视
+舟山公共生活
+舟山新闻综合
+舟山群岛旅游
+
+☘️北京频道,#genre#
+北京卡酷少儿
+北京影院
+北京新闻
+北京生活
+北京科教
+北京财经
+北京青年
+BTV纪实
+清华大学电视台
+石景山有线
+通州电视台
+
+☘️上海频道,#genre#
+七彩戏剧
+上海外语
+上海教育
+上海新闻综合
+上海点掌财经
+上海第一财经
+上海纪实
+上海都市
+上海金山电视台
+上视外语
+上视新闻
+东方影视
+东方财经
+全纪实
+动漫秀场
+哈哈炫动
+嘉定电视台
+天水公共
+崇明电视台
+新闻综合
+欢笑剧场
+法治天地
+生活时尚
+第一财经
+纪实人文
+都市剧场
+金山电视台
+金色频道
+
+☘️重庆频道,#genre#
+璧山综合
+万源新闻综合
+铜梁综合
+重庆汽摩
+荣昌综合
+璧山综合
+潼南综合
+涪陵电视台
+江津新闻综合
+武隆综合
+大足综合
+垫江综合
+北碚综合
+中国交通重庆
+万州综合
+万州三峡移民
+重庆新闻
+重庆时尚购物
+
+☘️江苏频道,#genre#
+东台综合
+东海新闻
+仪征新闻综合
+仪征生活
+优漫卡通
+六合新闻综合
+南京信息
+南京十八
+南京娱乐
+南京娱乐
+南京少儿
+南京教科
+南京新闻综合
+南京生活
+南通三套公共
+南通二套社教
+南通崇川综合
+南通影院娱乐
+南通新闻综合
+南通电视台一套
+南通都市生活
+句容党建
+句容影院
+句容新闻综合
+句容生活
+大丰公共
+如东一套新闻综合
+如东新闻综合
+姜堰新闻综合
+宜兴新闻
+宜兴紫砂
+宿迁公共
+常州公共
+常州新闻综合
+常州生活
+常州都市
+常熟新闻
+常熟民生
+张家港新闻综合
+张家港民生
+徐州-1
+徐州-3
+徐州-4
+徐州公共頻道
+徐州公共
+徐州文艺影院
+徐州新聞綜合
+徐州經濟生活
+徐州贾汪旅游
+扬中党建民生
+扬中新闻
+扬州城市
+扬州新闻
+扬州生活
+扬州邗江
+新沂新闻
+新沂生活
+无锡娱乐
+无锡新闻综合
+无锡生活
+无锡经济
+无锡都市资讯
+武进新闻
+武进生活
+江宁新闻
+江宁电视台综合
+江苏体育
+江苏公共
+江苏城市
+江苏影视
+江苏教育
+沛县新闻综合
+沭阳综合
+泗洪新闻综合
+泗阳综合
+泗阳资讯
+泰州一套新闻综合
+泰州三套影视娱乐
+海安新闻综合
+涟水电视台综合
+涟水综合
+淮安公共
+淮安影院娱乐
+淮安新闻综合
+淮阴影院
+淮阴综合
+溧水影视娱乐
+溧水新闻综合
+滨海新闻综合
+盐都综合
+睢宁三农
+睢宁生活教育
+睢宁综合
+睢宁资讯
+苏州4k
+苏州文化生活
+苏州新闻综合
+苏州生活资讯
+苏州电影娱乐
+苏州社会经济
+贾汪新闻
+贾汪旅游
+赣榆新闻综合
+连云港公共
+连云港新闻综合
+金坛新闻
+镇江二套社会民生
+镇江新闻综合
+靖江新闻综合
+高邮一套新闻综合
+高邮综合
+
+☘️辽宁频道,#genre#
+朝阳教育
+朝阳新闻综合
+辽宁北方
+辽宁影视剧
+辽宁教育青少
+辽宁生活
+辽宁经济
+辽宁都市
+锦州一套新闻综合
+锦州二套教育
+
+☘️湖南频道,#genre#
+湖南都市
+湖南视剧
+湖南经视
+湖南电视剧
+湖南电影
+湖南爱晚
+湖南教育
+湖南娱乐
+湖南国际
+湖南公共
+金鹰纪实
+湖南金鹰纪实
+长沙新闻综合
+长沙新闻
+长沙政法
+长沙影视
+长沙女性
+醴陵综合
+衡阳新闻综合
+衡阳公共
+茶陵新闻综合
+益阳新闻综合
+益阳教育
+益阳公共
+湘潭新闻综合
+湘潭县综合
+湘潭公共
+湘潭公共都市
+洪江市综合
+泸溪电视台
+汨罗新闻综合
+江华综合
+汝城综合
+永顺综合
+桑植新闻综合
+新化新闻综合
+屈原综合
+宁乡综合
+娄底综合
+保靖时政
+云溪新闻综合
+
+☘️湖北频道,#genre#
+湖北新闻综合
+湖北综合
+湖北经视
+湖北生活
+湖北教育
+湖北影视
+湖北公共新闻
+湖北公共
+湖北经济
+湖北垄上
+武汉一台新闻综合
+武汉二台电视剧
+武汉三台科技生活
+武汉四台经济
+武汉五台文体
+武汉六台外语
+武汉1新闻综合
+武汉2电视剧
+武汉3科技生活
+武汉教育
+湖北武汉教育
+武汉经济
+武汉新闻综合
+武汉文体
+武汉外语
+江夏经济生活
+江夏新闻综合
+建始综合
+崇阳新闻综合
+十堰新闻
+十堰公共
+保康新闻综合
+仙桃生活文体
+仙桃新闻综合
+麻城综合
+郧阳新闻综合
+荆门新闻综合
+云梦综合
+云梦党建农业
+武汉生活
+武汉新闻
+武汉经济
+荆门新闻综合
+崇阳综合
+十堰新闻
+潜江综合
+湖北生活
+湖北教育
+湖北影视
+湖北垄上
+
+☘️广西频道,#genre#
+乐业综合
+凌云综合
+凭祥综合
+北海新闻综合
+北海经济科教
+南宁公共
+南宁影娱乐
+南宁新闻综合
+南宁都市生活
+博白综合
+天等综合
+宾阳综合
+岑溪综合
+崇左综合
+巴马综合
+昭平综合
+来宾综合
+桂平综合
+灌阳新闻综合
+灵川综合
+田东综合
+田阳综合
+罗城综合
+融水综合
+西林综合
+贺州综合
+资源电视台
+那坡综合
+都安综合
+钦州公共
+钦州综合
+靖西综合
+龙州综合
+广西新闻
+罗城综合
+北海新闻
+桂林新闻
+广西贺州
+广西国际
+广西乐思购
+南宁新闻综合
+南宁都市生活
+南宁影视娱乐
+南宁公共
+
+☘️天津频道,#genre#
+宁河新闻
+滨海新闻
+滨海综艺
+滨海影院
+津南一套
+武清综合
+天津都市
+天津新闻
+天津文艺
+天津卫视
+
+☘️四川频道,#genre#
+万源新闻综合
+东兴综合
+乐山公共
+乐山新闻综合
+乐至综合
+九寨沟新闻综合
+井研综合
+什邡新闻
+仁和综合
+仁寿综合
+凉山新闻综合
+凉山语
+利州综合
+前锋电视台
+剑阁综合
+北川电视一套
+南充公共
+南充新闻
+南充科教
+双流综合
+叙州新闻综合
+叙永综合
+名山综合
+四川科教
+大竹新闻综合
+大竹阳光政务
+夹江新闻综合
+威远新闻综合
+宁南综合
+安岳综合
+宜宾公共
+宜宾新闻综合
+宝兴综合
+小金综合
+岳池新闻综合
+峨边电视台
+平昌新闻综合
+平武综合
+广元公共
+广元综合
+广安公共
+康定综合
+康巴卫视
+开江新闻综合
+德阳公共
+德阳新闻综合
+成都高新电视
+攀枝花新闻综合
+新都综合
+旺苍新闻综合
+昭化综合
+朝天综合
+松潘新闻综合
+梓潼新闻综合
+武胜综合
+汉源综合
+江油新闻综合
+汶川新闻综合
+沐川综合
+沙湾综合
+泸县新闻综合
+渠县新闻综合
+珙县综合
+甘孜综合
+甘洛综合
+盐亭综合
+石棉综合
+筠连综合
+纳溪新闻
+绵阳科技
+绵阳综合
+茂县综合
+荥经综合
+营山电视台
+蓬安新闻综合
+蓬溪新闻综合
+西昌综合
+遂宁公共
+遂宁新闻综合
+邻水新闻综合
+金口河综合
+金堂电视台
+金川乡村
+金川新闻综合
+金阳综合
+长宁综合
+阿坝文艺
+阿坝综合
+隆昌新闻综合
+雅安公共
+雅安新闻综合
+雅安雨城
+青川综合
+青神综合
+马尔康综合
+马边电视台
+龙泉驿新闻综合
+
+☘️陕西频道,#genre#
+陕西一套新闻资讯
+陕西二套都市青春
+陕西三套生活
+陕西五套公共
+陕西七套体育休闲
+陕西农林卫视
+延安一套新闻综合
+延安二套公共
+陕西农林
+陕西新闻资讯
+陕西都市青春
+陕西生活
+陕西公共
+陕西购物
+陕西体育休闲
+陕西生活
+陕西影视
+陕西公共
+汉中综合
+洋县电视台
+
+☘️福建频道,#genre#
+三明公共
+三明新闻综合
+云霄综合
+厦门卫视
+宁化电视一套
+将乐综合
+建宁综合
+德化新闻综合
+新罗电视一套
+晋江电视台
+永安综合
+永泰综合
+泰宁新闻
+漳州新闻综合
+漳浦综合
+石狮综合
+福州少儿
+福州影院
+福州生活
+福州综合
+霞浦综合
+龙岩公共
+龙岩新闻综合
+福建文体
+福建新闻
+福建电视剧
+福建经济
+福建综合
+福建公共
+福建电视剧
+福建旅游
+福建经视
+福建体育
+福建少儿
+福建海峡卫视
+云霄综合
+建宁综合
+漳州新闻
+龙岩公共
+龙岩综合
+
+☘️海南频道,#genre#
+海南新闻
+海南自贸
+海南文旅
+海南少儿
+海南公共
+海南电视台经济
+海口一套综合
+海口二套生活娱乐
+海口三套城乡经济
+
+☘️河南频道,#genre#
+梨园
+临颍综合
+义马新闻综合
+光山综合
+兰考新闻
+卫辉综合
+叶县
+周口扶沟
+唐河一套
+固始综合
+宝丰综合
+巩义新闻综合
+扶沟综合
+新乡县电视台
+新县综合
+新蔡综合
+桐柏新闻综合
+泌阳新闻综合
+淅川电视
+渑池新闻综合
+温县综合
+潢川综合
+焦作综合
+登封综合
+禹州综合
+西华综合
+郏县综合
+郸城新闻综合
+鄢陵综合
+项城新闻
+鹤壁综合
+邓州新闻
+许昌农业科教
+许昌公共
+荥阳综合
+禹州综合
+禹州公共
+睛彩许昌
+睛彩焦作
+焦作教育
+焦作公共
+灵宝新闻综合
+濮阳公共
+滑县新闻
+济源电视一套
+洛阳综合
+洛阳科教
+洛阳文旅
+河南都市
+河南民生
+沁阳新闻综合
+永城综合
+永城卫建
+桐柏新闻综合
+方城一套
+新野综合
+新安新闻综合
+新乡县电视台
+开封新闻综合
+开封文化旅游
+嵩县综合新闻
+宜阳综合
+唐河一套
+周口新闻综合
+内黄综合
+内乡综合
+偃师新闻
+
+☘️河北频道,#genre#
+鹿泉一套
+邯郸科技教育
+邯郸公共
+邯郸新闻
+邯郸科教
+邢台综合
+邢台城生
+衡水公共
+石家庄都市
+石家庄生活
+石家庄新闻综合
+石家庄娱乐
+滦平新闻
+河北都市
+河北农民
+昌黎综合
+任丘文娱
+任丘综合
+兴隆综合
+大厂一套
+平泉影视
+平泉综合
+昌黎
+清河新闻综合
+清河经济综艺
+衡山
+邯郸公共
+邯郸新闻
+邯郸科教
+鹿泉一套
+
+☘️辽宁频道,#genre#
+朝阳教育
+朝阳新闻综合
+辽宁北方
+辽宁影视剧
+辽宁教育青少
+辽宁生活
+辽宁经济
+辽宁都市
+锦州一套新闻综合
+锦州二套教育
+
+☘️贵州频道,#genre#
+松桃新闻
+石阡新闻
+七星关电视台
+道真新闻综合
+凤冈综合
+黔南一套
+黔南二套
+安顺新闻
+清镇新闻综合
+思南综合
+松新闻
+罗甸综合
+七星关电视台
+湄潭综合
+仁怀新闻
+贵州2
+贵州3
+贵州4
+贵州5
+贵州6
+贵州移动电视
+遵义新闻综合
+遵义公共
+
+☘️甘肃频道,#genre#
+崆峒综合
+甘肃经济
+甘肃公共
+甘肃都市
+甘肃文化
+临夏州公共
+临夏州综合
+临夏市电视台
+临洮综合
+临潭综合
+华亭综合
+华池综合
+卓尼综合
+合水综合
+嘉峪关综合
+夏河综合
+天水公共
+天水新闻综合
+天祝综合
+宁县综合
+定西公共
+定西综合
+岷县综合
+崆峒综合
+崇信综合
+平凉公共
+平凉新闻综合
+庆城综合
+张掖公共
+张掖新闻综合
+徽县综合
+成县综合
+敦煌综合
+景泰综合
+正宁综合
+武威凉州
+武威新闻
+武山综合
+武都综合
+民乐新闻
+民勤综合
+永昌综合
+永靖综合
+泾川综合
+渭源新闻
+漳县新闻综合
+灵台综合
+玉门综
+玛曲综合
+环县综合
+瓜州综合
+甘南综合
+甘南藏语
+甘肃少儿
+白银公共
+白银文化教育
+白银综合
+皋兰综合
+碌曲综合
+礼县综合
+秦安综合
+积石山综合
+肃北综合
+肃州综合
+舟曲新闻
+西和综合
+西峰综合
+迭部综合
+通渭综合
+酒泉公共
+酒泉综合
+金塔综合
+金川综合
+金昌综合
+镇原综合
+阿克塞综合
+陇西综合
+靖远综合
+静宁综合
+高台综合
+
+☘️新疆频道,#genre#
+克拉玛依汉语综合
+克拉玛依维语综合
+克拉玛依影剧场
+克拉玛依生活娱乐
+克拉玛依新闻
+哈密一套
+哈密二套
+哈密三套
+伊犁汉语综合
+伊犁维吾尔
+伊犁哈萨克
+伊犁经济法制
+裕民汉语
+裕民哈语
+兵团四师可克达拉综合
+兵团五师双河新闻综合
+兵团七师胡杨河新闻综合
+兵团八师石河子新闻综合
+兵团八师石河子影视文体
+兵团八师石河子经济生活
+兵团八师石河子教育
+兵团十三师新星综合
+兵团十四师昆玉综合
+奎屯哈萨克语
+伊宁汉语综合
+伊宁维吾尔语
+昭苏哈语
+昭苏汉语
+霍尔果斯综合
+玛纳斯综合
+新疆卫视
+伊犁哈萨克
+伊犁汉语综合
+伊犁经济法制
+伊犁维吾尔
+兵团四师可克达拉综合
+兵团八师石河子教育
+兵团八师石河子新闻综合
+兵团八师石河子经济生活
+克拉玛依维语综合
+克拉玛依影视
+可克达拉综合
+奎屯哈萨克语
+奎屯汉语综合
+巴音郭楞州
+玛纳斯综合
+石河子影视文体
+石河子教育
+石河子新闻综合
+石河子经济生活
+裕民哈语
+裕民汉语
+
+☘️山东频道,#genre#
+山东少儿
+山东新闻
+山东国际
+山东教育
+山东居家购物
+山东农科
+山东齐鲁
+山东生活
+山东体育
+山东文旅
+山东综艺
+济南综合
+济南新闻综合
+济南都市
+济南生活
+济南影视
+济南娱乐
+济南少儿
+济南商务
+济南教育
+济南鲁中
+青岛城阳
+青州电视台文化旅游
+青州电视台新闻综合
+青州电视台生活
+青州综合
+济宁公共
+济宁图文
+济宁教育
+济宁新闻综合
+济宁综合
+威海一套新闻综合
+威海三套海洋
+威海二套公共
+威海二套公共
+威海三套海洋
+东营综合
+中华美食
+临沂公共
+临沂农科
+临沂新闻综合
+垦利新闻
+岱岳综合
+日照公共
+日照新闻综合
+日照科教
+枣庄公共
+枣庄教育
+枣庄新闻综合
+泰安新闻综合
+淄博生活
+淄博都市
+滨州公共
+滨州新闻综合
+潍坊三套公共
+潍坊二套经济生活
+潍坊公共
+潍坊四套科教
+潍坊新闻综合
+潍坊滨海新闻综合
+烟台公共
+烟台新闻综合
+烟台经济科技
+菏泽一套新闻综合
+菏泽二套经济生活
+菏泽三套影视
+菏泽影
+菏泽新闻综合
+菏泽经济生活
+
+☘️山西频道,#genre#
+万荣综合
+五台综合
+优购物电视购物
+原平综合
+古县综合
+吉县新闻综合
+大同1套新闻综合
+大同2套公共
+大同3套煤都生活
+大宁综合
+太谷新闻综合
+宁武综合
+定襄综合
+屯留综合
+山西影视
+山西影院
+山西文体
+山西文体生活
+山西法治
+山西社会与法治
+山西经济
+山西经济与科技
+山西经济与科教
+平遥新闻综合
+怀仁综合
+昔阳电视台
+柳林综合
+武乡新闻综合
+汾西综合
+潞城新闻综合
+灵石新闻综合
+祁县新闻综合
+离石综合
+襄垣电视
+襄汾综合
+运城一套新闻综合
+运城三套科教
+运城二套公共
+运城公共
+运城新闻综合
+运城科技教育
+长子综合
+长治公共
+长治教育
+长治新闻综合
+闻喜综合
+阳曲综合
+高平综合
+黄河电视台
+黎城综合
+
+☘️安徽频道,#genre#
+安徽国际
+安徽影视
+安徽经济生活
+安徽综艺体育
+安徽导视
+合肥公共
+合肥新闻
+固镇新闻
+歙县综合
+肥西新闻
+肥西综合
+黟县综合
+黄山新闻综合
+黄山公共生活
+霍邱新闻综合
+霍山综合
+阜南新闻综合
+铜陵新闻综合
+铜陵公共
+金寨综合
+芜湖生活
+芜湖新闻综合
+芜湖公共
+肥西综合
+肥东经济生活
+繁昌新闻综合
+繁昌文体娱乐
+祁门综合
+石台综合
+灵璧综合
+潜山新闻综合
+滁州科教
+滁州新闻综合
+滁州市广播电视台 科教
+滁州市广播电视台 新闻综合
+滁州市广播电视台 公共
+滁州公共
+湾沚区新闻综合
+淮南新闻综合
+淮南公共
+涡阳新闻综合
+池州新闻综合
+池州公共
+歙县综合
+桐城新闻
+枞阳综合
+当涂新闻综合
+广德生活
+广德新闻综合
+岳西综合
+屯溪融媒
+宿松新闻综合
+宿州科教
+宿州新闻综合
+宿州公共
+定远综合
+定远新闻综合
+安徽综艺体育
+安徽经济生活
+安徽影院
+安徽影视
+铜陵综合
+铜陵公共
+郎溪综合台
+淮北综合
+淮北公共
+安庆教育
+安庆公共
+太和新闻综合
+固镇新闻
+南陵新闻综合
+利辛综合
+利辛影
+凤台综合
+凤台文化生活
+六安新闻综合
+六安公共
+全椒综合
+全椒生活
+休宁新闻综合
+亳州新闻
+亳州农村
+临泉新闻
+东至新闻综合
+
+☘️宁夏频道,#genre#
+宁夏公共
+宁夏经济
+银川生活
+银川公共
+银川文体
+吴忠综合
+吴忠公共
+中宁综合
+宁夏公共
+宁夏经济
+宁夏少儿
+宁夏电视台影视
+石嘴山综合
+安多卫视
+门源综合
+化隆综合
+民和综合
+兴海综合
+大通电视台
+湟中电视台
+西宁新闻综合
+西宁生活服务
+青海经视
+青海都市
+青海综合
+
+☘️吉林频道,#genre#
+延边卫视
+吉林都市
+吉林生活
+吉林影院
+吉林乡村
+吉林公共
+吉林7频道
+东北戏曲频道
+延边-1
+延边-2
+延边朝鲜语综合
+延边汉语综合
+长白山电视台
+德惠综合
+九台综合
+长白新闻综合
+长白朝语
+靖宇综合
+敦化一套
+珲春新闻综合
+龙井综合
+梅河口综合
+桦甸综合
+磐石综合
+舒兰新闻综合
+东丰综合
+双辽综合
+辉南新闻综合
+柳河综合
+通化县综合
+汪清综合
+
+☘️内蒙古频道,#genre#
+内蒙新闻
+内蒙经济
+内蒙少儿
+内蒙文体
+内蒙农牧
+蒙语文化
+内蒙古综合
+内蒙古经济生活
+内蒙古少儿
+内蒙古文体娱乐
+内蒙古农牧
+内蒙古蒙语文化
+
+☘️云南频道,#genre#
+丘北电视台
+元阳综合
+安宁综合
+宾川一套
+屏边综合
+峨山电视
+巧家综合
+广南电视台
+开远综合
+彝良综合
+文山州公共
+文山州新闻综合
+施甸综合
+昆明公共
+昆明影综艺
+昆明新闻综合
+昆明科学教育
+昆明经济生活
+易门综合
+普洱公共
+普洱新闻综合
+梁河综合
+永善综合
+江川综合
+泸水综合
+瑞丽综合
+盈江综合
+石屏综合
+砚山电视台
+福贡综合
+红塔电视台
+红河县综合
+红河州新闻综合
+绥江综合
+美丽云南
+腾冲综合
+芒市综合
+蒙自综合
+西双版纳公共
+西双版纳综合
+贡山综合
+通海电视台
+金平综合
+陇川综合
+马关电视台
+麻栗坡电视台
+云南都市
+云南娱乐
+云南公共
+云南少儿
+云南澜湄国际
+西双版纳一套
+西双版纳二套
+
+☘️青海频道,#genre#
+安多卫视
+西宁新闻综合
+西宁生活服务
+玉树新闻
+海西州综合
+德令哈综合
+门源综合
+贵南综合
+化隆综合
+
+☘️黑龙江频道,#genre#
+黑龙江文体
+黑龙江新闻法治
+黑龙江公共农业
+黑龙江影视
+黑龙江都市
+黑龙江少儿
+黑龙江新闻
+黑龙江科教
+哈尔滨新闻综合
+哈尔滨影视
+哈尔滨资讯
+哈尔滨生活
+哈尔滨娱乐
+哈尔滨新闻综合
+大庆新闻综合
+大庆公共
+鹤岗新闻综合
+鹤岗公共
+七台河新闻综合
+七台河公共
+佳木斯新闻综合
+萝北综合
+甘南县综合
+哈尔滨新闻综合
+哈尔滨影视
+哈尔滨生活
+哈尔滨娱乐
+哈尔滨都市资讯
+鹤岗新闻综合
+佳木斯新闻综合
+齐齐哈尔新闻综合
+齐齐哈尔经济法制
+双鸭山综合
+大庆新闻综合
+七台河新闻综合
+七台河民生社教
+
🌊港·澳·台,#genre#
翡翠台
明珠台
diff --git a/updates/fofa/fofa_hotel_region_result.pkl b/updates/fofa/fofa_hotel_region_result.pkl
index b6d8fe42af5b6998704d967e28820afeff84f55f..41a975587dd2b6bac2d57c34842d37f826dec7f0 100644
GIT binary patch
literal 83850
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
CHf16J
delta 3101
zcmZ8jYfzNu748d*0pzMHC{ojp%T#fdMST88H8g(XPXs4LImt9E8pWXewm-C+UoacGY
zdA}y)SWnQnO2xk9*6;AY^1YhskmBO?8>ivmMI(L~VnJVhI6Tjj;S9<~&ASt@^?W2E
zgClSwC=Y8Nh1RV|f_sz^D$`UfA8_m`w864Wf@hQ#waaFq@qQ?L?#WoJkPs7_j?;Q8
zoWb_c5^>Eec}WVJ_MXVjIEfW3~HF9^;*i3$|GR8byS#OjE
zFJz0SQFESZyqEeSN>_zE;%7Dctk(?Valv1q~q#3q@F7Ny2)bdQOPEU6yFSu)j+
z&3068(!e>}g+L2E1_3&&`*xZIo#_>*?ABmXhK|?Rt_Vf*D-{Z7&zGBZBmuYP#KF8Y
z8LA9Dug7LkqdlAV84Qpj%T30$#0ta
zv(Wxou^=ZC$MZRL+p=?5L1BS{W^mqbeM9iR`(-lRxg+_!nXiHG=bO;Hi1wn~hKhwF
z{cz?Q<(NcLfWllxX47!UnR2s4j98dYAJcy2<%@o?`ks9y>U-t2;r^0LoM4U1uTW*F>F;?^B}|~#MLam&_^|#Au6K;XLSquP
zcs!KN;@mM=ZNkbp6akDLa>wD6hnY<+p6OS)9wXULQxRW$OKBpB493Wg=~L
zB9GPVb;GEhf{s!b=00^Gbq&*}4$W&lvPnlY=yg$u#!ROcLwn`5@Wd?Z>=;$1L~lnp
zFRHYaX=XZy-}ts2$MVDKR;b`8bMlzgKV?K#VcqB7q=6b0Zy9(_j0T@byT%C}fN
zH+EN8@cb@wGc{_qd0?airTE$iFYqCSR
zS+i#^P=R-oJ?7_xt_V8{_L6!qf$r0KY`Pl*q9WWn2D?&8|&7TAWXhp`aMnLwq2IwN;lS5`s{rQJ%Ok|JW
z-PM1#3f9J1aQDtf?QsWQT@hq^<+bAM(M*KXL1a5BNaE_{2E#}aefZZ8f79}Rh`!h1
z=WsICoY33xzRKS{3IN_*c;CrW)$ZgbN?KyYdXA;WJFvVH1{%j_zlQL(ZrEAzs63=^}
z`dTA@*G%U%bC8d^oPPSGP%33p4@#h;Lc+)AnWI=??PfhtVBf_UeoObIk?eaeimbXW
z8R6^l!g*Po{oR!qO!L{0_Nkv{DqJhn(qZi8pKO6(43$1x%#RiK*s-`dOw5tZ%sUET
zx|)O976+zYy@HQ=lxVrA#h2H7+&Voss1f?d;!~fXjp;!O9^c5Ov?;*q>vop%$?Km7
z6R;O$H^qzkTXqJ?z=iYuZQJm{#hLK^HJffCDmh~cg@Y|RfqCZaT@BMI6_o{7I#chq
z+nH#(9LC+c+%uoDKOUEEGyj=PDJ0Z$@~%MS>)T?yu`$XrFy3Vu9KbvGl)U73`iCvg
za$i&Sb(XD$#ks{UX(Ck#^`_5Q}5NH?+H^6Q(OhN+5V?uB`JT(
z)G49jIUD-%c=7_=PiqFLXEaE-^ODUH_BpZ?EcueJII>S*kan_XFptQGC89;vDw7z7
z?WG~O_Ma8>P8~|m39$*N)Ur<^IaKm-C(Zx$5lpVtp|bLuC$`ZWwTy67yOX9zbM5VU
ze5U=;*(3dJO>(n>nCb~}k|NnfNFy^r`B)G!cMb-VoxyTSB$4EgUn6Ex)L9lvVn;D5
z$hAshMpBd{myIDpZT^Kt_QcY$MF+I(9YeqPUSBW&IhruVi%ln8PL3o7Id~i~%k86y
zqO&-TI21hQ^NBpBM(#;qAxtJ&KZ#WHS1%F?>uV~WI;mB(IOKvP!elVL^K=r~7%V$d
z2-l#TkV=Eo^`TI%NFghkTZHVA*)X>@&SWGjg5F98T_S4M^X=lbl4?cqs`XykqaxD2
zAxc8JvC>LUX~-7@4kPnNF-#eTf0Rg(vZOk?ziQ_|-GTm^!vPaQ>~9V7zjY!fxza%E
MdZZ^l612hiKbE~4JOBUy
diff --git a/utils/constants.py b/utils/constants.py
index 24190d05fd7..97a667bf866 100644
--- a/utils/constants.py
+++ b/utils/constants.py
@@ -16,7 +16,7 @@
m3u_pattern = r"^#EXTINF:-1.*?(?:,|,)(.*?)\n" + r"(" + url_pattern + r")"
-sub_pattern = r"-|_|\((.*?)\)|\((.*?)\)|\[(.*?)\]|\「(.*?)\」| |||频道|普清|标清|高清|HD|hd|超清|超高|超高清|中央|央视|台|电信|联通|移动"
+sub_pattern = r"-|_|\((.*?)\)|\((.*?)\)|\[(.*?)\]|\「(.*?)\」| |||频道|普清|标清|高清|HD|hd|超清|超高|超高清|中央|央视|电视台|台|电信|联通|移动"
replace_dict = {
"plus": "+",
@@ -52,6 +52,36 @@
"CCTV17农业": "CCTV17",
}
+region_list = [
+ "广东",
+ "北京",
+ "湖南",
+ "湖北",
+ "浙江",
+ "上海",
+ "天津",
+ "江苏",
+ "山东",
+ "河南",
+ "河北",
+ "山西",
+ "陕西",
+ "安徽",
+ "重庆",
+ "福建",
+ "江西",
+ "辽宁",
+ "黑龙江",
+ "吉林",
+ "四川",
+ "云南",
+ "香港",
+ "内蒙古",
+ "甘肃",
+ "海南",
+ "云南",
+]
+
origin_map = {
"hotel": "酒店源",
"multicast": "组播源",
From b88b3ef0a30b3c85d0f9c2c8ec879b0b768f4877 Mon Sep 17 00:00:00 2001
From: "guorong.zheng" <360996299@qq.com>
Date: Thu, 14 Nov 2024 14:01:16 +0800
Subject: [PATCH 4/5] refactor:append speed
---
utils/channel.py | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/utils/channel.py b/utils/channel.py
index 81787412025..ae0ae0e60fe 100644
--- a/utils/channel.py
+++ b/utils/channel.py
@@ -170,11 +170,7 @@ def get_channel_results_by_name(name, data):
Get channel results from data by name
"""
format_name = format_channel_name(name)
- cc = OpenCC("s2t")
- name_s2t = cc.convert(format_name)
- result1 = data.get(format_name, [])
- result2 = data.get(name_s2t, [])
- results = list(dict.fromkeys(result1 + result2))
+ results = data.get(format_name, [])
return results
From 227220bcb356796513352c2f1677f028a3ce26ac Mon Sep 17 00:00:00 2001
From: "guorong.zheng" <360996299@qq.com>
Date: Thu, 14 Nov 2024 14:07:55 +0800
Subject: [PATCH 5/5] chore:default config
---
config/config.ini | 4 ++--
docs/config.md | 30 +++++++++++++++---------------
docs/config_en.md | 34 +++++++++++++++++-----------------
3 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/config/config.ini b/config/config.ini
index 01de777dd59..e7529ba5955 100644
--- a/config/config.ini
+++ b/config/config.ini
@@ -5,8 +5,8 @@ open_use_old_result = True
source_file = config/demo.txt
final_file = output/result.txt
open_online_search = False
-online_search_page_num = 3
-urls_limit = 30
+online_search_page_num = 1
+urls_limit = 10
open_keep_all = False
open_sort = True
sort_timeout = 10
diff --git a/docs/config.md b/docs/config.md
index 5845d5631c6..a58a429cfd2 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -8,11 +8,11 @@
| source_file | config/demo.txt | 模板文件路径 |
| final_file | output/result.txt | 生成结果文件路径 |
| open_online_search | False | 开启关键字搜索源功能 |
-| online_search_page_num | 3 | 关键字搜索频道获取分页数量 |
-| urls_limit | 15 | 单个频道接口数量 |
+| online_search_page_num | 1 | 关键字搜索频道获取分页数量 |
+| urls_limit | 10 | 单个频道接口数量 |
| open_keep_all | False | 保留所有检索结果,会保留非模板频道名称的结果,推荐手动维护时开启 |
| open_sort | True | 开启排序功能(响应速度、日期、分辨率) |
-| sort_timeout | 5 | 单个接口测速超时时长,单位秒(s);数值越大测速所属时间越长,能提高获取接口数量,但质量会有所下降;数值越小测速所需时间越短,能获取低延时的接口,质量较好;调整此值能优化更新时间 |
+| sort_timeout | 10 | 单个接口测速超时时长,单位秒(s);数值越大测速所属时间越长,能提高获取接口数量,但质量会有所下降;数值越小测速所需时间越短,能获取低延时的接口,质量较好;调整此值能优化更新时间 |
| open_ffmpeg | True | 开启使用 FFmpeg 进行测速,获取更准确的速度与分辨率信息,需要提前手动安装 |
| open_m3u_result | True | 开启转换生成 m3u 文件类型结果链接,支持显示频道图标 |
| open_filter_resolution | True | 开启分辨率过滤,低于最小分辨率(min_resolution)的接口将会被过滤 |
@@ -20,10 +20,10 @@
| response_time_weight | 0.5 | 响应时间权重值(所有权重值总和应为 1) |
| resolution_weight | 0.5 | 分辨率权重值 (所有权重值总和应为 1) |
| recent_days | 30 | 获取最近时间范围内更新的接口(单位天),适当减小可避免出现匹配问题 |
-| ipv_type | ipv4 | 生成结果中接口的协议类型,可选值:ipv4、ipv6、全部 |
-| ipv_type_prefer | IPv4 | 接口协议类型偏好,优先将该类型的接口排在结果前面,可选值:IPv4、IPv6、自动 |
-| ipv4_num | 15 | 结果中偏好的 IPv4 接口数量 |
-| ipv6_num | 15 | 结果中偏好的 IPv6 接口数量 |
+| ipv_type | 全部 | 生成结果中接口的协议类型,可选值:ipv4、ipv6、全部、all |
+| ipv_type_prefer | 自动 | 接口协议类型偏好,优先将该类型的接口排在结果前面,可选值:IPv4、IPv6、自动、auto |
+| ipv4_num | 5 | 结果中偏好的 IPv4 接口数量 |
+| ipv6_num | 5 | 结果中偏好的 IPv6 接口数量 |
| domain_blacklist | epg.pw | 接口域名黑名单,用于过滤低质量含广告类域名的接口 |
| url_keywords_blacklist | | 接口关键字黑名单,用于过滤含特定字符的接口 |
| open_subscribe | False | 开启订阅源功能 |
@@ -32,17 +32,17 @@
| open_multicast_foodie | True | 开启 Foodie 组播源工作模式 |
| open_multicast_fofa | True | 开启 FOFA 组播源工作模式 |
| multicast_region_list | 全部 | 组播源地区列表,[更多地区](../updates/multicast/multicast_map.json),"全部"表示所有地区 |
-| multicast_page_num | 3 | 组播地区获取分页数量 |
+| multicast_page_num | 1 | 组播地区获取分页数量 |
| open_hotel | True | 开启酒店源功能,关闭后所有酒店源工作模式都将关闭 |
-| open_hotel_foodie | False | 开启 Foodie 酒店源工作模式 |
+| open_hotel_foodie | True | 开启 Foodie 酒店源工作模式 |
| open_hotel_fofa | True | 开启 FOFA、ZoomEye 酒店源工作模式 |
| hotel_region_list | 全部 | 酒店源地区列表,[更多地区](../updates/fofa/fofa_map.py),"全部"表示所有地区 |
-| hotel_page_num | 3 | 酒店地区获取分页数量 |
+| hotel_page_num | 1 | 酒店地区获取分页数量 |
| request_timeout | 10 | 查询请求超时时长,单位秒(s),用于控制查询接口文本链接的超时时长以及重试时长,调整此值能优化更新时间 |
| origin_type_prefer | hotel,multicast,subscribe,online_search | 结果偏好的接口来源,结果优先按该顺序进行排序,hotel:酒店源,multicast:组播源,subscribe:订阅源,online_search:关键字搜索 |
-| hotel_num | 10 | 结果中偏好的酒店源接口数量 |
-| multicast_num | 10 | 结果中偏好的组播源接口数量 |
-| subscribe_num | 10 | 结果中偏好的订阅源接口数量 |
-| online_search_num | 10 | 结果中偏好的关键字搜索接口数量 |
+| hotel_num | 4 | 结果中偏好的酒店源接口数量 |
+| multicast_num | 3 | 结果中偏好的组播源接口数量 |
+| subscribe_num | 3 | 结果中偏好的订阅源接口数量 |
+| online_search_num | 0 | 结果中偏好的关键字搜索接口数量 |
| open_url_info | True | 开启显示接口说明信息,用于控制是否显示分辨率、接口协议类型等信息,为$符号后的内容,播放软件使用该信息对接口进行描述 |
-| open_empty_category | True | 开启无结果频道分类,自动归类至底部 |
+| open_empty_category | False | 开启无结果频道分类,自动归类至底部 |
diff --git a/docs/config_en.md b/docs/config_en.md
index 210ef54900d..5da6e322612 100644
--- a/docs/config_en.md
+++ b/docs/config_en.md
@@ -8,11 +8,11 @@
| source_file | config/demo.txt | Template file path |
| final_file | output/result.txt | Generated result file path |
| open_online_search | False | Enable keyword search source feature |
-| online_search_page_num | 3 | Page retrieval quantity for keyword search channels |
-| urls_limit | 15 | Number of interfaces per channel |
+| online_search_page_num | 1 | Page retrieval quantity for keyword search channels |
+| urls_limit | 10 | Number of interfaces per channel |
| open_keep_all | False | Retain all search results, retain results with non-template channel names, recommended to be turned on when manually maintaining |
| open_sort | True | Enable the sorting function (response speed, date, resolution) |
-| sort_timeout | 5 | The timeout duration for speed testing of a single interface, in seconds (s). A larger value means a longer testing period, which can increase the number of interfaces obtained but may decrease their quality. A smaller value means a shorter testing time, which can obtain low-latency interfaces with better quality. Adjusting this value can optimize the update time. |
+| sort_timeout | 10 | The timeout duration for speed testing of a single interface, in seconds (s). A larger value means a longer testing period, which can increase the number of interfaces obtained but may decrease their quality. A smaller value means a shorter testing time, which can obtain low-latency interfaces with better quality. Adjusting this value can optimize the update time. |
| open_ffmpeg | True | Enable speed testing using FFmpeg to obtain more accurate speed and resolution information. Manual installation is required in advance. |
| open_m3u_result | True | Enable the conversion to generate m3u file type result links, supporting the display of channel icons |
| open_filter_resolution | True | Enable resolution filtering, interfaces with resolution lower than the minimum resolution (min_resolution) will be filtered |
@@ -20,29 +20,29 @@
| response_time_weight | 0.5 | Response time weight value (the sum of all weight values should be 1) |
| resolution_weight | 0.5 | Resolution weight value (the sum of all weight values should be 1) |
| recent_days | 30 | Retrieve interfaces updated within a recent time range (in days), reducing appropriately can avoid matching issues |
-| ipv_type | ipv4 | The protocol type of interface in the generated result, optional values: ipv4, ipv6, all |
-| ipv_type_prefer | IPv4 | Interface protocol type preference, prioritize interfaces of this type in the results, optional values: IPv4, IPv6, auto |
-| ipv4_num | 15 | The preferred number of IPv4 interfaces in the result |
-| ipv6_num | 15 | The preferred number of IPv6 interfaces in the result |
-| domain_blacklist | epg.pw | Interface domain blacklist, used to filter out interfaces with low-quality, ad-inclusive domains |
+| ipv_type | all | The protocol type of interface in the generated result, optional values: ipv4, ipv6, all |
+| ipv_type_prefer | auto | Interface protocol type preference, prioritize interfaces of this type in the results, optional values: IPv4, IPv6, auto |
+| ipv4_num | 5 | The preferred number of IPv4 interfaces in the result |
+| ipv6_num | 5 | The preferred number of IPv6 interfaces in the result |
+| domain_blacklist | | Interface domain blacklist, used to filter out interfaces with low-quality, ad-inclusive domains |
| url_keywords_blacklist | | Interface keyword blacklist, used to filter out interfaces containing specific characters |
-| open_subscribe | False | Enable subscription source feature |
+| open_subscribe | True | Enable subscription source feature |
| subscribe_urls | | Subscription source, please enter the subscription link (supports txt and m3u links), multiple links should be separated by commas |
| open_multicast | True | Enable the multicast source function, after disabling it all multicast sources will stop working |
| open_multicast_foodie | True | Enable Foodie multicast source work mode |
| open_multicast_fofa | True | Enable FOFA multicast source work mode |
| multicast_region_list | all | Multicast source region list, [more regions](../updates/multicast/multicast_map.json, all means all regions) |
-| multicast_page_num | 3 | Number of pages to retrieve for multicast regions |
+| multicast_page_num | 1 | Number of pages to retrieve for multicast regions |
| open_hotel | True | Enable the hotel source function, after closing it all hotel source working modes will be disabled |
-| open_hotel_foodie | False | Enable Foodie hotel source work mode |
+| open_hotel_foodie | True | Enable Foodie hotel source work mode |
| open_hotel_fofa | True | Enable FOFA、ZoomEye hotel source work mode |
| hotel_region_list | all | List of hotel source regions, [more regions](../updates/fofa/fofa_map.py), 'all' indicates all regions |
-| hotel_page_num | 3 | Number of pages to retrieve for hotel regions |
+| hotel_page_num | 1 | Number of pages to retrieve for hotel regions |
| request_timeout | 10 | Query request timeout duration, in seconds (s), used to control the timeout and retry duration for querying interface text links. Adjusting this value can optimize update time. |
| origin_type_prefer | hotel, multicast, subscribe, online_search | Result preference for the source of the interface, results are prioritized in this order: hotel: hotel source, multicast: multicast source, subscribe: subscription source, online_search: keyword search |
-| hotel_num | 10 | The number of preferred hotel source interfaces in the results |
-| multicast_num | 10 | The number of preferred multicast source interfaces in the results |
-| subscribe_num | 10 | The number of preferred subscribe source interfaces in the results |
-| online_search_num | 10 | The number of preferred keyword search interfaces in the results |
+| hotel_num | 4 | The number of preferred hotel source interfaces in the results |
+| multicast_num | 3 | The number of preferred multicast source interfaces in the results |
+| subscribe_num | 3 | The number of preferred subscribe source interfaces in the results |
+| online_search_num | 0 | The number of preferred keyword search interfaces in the results |
| open_url_info | True | Enable display of API description information, used to control whether to show resolution, API protocol type, etc., the content after the $ symbol, playback software uses this information to describe the API |
-| open_empty_category | True | Enable the No Results Channel Category, which will automatically categorize channels without results to the bottom |
+| open_empty_category | False | Enable the No Results Channel Category, which will automatically categorize channels without results to the bottom |