1
0
mirror of https://github.com/spaam/svtplay-dl.git synced 2024-11-27 21:54:17 +01:00

Move some common code into select_quality function

This commit is contained in:
Anders Waldenborg 2012-05-20 21:56:04 +02:00
parent c44a9689d6
commit 4f9b60200c

View File

@ -133,6 +133,22 @@ def download_rtmp(options, url, output, live, extra_args, resume):
command = ["rtmpdump", "-r", url] + args
subprocess.call(command)
def select_quality(obj, streams):
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not obj.quality:
obj.quality = sort.pop()
try:
test = streams[str(obj.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
return test
class Justin():
def __init__(self, options, output, quality, live, resume):
@ -162,20 +178,8 @@ class Justin():
streams[i.find("video_height").text] = stream
except AttributeError:
None
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[str(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
test = select_quality(self, streams)
other = "-j '%s' -W %s" % (test["token"], self.resume)
self.resume = False
download_rtmp(self.options, test["url"], self.output, self.live, other, self.resume)
@ -224,26 +228,13 @@ class Hbo():
stream["path"] = i.find("tv14").find("path").text
streams[i.attrib["width"]] = stream
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[str(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
test = select_quality(self, streams)
if not self.output:
self.output = os.path.basename(streams[str(self.quality)]["path"])
self.output = os.path.basename(test["path"])
logging.info("Outfile: %s", self.output)
download_rtmp(self.options, streams[str(self.quality)]["path"], self.output, self.live, "", self.resume)
download_rtmp(self.options, test["path"], self.output, self.live, "", self.resume)
class Sr():
def __init__(self, options, output, quality, live, other, resume):
@ -307,25 +298,12 @@ class Qbrick():
sa = list(streams.iter("video"))
streams = {}
for i in sa:
streams[int(i.attrib["system-bitrate"])] = i.attrib["src"]
streams[i.attrib["system-bitrate"]] = i.attrib["src"]
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
path = streams[int(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
path = select_quality(self, streams)
if not self.output:
self.output = os.path.basename(streams[int(self.quality)])
self.output = os.path.basename(path)
logging.info("Outfile: %s", self.output)
other = "-y %s" % path
@ -349,27 +327,14 @@ class Kanal5():
stream["source"] = i["source"]
streams[i["bitrate"]] = stream
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[int(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
test = select_quality(self, streams)
if not self.output:
self.output = os.path.basename(streams[int(self.quality)]["source"])
self.output = os.path.basename(test["source"])
logging.info("Outfile: %s", self.output)
filename = streams[int(self.quality)]["source"]
filename = test["source"]
match = re.search("^(.*):", filename)
self.output = "%s.%s" % (self.output, match.group(1))
other = "-W %s -y %s " % ("http://www.kanal5play.se/flash/StandardPlayer.swf", filename)
@ -408,26 +373,12 @@ class Kanal9():
stream["uri"] = i["defaultURL"]
streams[i["encodingRate"]] = stream
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[int(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
test = select_quality(self, streams)
if not self.output:
self.output = os.path.basename(streams[int(self.quality)]["uri"])
self.output = os.path.basename(test["uri"])
logging.info("Outfile: %s", self.output)
filename = streams[int(self.quality)]["uri"]
filename = test["uri"]
match = re.search("(rtmp[e]{0,1}://.*)\&(.*)$", filename)
other = "-W %s -y %s " % ("http://admin.brightcove.com/viewer/us1.25.04.01.2011-05-24182704/connection/ExternalConnection_2.swf", match.group(2))
download_rtmp(self.options, match.group(1), self.output, self.live, other, self.resume)
@ -454,26 +405,13 @@ class Expressen():
for i in sa:
streams[i.attrib["bitrate"]] = i.text
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[str(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
test = select_quality(self, streams)
if not self.output:
self.output = os.path.basename(streams[str(self.quality)])
self.output = os.path.basename(test)
logging.info("Outfile: %s", self.output)
filename = streams[str(self.quality)]
filename = test
match = re.search("rtmp://([0-9a-z\.]+/[0-9]+/)(.*).flv", filename)
filename = "rtmp://%s" % match.group(1)
@ -564,28 +502,15 @@ class Tv4play():
stream["path"] = i.find("url").text
streams[i.find("bitrate").text] = stream
sort = []
for key in sorted(streams.keys()):
sort.append(int(key))
sort = sorted(sort)
test = select_quality(self, streams)
if not self.quality:
self.quality = sort.pop()
try:
test = streams[str(self.quality)]
except KeyError:
logging.error("Can't find that quality. (Try one of: %s)",
",".join(map(str,sort)))
sys.exit(4)
other = "-W http://www.tv4play.se/flash/tv4playflashlets.swf -y %s" % streams[str(self.quality)]["path"]
other = "-W http://www.tv4play.se/flash/tv4playflashlets.swf -y %s" % test["path"]
if not self.output:
self.output = os.path.basename(streams[str(self.quality)]["path"])
self.output = os.path.basename(test["path"])
logging.info("Outfile: %s", self.output)
download_rtmp(self.options, streams[str(self.quality)]["uri"], self.output, self.live, other, self.resume)
download_rtmp(self.options, test["uri"], self.output, self.live, other, self.resume)
class Svtplay():
def __init__(self, options, output, quality, live, resume):