Python检查internet广播流是否可用的方法/li

2024-06-30 13:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的工作是收集互联网无线电流文件,例如m3u,其中包含指向流的链接(例如http://aska.ru-hoster.com:8053/autodj)。在

我没有找到一个例子来说明如何能够检查链接是否可用/有效。在

如有任何帮助,我们将不胜感激!在

升级版:

也许主要的问题应该是:

可能是溪流破裂?如果是,该流的链接是否仍然可用,或者浏览器中只会出现404错误?如果链接仍然可以打开,即使流是死的,还有什么方法可以检查流?在


Tags: 文件comhttp链接ru错误浏览器互联网
1条回答
网友
1楼 · 发布于 2024-06-30 13:44:33

您是否正在尝试检查流式处理URL是否存在?
如果是的话,就像检查任何其他url(如果存在的话)。在

一种方法是尝试使用urllib获取url并检查返回的状态代码。在

200 - Exists
Anything else (e.g. 404) -Doesn't exist or you can't access it.

例如:

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'

编辑-1

而上面将捕捉URL是否存在。如果URL存在并且媒体链接断开,则不会捕获。在

使用vlc的一个可能的解决方案是从url获取媒体,尝试播放并在播放时获取其状态。如果媒体不存在,我们将得到一个可以用来确定链接状态的错误。在

通过工作网址我们得到

^{pr2}$

有了断开的网址

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

下面是实现上述目标的基本逻辑。您可能需要检查VLC site以捕获其他错误类型和更好的方法。在

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()

相关问题 更多 >