diff --git a/lib/svtplay/service/__init__.py b/lib/svtplay/service/__init__.py index 9e011f6..aa5fa92 100644 --- a/lib/svtplay/service/__init__.py +++ b/lib/svtplay/service/__init__.py @@ -15,6 +15,7 @@ from svtplay.service.kanal9 import Kanal9 from svtplay.service.nrk import Nrk from svtplay.service.qbrick import Qbrick from svtplay.service.ruv import Ruv +from svtplay.service.radioplay import Radioplay from svtplay.service.sr import Sr from svtplay.service.svtplay import Svtplay from svtplay.service.tv4play import Tv4play @@ -34,6 +35,7 @@ def service_handler(url): Nrk(), Qbrick(), Ruv(), + Radioplay(), Sr(), Svtplay(), Tv4play(), diff --git a/lib/svtplay/service/radioplay.py b/lib/svtplay/service/radioplay.py new file mode 100644 index 0000000..caecf20 --- /dev/null +++ b/lib/svtplay/service/radioplay.py @@ -0,0 +1,53 @@ +from __future__ import absolute_import +import sys +import re +import json +from urlparse import urlparse + +from svtplay.utils import get_http_data + +from svtplay.rtmp import download_rtmp +from svtplay.hls import download_hls +from svtplay.http import download_http + +from svtplay.log import log + +class Radioplay(object): + def handle(self, url): + return "radioplay.se" in url + + def get(self, options, url): + data = get_http_data(url) + match = re.search("liveStationsRedundancy = ({.*});", data) + parse = urlparse(url) + station = parse.path[1:] + streams = None + if match: + data = json.loads(match.group(1)) + for i in data["stations"]: + if station == i["name"].lower().replace(" ", ""): + streams = i["streams"] + break + else: + log.error("Can't find any streams.") + sys.exit(2) + if streams: + if options.hls: + try: + m3u8_url = streams["hls"] + base_url = m3u8_url.rsplit("/", 1)[0] + download_hls(options, m3u8_url, base_url) + except KeyError: + log.error("Can't find any streams.") + sys.error(2) + else: + try: + rtmp = streams["rtmp"] + download_rtmp(options, rtmp) + except KeyError: + mp3 = streams["mp3"] + download_http(options, mp3) + + else: + log.error("Can't find any streams.") + sys.exit(2)