Files
dss.api/core/utils/live.py
2016-09-23 00:21:02 +01:00

45 lines
1.6 KiB
Python

import logging
import urllib.request, urllib.error, urllib.parse
from bs4 import BeautifulSoup
def _parseItem(soup, param):
try:
match = soup.find(text=param)
if match is not None:
return match.findNext('td').contents[0]
except Exception as ex:
logging.getLogger('core').exception("Error parsing ice stream details: " + ex)
return ""
def get_server_details(server, port, mount):
server = "http://%s:%s/status.xsl?mount=/%s" % (server, port, mount)
print("Getting info for %s" % server)
try:
response = urllib.request.urlopen(server)
html = response.read()
if html:
soup = BeautifulSoup(html)
info = {
'stream_title': _parseItem(soup, "Stream Title:"),
'stream_description': _parseItem(soup, "Stream Description:"),
'content_type': _parseItem(soup, "Content Type:"),
'mount_started': _parseItem(soup, "Mount started:"),
'quality': _parseItem(soup, "Quality:"),
'current_listeners': _parseItem(soup, "Current Listeners:"),
'peak_listeners': _parseItem(soup, "Peak Listeners:"),
'stream_genre': _parseItem(soup, "Stream Genre:"),
'current_song': _parseItem(soup, "Current Song:")
}
return info
else:
print("Invalid content found")
return None
except urllib.error.URLError:
return "Unknown stream %s" % server
def get_now_playing(server, port, mount):
return get_server_details(server, port, mount)