Streamlink с плагином Youtube: как получить значение scheduleStartTime?

Я использую Streamlink, чтобы помочь некоторым моим старшим друзьям с техническими проблемами смотреть стримы с выбранных сайтов, которые транслируют в прямом эфире два или три раза в неделю и загружаются на Youtube. В промежутках между веб-трансляциями было бы неплохо показать пользователю, когда начнется следующая, на странице состояния приложений.

Платформа - Raspberry Pi 3 B+. Я изменил плагин Youtube, чтобы разрешить / запретить неживые трансляции. Если в командной строке указано --youtube-live-required, будут воспроизводиться только потоки LIVE. Это предотвращает повторный запуск прямой трансляции после ее завершения, а также предотвращает воспроизведение видео, которые Youtube выбирает случайным образом. Я также применил патч "скоро будет выпущен", который исправляет критическое изменение, недавно сделанное Youtube. Я упоминаю об этом, чтобы вы знали, что у меня есть хотя бы минимальное понимание кода Streamlink, и я не ищу абсолютно бесплатную поездку. Но по какой-то причине я не могу понять, как добавить функцию для получения значения "scheduleStartTime" из плагина Youtube.py. Я надеюсь, что кто-то с глубоким пониманием кода Streamlink может подкинуть мне пару подсказок.

Как только будет получено значение "scheduleStartTime" (в нотации эпох), пользовательский модуль отправит это значение на встроенный сервер Python через socketio, который затем может обработать данные и отправить их на страницу состояния подключенных клиентов.

В бесконечном цикле Popen запускает Streamlink. Результатом Popen является PIPEd, который отслеживается, чтобы узнать, что происходит, а затем отправляет эту информацию на сервер, снова используя socketio. Именно в этом цикле будут собираться данные "scheduleStartTime" (я думаю).

Как решить проблему?

1 ответ

Решение

У меня есть решение этой проблемы, которым я не очень горжусь, но оно решает проблему, и я наконец могу закрыть этот проект. Кроме того, оказывается, что это решение не обязательно должно использовать плагин streamlink youtube.py, но поскольку оно в любом случае извлекает содержимое интересующего URL, я решил взломать плагин и сохранить весь этот бизнес в одном месте. Вкратце, простое регулярное выражение получает значение scheduleStartTime, если оно присутствует в извлеченном содержимом URL. Взлом: это значение печатается out в виде строки "SCHEDULE START TIME:epoch time value", которая появляется через потоковую ссылку через Popen PIPE, который запрашивается для получения такой информации в настраиваемом модуле. Затем Socket.io отправляет информацию на встроенный сервер, который отправляет массовую версию информации на страницу состояния приложения (Ionic framework, машинописный текст и т. Д.). Работает. Просто. Некрасиво. Готово.

Другие вопросы по тегам