Python Way para comprobar si la transmisión de radio por Internet está disponible / en vivo

Trabajo en la recostackción de archivos de transmisión de radio de Internet como m3u con un enlace para transmitir en el interior (por ejemplo, http://aska.ru-hoster.com:8053/autodj ) .

No encontré un ejemplo sobre cómo es posible verificar si el enlace está disponible / en vivo .

Cualquier ayuda es apreciada !

UPD:

Tal vez la pregunta principal debería sonar como:

¿Podría ser una stream rota? En caso afirmativo, ¿el enlace para esa transmisión seguirá estando disponible o simplemente habrá un error 404 en el navegador? Si el enlace aún está disponible para abrir, incluso la transmisión está muerta, ¿cuáles son otros métodos para verificar la transmisión?

¿Estás intentando comprobar si existe la URL de transmisión?
Si es así, será como verificar cualquier otra URL si existe.

Una forma será intentar obtener url usando urllib y verificar el código de estado devuelto.

200 – Existe
Cualquier otra cosa (por ejemplo, 404): no existe o no puedes acceder a ella.

Por ejemplo:

 import urllib url = 'http://aska.ru-hoster.com:8053/autodj' code = urllib.urlopen(url).getcode() #if code == 200: #Edited per @Brad's comment if str(code).startswith('2') or str(code).startswith('3') : print 'Stream is working' else: print 'Stream is dead' 

EDITAR-1

Mientras que arriba se captura si existe una URL o no. No se detectará si la URL existe y el enlace de los medios está roto.

Una posible solución usando vlc es obtener los medios de la URL, intentar reproducirlos y obtener su estado mientras se reproducen. Si los medios no existen, obtendremos un error que se puede utilizar para determinar el estado del enlace.

Con la URL de trabajo obtenemos

 url = 'http://aska.ru-hoster.com:8053/autodj' >>> Stream is working. Current state = State.Playing 

Con la URL rota conseguimos,

 url = 'http://aska.ru-hoster.com:8053/autodj12345' >>> Stream is dead. Current state = State.Error 

A continuación se presenta la lógica básica para lograr lo anterior. Es posible que desee revisar el sitio de VLC para detectar otros tipos de error y mejores métodos.

 import vlc import time url = 'http://aska.ru-hoster.com:8053/autodj' #define VLC instance instance = vlc.Instance('--input-repeat=-1', '--fullscreen') #Define VLC player player=instance.media_player_new() #Define VLC media media=instance.media_new(url) #Set player media player.set_media(media) #Play the media player.play() #Sleep for 5 sec for VLC to complete retries. time.sleep(5) #Get current state. state = str(player.get_state()) #Find out if stream is working. if state == "vlc.State.Error" or state == "State.Error": print 'Stream is dead. Current state = {}'.format(state) player.stop() else: print 'Stream is working. Current state = {}'.format(state) player.stop()