AI 生成: 一个自动构建 APTV 直播源的脚本工具,每天自动更新央视、卫视、地方台频道,支持源过滤、去重和可用性检测。
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""生成 M3U 播放列表"""
|
||||
|
||||
import os
|
||||
|
||||
|
||||
def generate_m3u(channels, output_file, category_order=None):
|
||||
"""生成标准 M3U 文件"""
|
||||
if category_order is None:
|
||||
category_order = []
|
||||
|
||||
# 按分类排序
|
||||
def sort_key(ch):
|
||||
cat = ch.get("category", "")
|
||||
if cat in category_order:
|
||||
return (category_order.index(cat), ch["name"])
|
||||
return (len(category_order), ch["name"])
|
||||
|
||||
channels = sorted(channels, key=sort_key)
|
||||
|
||||
os.makedirs(os.path.dirname(output_file), exist_ok=True)
|
||||
with open(output_file, "w", encoding="utf-8") as f:
|
||||
f.write("#EXTM3U\n")
|
||||
for ch in channels:
|
||||
name = ch["name"]
|
||||
category = ch.get("category", "")
|
||||
url = ch["url"]
|
||||
f.write(f'#EXTINF:-1 group-title="{category}",{name}\n')
|
||||
f.write(f"{url}\n")
|
||||
return len(channels)
|
||||
Reference in New Issue
Block a user