# IPTV-M3U-Checker-Bot **Repository Path**: fatcat2018/iptv-m3-u-checker-bot ## Basic Information - **Project Name**: IPTV-M3U-Checker-Bot - **Description**: 直播源批量检测程序 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-04-11 - **Last Updated**: 2024-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IPTV-M3U-Checker 直播源批量检测程序 ## 简介 Python初学者,能力有限,还请见谅。 针对目前`个人使用`的痛点,实现直播源`自动化定时检测`,便于及时替换失效源。一般不会出现大规模失效,除非同一域名/ip挂了,那么替换即可。如果是需要初次检测某一(大量)直播源,请使用其他工具。 本项目改自AlexKwan1981/iptv-m3u8-checker,感谢! 增加了钉钉群机器人,可以配合定时任务,实现直播源的定时检测与通知,使用`Office Web Viewer`展示测试结果。 增加了直播源连接速度测试(占用资源和时间可能较长,默认关闭),参考项目chaichunyang/m3u-tester,感谢! 基于个人能力和`.m3u`文件自身标签的原因,暂时删除了对`.m3u`文件的支持(原项目也不完全支持),目前仅支持`.txt`直播源的检测。(有许多在线工具/软件能较好地将`.m3u`转为`.txt`) ### 主要功能 对直播源进行批量检测,并通过钉钉群机器人及时反馈检测结果。 - 将待检测的直播源文件放置到`playlists/`文件夹下: - 支持在线直链(如`raw.githubusercontent.com`,`gitee.com/*/raw/`等,可添加多个),自动下载至`playlists/`文件夹,文件名相同则直接覆盖(类似自动更新) - 支持多个本地文件 - 目前仅支持`.txt`格式,详见playlists文件下的demo示例 - 直播源检测 - 对每个连接进行测试,同时记录当前网络对该连接的延迟(参考EvilCult/iptv-m3u-maker) - 支持测试有效直播源的连接速度 - 将失效的直播源以文本形式通过钉钉群机器人通知 - 通过`DataFrame.to_excel()`在`output/`目录下生成全部测试结果的Excel 预览,以链接形式通过钉钉群机器人发送 - 生成的文件名以`测试时间+token`命名,防止直播源泄露 ## 使用方法 本项目基于 **python3.7** 进行开发 - 模块安装 Requirements ``` pip3 install pandas pip3 install requests pip3 install DingtalkChatbot pip3 install openpyxl * 国内可以使用-i参数加快下载速度 如:pip3 install DingtalkChatbot -i https://pypi.tuna.tsinghua.edu.cn/simple ``` - 钉钉群机器人配置 - 群设置->智能群助手->添加机器人->添加机器人->自定义->添加 - 获得`secret` - 获得`webhook` - 主要参数 - `webhook`:填入钉钉群自定义机器人的token ``` 修改main.py第23行 webhook = 'https://oapi.dingtalk.com/robot/send?access_token=这里填写自己钉钉群自定义机器人的token' ``` - `secret`:创建机器人勾选“加签”选项所设置的密钥 ``` 修改main.py第24行 secret = 'SEC11b9...这里填写自己的加密设置密钥' # 创建机器人勾选“加签”选项时使用 ``` - `SpeedTest`:是否开启直播源连接速度测试,默认关闭(开启可能增加耗时与资源占用) ``` 修改main.py第29行 SpeedTest = True # default False ``` - `your_domain`:生成的excel文件所在服务器域名/ip ``` 修改main.py第31行 注意添加 http / https your_domain = 'https://list.domain.com' 如果没有服务器 / 不需要通知,请将your_domain置为空值 your_domain = '' ``` - `playlist_file` = 'playlists/' 直播源源文件存放路径 - `delay_threshold` = 5000 响应延迟阈值,单位毫秒,超过这个阈值则认为直播源质量较差 - 运行 ``` 只检测本地文件:python3 main.py 检测直链文件:python3 main.py https://raw.githubusercontent.com.txt https://gitee.com/a/b/raw.txt http://c.txt 也可配合crontab等定时执行 * 检测直链时,自动下载至playlists/,而后检测该目录下所有文件 ``` ## 注意事项 使用Nginx或Apache等,请注意增加对除了`.xlsx`外文件的访问权限,以免数据丢失 nginx可使用如下配置 ``` location ~ \.(py|pyc|txt|sqlite3)$ { deny all; } ``` ## 待优化内容 - 增加对telegram bot的支持(争取 - 部分直播源测速问题 - 代码优化 - ……