1
0
mirror of https://github.com/spaam/svtplay-dl.git synced 2024-11-24 04:05:39 +01:00

option to choose which download method is preferred.

This commit is contained in:
Johan Andersson 2014-05-01 17:13:46 +02:00
parent fe463a1567
commit e87c236c51
7 changed files with 27 additions and 4 deletions

View File

@ -56,6 +56,7 @@ class Options:
self.thumbnail = False
self.all_episodes = False
self.force_subtitle = False
self.preferred = None
def get_media(url, options):
@ -196,6 +197,8 @@ def main():
parser.add_option("-A", "--all-episodes",
action="store_true", dest="all_episodes", default=False,
help="Try to download all episodes.")
parser.add_option("-P", "--preferred", default=None,
metavar="preferred", help="preferred download method")
(options, args) = parser.parse_args()
if not args:
parser.print_help()

View File

@ -2,5 +2,8 @@ class VideoRetriever:
def __init__(self, options, url, bitrate, **kwargs):
self.options = options
self.url = url
self.bitrate = bitrate
self.kwargs = kwargs
self.bitrate = int(bitrate)
self.kwargs = kwargs
def name(self):
pass

View File

@ -61,6 +61,9 @@ def hdsparse(options, manifest):
return streams
class HDS(VideoRetriever):
def name(self):
return "hds"
def download(self):
if self.options.live and not self.options.force:
raise LiveHDSException(self.url)

View File

@ -52,6 +52,9 @@ def hlsparse(url):
return streams
class HLS(VideoRetriever):
def name(self):
return "hls"
def download(self):
if self.options.live and not self.options.force:
raise LiveHLSException(self.url)

View File

@ -12,6 +12,9 @@ from svtplay_dl.utils.urllib import urlopen, Request, HTTPError
from svtplay_dl.fetcher import VideoRetriever
class HTTP(VideoRetriever):
def name(self):
return "http"
def download(self):
""" Get the stream from HTTP """
request = Request(self.url)

View File

@ -11,6 +11,9 @@ from svtplay_dl.utils import is_py2
from svtplay_dl.fetcher import VideoRetriever
class RTMP(VideoRetriever):
def name(self):
return "hds"
def download(self):
""" Get the stream from RTMP """
args = []

View File

@ -106,8 +106,13 @@ def check_redirect(url):
return url
def select_quality(options, streams):
available = sorted(int(x.bitrate) for x in streams)
if options.preferred:
available = []
data = sorted(streams, key=lambda x:(x.name()!= options.preferred, x.name()), reverse=True)
for i in data:
available.append(i.bitrate)
else:
available = sorted(int(x.bitrate) for x in streams)
try:
optq = int(options.quality)
except ValueError: