Delete py/直播源IP分类.py
This commit is contained in:
@@ -1,46 +0,0 @@
|
|||||||
import re
|
|
||||||
from collections import defaultdict
|
|
||||||
|
|
||||||
# 正则表达式匹配IP地址和genre标签
|
|
||||||
ip_pattern = re.compile(r'http://(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):\d+/')
|
|
||||||
genre_pattern = re.compile(r'^# (.+),#genre#$')
|
|
||||||
|
|
||||||
# 用于存储按IP分类的直播源,以及genre标签的原始顺序索引
|
|
||||||
sources_by_ip = defaultdict(list)
|
|
||||||
genre_order = []
|
|
||||||
|
|
||||||
# 读取文件并分类
|
|
||||||
def classify_sources(file_path):
|
|
||||||
with open(file_path, 'r', encoding='utf-8') as file:
|
|
||||||
for line_number, line in enumerate(file, start=1):
|
|
||||||
line = line.strip()
|
|
||||||
if line.startswith('#') and genre_pattern.match(line):
|
|
||||||
# 处理genre行
|
|
||||||
genre_name = genre_pattern.match(line).group(1).strip()
|
|
||||||
genre_order.append((line_number, genre_name))
|
|
||||||
else:
|
|
||||||
match = ip_pattern.search(line)
|
|
||||||
if match:
|
|
||||||
ip = match.group(1)
|
|
||||||
sources_by_ip[ip].append((line_number, line))
|
|
||||||
|
|
||||||
# 写入结果到新文件,保持genre标签的原始顺序
|
|
||||||
def write_to_file(output_file_path, sources_by_ip, genre_order):
|
|
||||||
with open(output_file_path, 'w', encoding='utf-8') as file:
|
|
||||||
for ip, sources in sources_by_ip.items():
|
|
||||||
# 按原始顺序写入genre标签
|
|
||||||
for _, genre_name in genre_order:
|
|
||||||
file.write(f"# {genre_name},#genre#\n")
|
|
||||||
|
|
||||||
# 写入该IP的直播源列表
|
|
||||||
for line_number, source in sorted(sources, key=lambda x: x[0]):
|
|
||||||
file.write(source + '\n')
|
|
||||||
file.write("\n") # 添加空行以便分隔不同IP的列表
|
|
||||||
|
|
||||||
# 主程序
|
|
||||||
if __name__ == "__main__":
|
|
||||||
input_file_path = '1.txt' # 直播源文件路径
|
|
||||||
output_file_path = 'sorted_live_sources.txt' # 输出文件路径
|
|
||||||
|
|
||||||
classify_sources(input_file_path)
|
|
||||||
write_to_file(output_file_path, sources_by_ip, genre_order)
|
|
||||||
Reference in New Issue
Block a user