mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 09:18:13 +00:00
45 lines
1.6 KiB
Python
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)
|