前言
很多小伙伴在后台私信,说好不容易搜集到的酒店 IPTV 直播源,看了没几天就“挂了”。其实,酒店源的 IP 经常变动,手动更新费时费力。
今天分享一段进阶代码:利用搜索引擎自动“捡”回失效的直播源。 只要掌握了城市关键词和端口号,你就能拥有一个自动更新的直播库!
1. 脚本黑科技:它是如何工作的?
脚本思路来了,这段代码不再是简单的“播放器”,而是一个智能的“巡逻员”:
自动体检:每次运行先检查本地文件,如果前几个频道能拉取到 16KB 以上的流量,说明源还活着,直接打卡下班。
精准搜索:如果源失效了,它会立刻调取 Quake 搜索引擎,在全球范围内搜索指定城市(如:梅州)和指定端口(如:9901)的服务器。
自动同步:抓取到新源后,它会自动生成 .m3u 和 .txt 格式,并推送到你的服务器目录,实现电视端无感更新。
2. 部署前的准备
在运行代码前,你需要:
Python 环境:安装好 requests 库(pip install requests)。
Quake API Key:去360 Quake 官网注册并获取你的 API 密钥(这是搜索引擎的通行证)。
服务器/NAS:建议部署在群晖、iStoreOS 或宝塔面板上,设置定时任务(Cron)每天凌晨运行一次。
3. 需要修改的关键参数
拿到代码后,请根据你所在的城市或你想看的源,修改以下 “配置区域”:
Python
# ================= 配置区域 =================
QUAKE_API_KEY = "你的API_KEY"# 填入你申请的 Quake 密钥
M3U_FILENAME = "梅州.m3u"# 生成的文件名
TXT_FILENAME = "梅州.txt"
REMOTE_PATH = "/www/wwwroot/xxx"# 你的 Web 服务器存放目录
# 核心:修改查询语句
# 例如想搜广州的 8000 端口,就改 city_cn: "广州市" AND port: "8000"
QUAKE_QUERY = 'iptv/live/zh_cn.js AND province_cn: "广东" AND port: "9901" AND city_cn: "梅州市"'
# ===========================================
4. 为什么这次的验证更靠谱?
传统的代码只看服务器有没有响应,但有时候服务器开着,视频流却是黑屏。本次代码升级了验证逻辑:
只有当脚本能从链接中成功拉取到 16KB 的数据流量时,才判定该源有效。这大大过滤了那些“空壳”链接,保证你看的每一条都能秒开。
5. 核心代码片段分享
Python
defcheck_m3u8_valid(url, timeout=5):
try:
# 强制拉取 16KB 流量进行实测
response = requests.get(url, timeout=timeout, stream=True)
if response.status_code == 200:
chunk = next(response.iter_content(chunk_size=16*1024), b"")
returnlen(chunk) > 0# 有流量才算真有效
except:
pass
returnFalse
结语
授人以鱼不如授人以渔。分享代码思路,掌握了这个代码,你就不再是直播源的“搬运工”,而是直播源的“开发者”。
温馨提示: 代码中涉及的 API 密钥请妥善保管。如果你觉得好用,欢迎点赞分享给更多有需要的朋友!
[注:如需获取完整源码,请关注公众号后在公众号回复“260427”]
给读者的回复建议(QA):
Q:为什么我搜不到结果?
Q:16KB 会不会太费流量?
想看更多关于群晖、iStoreOS 及网络折腾的干货?关注我,大家一起分享!