diff --git a/svtplay_dl.py b/svtplay_dl.py index ba9be8c..db71961 100755 --- a/svtplay_dl.py +++ b/svtplay_dl.py @@ -540,6 +540,9 @@ def select_quality(options, streams): return selected class Justin(): + def handle(self, url): + return ("twitch.com" in url) or ("justin.tv" in url) + def get(self, options, url): parse = urlparse(url) match = re.search("/b/(\d+)", parse.path) @@ -586,6 +589,9 @@ class Justin(): download_rtmp(options, test["url"]) class Hbo(): + def handle(self, url): + return "hbo.com" in url + def get(self, url): parse = urlparse(url) try: @@ -620,6 +626,9 @@ class Hbo(): download_rtmp(options, test["path"]) class Sr(): + def handle(self, url): + return "svergesradio.se" in url + def get(self, options, url): data = get_http_data(url) parse = urlparse(url) @@ -639,6 +648,9 @@ class Sr(): download_http(options, url) class Urplay(): + def handle(self, url): + return "urplay.se" in url + def get(self, options, url): data = get_http_data(url) match = re.search('file=(.*)\&plugins', data) @@ -649,6 +661,9 @@ class Urplay(): download_rtmp(options, "rtmp://streaming.ur.se/") class Qbrick(): + def handle(self, url): + return ("dn.se" in url) or ("di.se" in url) or ("svd.se" in url) + def get(self, options, url): if re.findall("dn.se", url): data = get_http_data(url) @@ -710,6 +725,9 @@ class Qbrick(): download_rtmp(options, server) class Kanal5(): + def handle(self, url): + return "kanal5play.se" in url + def get(self, options, url): match = re.search(".*video/([0-9]+)", url) if not match: @@ -735,6 +753,9 @@ class Kanal5(): download_rtmp(options, steambaseurl) class Kanal9(): + def handle(self, url): + return "kanal9play.se" in url + def get(self, options, url): data = get_http_data(url) match = re.search("@videoPlayer\" value=\"(.*)\"", data) @@ -772,6 +793,9 @@ class Kanal9(): download_rtmp(options, match.group(1)) class Expressen(): + def handle(self, url): + return "expressen.se" in url + def get(self, options, url): parse = urlparse(url) match = re.search("/(.*[\/\+].*)/", unquote_plus(parse.path)) @@ -803,6 +827,9 @@ class Expressen(): download_rtmp(options, filename) class Aftonbladet(): + def handle(self, url): + return "aftonbladet.se" in url + def get(self, options, url, start): parse = urlparse(url) data = get_http_data(url) @@ -835,6 +862,9 @@ class Aftonbladet(): download_http(options, filename) class Viaplay(): + def handle(self, url): + return ("tv3play.se" in url) or ("tv6play.se" in url) or ("tv8play.se" in url) + def get(self, options, url): parse = urlparse(url) match = re.search('\/play\/(.*)/?', parse.path) @@ -856,6 +886,9 @@ class Viaplay(): download_rtmp(options, filename) class Tv4play(): + def handle(self, url): + return "tv4play.se" in url + def get(self, options, url): parse = urlparse(url) try: @@ -904,6 +937,9 @@ class Tv4play(): download_hds(options, manifest, swf) class Svtplay(): + def handle(self, url): + return ("svtplay.se" in url) or ("svt.se" in url) + def get(self, options, url): if re.findall("svt.se", url): data = get_http_data(url) @@ -964,6 +1000,9 @@ class Svtplay(): download_http(options, test["url"]) class Nrk(object): + def handle(self, url): + return "nrk.no" in url + def get(self, options, url): data = get_http_data(url) match = re.search(r'data-media="(.*manifest.f4m)"', data) @@ -976,6 +1015,9 @@ class Nrk(object): download_hds(options, manifest_url) class Dr(object): + def handle(self, url): + return "dr.dk" in url + def get(self, options, url): data = get_http_data(url) match = re.search(r'resource:[ ]*"([^"]*)",', data) @@ -994,6 +1036,9 @@ class Dr(object): download_rtmp(options, uri) class Ruv(object): + def handle(self, url): + return "ruv.is" in url + def get(self, options, url): data = get_http_data(url) match = re.search(r'(http://load.cache.is/vodruv.*)"', data) @@ -1040,6 +1085,17 @@ def progressbar(total, pos, msg=""): progress_stream.write(fmt % (pos, total, bar, msg)) def get_media(url, options): + sites = [Aftonbladet(), Dr(), Expressen(), Hbo(), Justin(), Kanal5(), Kanal9(), + Nrk(), Qbrick(), Ruv(), Sr(), Svtplay(), Tv4play(), Urplay(), Viaplay()] + stream = None + for i in sites: + if i.handle(url): + stream = i + break + if not stream: + log.error("That site is not supported. Make a ticket or send a message") + sys.exit(2) + if not options.output or os.path.isdir(options.output): data = get_http_data(url) match = re.search("(?i)\s*(.*?)\s*", data) @@ -1057,54 +1113,7 @@ def get_media(url, options): else: options.output = unicode(re.sub('[-\s]+', '-', title)) - if re.findall("(twitch|justin).tv", url): - Justin().get(options, url) - - if re.findall("hbo.com", url): - Hbo().get(options, url) - - if re.findall("tv4play", url): - Tv4play().get(options, url) - - elif re.findall("(tv3play|tv6play|tv8play)", url): - Viaplay().get(options, url) - - elif re.findall("aftonbladet", url): - Aftonbladet().get(options, url, start) - - elif re.findall("expressen", url): - Expressen().get(options, url) - - elif re.findall("kanal5play", url): - Kanal5().get(options, url) - - elif re.findall("kanal9play", url): - Kanal9().get(options, url) - - elif re.findall("(di|svd|dn).se", url): - Qbrick().get(options, url) - - elif re.findall("urplay.se", url): - Urplay().get(options, url) - - elif re.findall("sverigesradio", url): - Sr().get(options, url) - - elif re.findall("(svt|svtplay).se", url): - Svtplay().get(options, url) - - elif re.findall("tv.nrk.no", url): - Nrk().get(options, url) - - elif re.findall("dr.dk/TV", url): - Dr().get(options, url) - - elif re.findall("ruv.is", url): - Ruv().get(options, url) - - else: - log.error("That site is not supported. Make a ticket or send a message") - sys.exit(2) + stream.get(options, url) def setup_log(silent): if silent: