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 z&#xS+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 |