извлечение информации о песне из EXTINF из прямого радиопотока

#http #http-live-streaming #m3u8

#http #http-прямая трансляция #m3u8

Вопрос:

Возможно ли извлечь информацию о песне из прямого радиопотока HLS M3U8, используя, например, python или любую другую программу?

В настоящее время я могу просмотреть информацию о песне, открыв ответ в Google DevTools, но я бы хотел автоматически извлекать / извлекать название песни и сохранять его в файл при каждом изменении песни.

Скриншот

Комментарии:

1. Конечно, это возможно. Вы должны решить, какой язык программирования вы собираетесь использовать для его кодирования. Если вы это сделали, вы, вероятно, можете найти примеры повсюду. А если нет, вы изменяете скрипт. Если затем вы нажмете на ошибку … вернитесь и отправьте свой вопрос. Теперь это слишком расплывчато и слишком широко.

2. Раньше я очищал потоки, используя python, поэтому я немного знаком с python, хотя я не силен в программировании… Я нашел готовый скрипт, который использует VLC, но проблема в том, что VLC неправильно обрабатывает метаданные потока, упомянутого выше, поэтому я не могу использовать имеющийся у меня скрипт.

3. если вы добавите информацию, с какого URL-адреса вы получаете поток / метаданные, и сценарий, который у вас есть, реализуйте попытку получить / извлечь эти данные (т. Е. Приведите краткий пример метаданных), я и, возможно, многие другие могли бы помочь вам в этом. (Я тоже все еще извлекаю ее вручную… так что взаимный интерес к этому 😉

4. hm не совсем понял.. я часами пытался найти что-нибудь онлайн, что помогло бы мне. есть ли шанс помочь мне дальше?

Ответ №1:

Вам следует попробовать использовать библиотеку Python (https://github.com/globocom/m3u8 ) для анализа и управления манифестами m3u8 вместо написания собственного скрипта. Вы должны проверить, поддерживает ли он теги, для которых вы пытаетесь получить метаданные. Если нет, вы сможете легко расширить библиотеку, чтобы добавить необходимые вам функции.

 import m3u8

def get_movie(line, data, lineno):
    if line.startswith('#MOVIE-NAME:'):
        custom_tag = line.split(':')
        data['movie'] = custom_tag[1].strip()

m3u8_obj = m3u8.load('http://videoserver.com/playlist.m3u8', 
custom_tags_parser=get_movie)
print(m3u8_obj.data['movie'])  #  million dollar baby
  

Комментарии:

1. Теперь мне удается запустить скрипт и в результате получить название песни. Но теперь я хочу пойти дальше, чтобы записать песни. Как я могу изменить приведенный ниже код, чтобы оставить скрипт открытым, прослушивая URL-адрес, и каждый раз, когда меняется название песни, он записывается в текстовый файл. Я пытаюсь кое-что сделать, но это не работает. Спасибо! ibb.co/0BvJ8Vr

2. @AndrewFabri — Эй, если URL-адрес является потоком, вам нужно постоянно запрашивать URL-адрес, чтобы получать какие-либо новые изменения, происходящие в потоке. Я бы посоветовал вам преобразовать код в демонический процесс, который запускается каждые несколько секунд и проверяет поток и записывает в файл, если есть какие-либо изменения.

3. @AndrewFabri — Пожалуйста, отметьте это как правильный ответ, если он решил вашу проблему.

4. @AndrewFabri Да, вы должны быть в состоянии сделать это в Windows, используя python или node.

5. Привет, Патель, мне удалось это сделать! Сейчас я пытаюсь внести изменения в код, чтобы печатать в текстовый файл ТОЛЬКО тогда, когда название песни не является «None». Я прикрепил изображение своего кода — может быть, вы могли бы подсказать мне, как я мог бы это добавить? ibb.co/PjmQb9W