使用 Youtube 插件的 Streamlink:如何获取 scheduledStartTime 值?

Streamlink with Youtube plugin: How to get scheduledStartTime value?

我正在使用 Streamlink 来帮助我的一些技术上有挑战的老朋友观看来自选定网站的流,这些网站每周进行两次或三次网络直播,并被收录到 Youtube 中。在网络广播之间,最好通过应用程序状态页面向用户显示下一个网络广播何时开始。

平台是Raspberry Pi3B+。我已将 Youtube 插件修改为 allow/prohibit 非直播。如果命令行中有“--youtube-live-required”,则只会播放 LIVE 流。这可以防止 LIVE 网络广播在结束后重新开始,也可以防止播放 Youtube 随机选择的视频。我还应用了一个 'soon to be released' 补丁来修复 Youtube 最近做出的重大更改。我提到这些是为了让您知道我至少对 Streamlink 代码有最低限度的了解,并且我并不是在寻找完全免费的旅程。但出于某种原因,我无法理解如何添加功能以从 Youtube.py 插件获取 'scheduledStartTime' 值。我希望对 Streamlink 代码有深入了解的人可以给我一两个线索。

一旦获得 'scheduledStartTime' 值(以纪元表示),自定义模块将通过 socketio 将该值发送到板载 Python 服务器,然后服务器可以处理数据和将其推送到已连接客户端的状态页面。

在无限循环中,Popen 启动了 Streamlink。 Popen 的输出是 PIPEd 并被观察以了解发生了什么,然后再次使用 socketio 将该信息发送到服务器。正是在这个循环中,'scheduledStartTime' 数据将被收集(我认为)。

我该如何解决这个问题?

我有一个解决这个问题的方法,我不是很自豪,但它解决了这个问题,我终于可以关闭这个项目了。此外,事实证明此解决方案不必使用 streamlink youtube.py 插件,但由于它无论如何都会获取感兴趣的 URL 的内容,我决定破解插件并保留所有这些业务在一个地方。 简而言之,一个简单的正则表达式获取 scheduledStartTime IF 的值,它存在于获取的 URL 内容中。黑客:该值是 printed 输出为字符串 'SCHEDULE START TIME:epoch time value',它通过流链接通过 Popen PIPE 显示出来,该 Popen PIPE 被轮询以获取此类信息, 在自定义模块中。 Socket.io 然后将信息发送到机载服务器,该服务器将信息的按摩版本发送到应用程序的状态页面(离子框架、打字稿等)。作品。简单的。丑陋的。完成。