You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过程序自动获取JS播放器中每日变更的playlist.m3u8地址?

解决方案:自动获取并播放订阅新闻频道的m3u8流

核心逻辑

由于m3u8地址需要在已认证的页面中获取,程序的核心是模拟浏览器的登录会话——通过保存登录后的Cookie维持认证状态,定期请求目标页面提取最新m3u8地址,再调用ffplay完成播放。

步骤1:导出登录会话Cookie

先在浏览器完成新闻频道的登录,然后打开检查面板的Network标签:

  • 随便选择一个请求,查看Request Headers里的Cookie字段
  • 将Cookie中的键值对整理成字典格式(比如"session_id": "xxxxxx"),后续脚本会用它维持登录状态

步骤2:编写Python自动提取脚本

树莓派1自带Python环境,先安装必要依赖:

sudo apt-get install python3-requests python3-bs4

以下是适配场景的示例脚本(需根据实际页面结构调整):

import requests
import re
import subprocess
import time

# 替换为你的新闻频道直播页URL
PAGE_URL = "https://your-news-channel.com/live"
# 替换为从浏览器导出的Cookie键值对
LOGIN_COOKIES = {
    "session_token": "your_session_value",
    "user_id": "your_user_id"
}
# 匹配m3u8地址的正则(可根据页面中链接的实际格式调整)
M3U8_REGEX = r'https?://[^\s"]+\.m3u8'

def fetch_m3u8():
    try:
        resp = requests.get(PAGE_URL, cookies=LOGIN_COOKIES)
        resp.raise_for_status()
        # 从页面源码中匹配m3u8地址
        m3u8_list = re.findall(M3U8_REGEX, resp.text)
        return m3u8_list[0] if m3u8_list else None
    except Exception as e:
        print(f"请求失败: {str(e)}")
        return None

def play_with_ffplay(m3u8_url):
    # 适配树莓派1性能的ffplay参数:无窗口、自动退出、降分辨率
    ffplay_cmd = [
        "ffplay",
        "-nodisp",
        "-autoexit",
        "-lowres",
        "-framedrop",
        m3u8_url
    ]
    try:
        subprocess.run(ffplay_cmd, check=True)
    except subprocess.CalledProcessError:
        print("ffplay播放异常")

if __name__ == "__main__":
    while True:
        current_m3u8 = fetch_m3u8()
        if current_m3u8:
            print(f"获取到有效m3u8地址: {current_m3u8}")
            play_with_ffplay(current_m3u8)
        # 每23小时重新获取一次(提前1小时避免地址过期)
        print("等待23小时后重试...")
        time.sleep(23 * 3600)

步骤3:适配实际页面细节

  • 如果m3u8地址是通过AJAX异步加载的,可抓包找到对应的API接口,直接用requests请求该接口提取地址(比解析页面源码更高效)
  • 若Cookie过期,需重新从浏览器导出更新;部分网站的Cookie有效期较长,可每月检查一次

步骤4:设置开机自动运行

编辑树莓派的rc.local文件实现开机启动:

sudo nano /etc/rc.local

在exit 0前添加以下内容(替换为你的脚本路径):

python3 /home/pi/news_stream_script.py &

保存后重启树莓派即可生效。

注意事项

  • 你拥有合法订阅权限,这种个人家庭使用的脚本完全合规,无需担心版权问题
  • 树莓派1性能有限,若播放卡顿可尝试添加-sync ext参数强制外部同步,或进一步降低分辨率
  • 若地址更新时间不固定,可缩短循环等待间隔(比如每12小时检查一次),确保始终获取有效地址

内容的提问来源于stack exchange,提问作者Jander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:52:46