summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/YoutubeCom.py
diff options
context:
space:
mode:
authorGravatar Christopher <4Christopher@gmx.de> 2013-05-11 22:00:51 +0200
committerGravatar Christopher <4Christopher@gmx.de> 2013-05-11 22:00:51 +0200
commitbbc0553151a685715aa3e2aba92a2b90932622f0 (patch)
tree879e861d30cec4b2e4a8998777d0196493121937 /module/plugins/hoster/YoutubeCom.py
parentMerge pull request #112 from Vuolter/plugin/DeleteFinished (diff)
downloadpyload-bbc0553151a685715aa3e2aba92a2b90932622f0.tar.xz
YoutubeCom.py: Fixed regulare expression.
My intention for this was to also match watch?feature=player_embedded&v=
Diffstat (limited to 'module/plugins/hoster/YoutubeCom.py')
-rw-r--r--module/plugins/hoster/YoutubeCom.py50
1 files changed, 25 insertions, 25 deletions
diff --git a/module/plugins/hoster/YoutubeCom.py b/module/plugins/hoster/YoutubeCom.py
index 304cffd69..33d195c82 100644
--- a/module/plugins/hoster/YoutubeCom.py
+++ b/module/plugins/hoster/YoutubeCom.py
@@ -33,8 +33,8 @@ def which(program):
class YoutubeCom(Hoster):
__name__ = "YoutubeCom"
__type__ = "hoster"
- __pattern__ = r"(http|https)://(www\.)?(de\.)?\youtube\.com/watch\?v=.*"
- __version__ = "0.31"
+ __pattern__ = r"https?://(?:www\.)?(?:de\.)?youtube\.com/watch.*?[?&]v=.*"
+ __version__ = "0.32"
__config__ = [("quality", "sd;hd;fullhd;240p;360p;480p;720p;1080p;3072p", "Quality Setting", "hd"),
("fmt", "int", "FMT/ITAG Number (5-102, 0 for auto)", 0),
(".mp4", "bool", "Allow .mp4", True),
@@ -47,9 +47,9 @@ class YoutubeCom(Hoster):
__author_mail__ = ("spoob@pyload.org", "zoidberg@mujmail.cz")
# name, width, height, quality ranking, 3D
- formats = {5: (".flv", 400, 240, 1, False),
+ formats = {5: (".flv", 400, 240, 1, False),
6: (".flv", 640, 400, 4, False),
- 17: (".3gp", 176, 144, 0, False),
+ 17: (".3gp", 176, 144, 0, False),
18: (".mp4", 480, 360, 2, False),
22: (".mp4", 1280, 720, 8, False),
43: (".webm", 640, 360, 3, False),
@@ -59,7 +59,7 @@ class YoutubeCom(Hoster):
37: (".mp4", 1920, 1080, 9, False),
38: (".mp4", 4096, 3072, 10, False),
44: (".webm", 854, 480, 5, False),
- 45: (".webm", 1280, 720, 7, False),
+ 45: (".webm", 1280, 720, 7, False),
46: (".webm", 1920, 1080, 9, False),
82: (".mp4", 640, 360, 3, True),
83: (".mp4", 400, 240, 1, True),
@@ -81,49 +81,49 @@ class YoutubeCom(Hoster):
if "We have been receiving a large volume of requests from your network." in html:
self.tempOffline()
-
+
#get config
use3d = self.getConf("3d")
if use3d:
- quality = {"sd":82,"hd":84,"fullhd":85,"240p":83,"360p":82,"480p":82,"720p":84,"1080p":85,"3072p":85}
+ quality = {"sd":82,"hd":84,"fullhd":85,"240p":83,"360p":82,"480p":82,"720p":84,"1080p":85,"3072p":85}
else:
- quality = {"sd":18,"hd":22,"fullhd":37,"240p":5,"360p":18,"480p":35,"720p":22,"1080p":37,"3072p":38}
+ quality = {"sd":18,"hd":22,"fullhd":37,"240p":5,"360p":18,"480p":35,"720p":22,"1080p":37,"3072p":38}
desired_fmt = self.getConf("fmt")
if desired_fmt and desired_fmt not in self.formats:
- self.logWarning("FMT %d unknown - using default." % desired_fmt)
- desired_fmt = 0
+ self.logWarning("FMT %d unknown - using default." % desired_fmt)
+ desired_fmt = 0
if not desired_fmt:
- desired_fmt = quality.get(self.getConf("quality"), 18)
-
+ desired_fmt = quality.get(self.getConf("quality"), 18)
+
#parse available streams
streams = re.search(r'"url_encoded_fmt_stream_map": "(.*?)",', html).group(1)
streams = [x.split('\u0026') for x in streams.split(',')]
streams = [dict((y.split('=',1)) for y in x) for x in streams]
streams = [(int(x['itag']), "%s&signature=%s" % (unquote(x['url']), x['sig'])) for x in streams]
- #self.logDebug("Found links: %s" % streams)
- self.logDebug("AVAILABLE STREAMS: %s" % [x[0] for x in streams])
-
+ #self.logDebug("Found links: %s" % streams)
+ self.logDebug("AVAILABLE STREAMS: %s" % [x[0] for x in streams])
+
#build dictionary of supported itags (3D/2D)
- allowed = lambda x: self.getConfig(self.formats[x][0])
+ allowed = lambda x: self.getConfig(self.formats[x][0])
streams = [x for x in streams if x[0] in self.formats and allowed(x[0])]
if not streams:
self.fail("No available stream meets your preferences")
- fmt_dict = dict([x for x in streams if self.formats[x[0]][4] == use3d] or streams)
-
- self.logDebug("DESIRED STREAM: ITAG:%d (%s) %sfound, %sallowed" %
- (desired_fmt,
+ fmt_dict = dict([x for x in streams if self.formats[x[0]][4] == use3d] or streams)
+
+ self.logDebug("DESIRED STREAM: ITAG:%d (%s) %sfound, %sallowed" %
+ (desired_fmt,
"%s %dx%d Q:%d 3D:%s" % self.formats[desired_fmt],
- "" if desired_fmt in fmt_dict else "NOT ",
+ "" if desired_fmt in fmt_dict else "NOT ",
"" if allowed(desired_fmt) else "NOT ")
- )
+ )
- #return fmt nearest to quality index
+ #return fmt nearest to quality index
if desired_fmt in fmt_dict and allowed(desired_fmt):
fmt = desired_fmt
else:
sel = lambda x: self.formats[x][3] #select quality index
comp = lambda x, y: abs(sel(x) - sel(y))
-
+
self.logDebug("Choosing nearest fmt: %s" % [(x, allowed(x), comp(x, desired_fmt)) for x in fmt_dict.keys()])
fmt = reduce(lambda x, y: x if comp(x, desired_fmt) <= comp(y, desired_fmt) and
sel(x) > sel(y) else y, fmt_dict.keys())
@@ -132,7 +132,7 @@ class YoutubeCom(Hoster):
url = fmt_dict[fmt]
self.logDebug("URL: %s" % url)
- #set file name
+ #set file name
file_suffix = self.formats[fmt][0] if fmt in self.formats else ".flv"
file_name_pattern = '<meta name="title" content="(.+?)">'
name = re.search(file_name_pattern, html).group(1).replace("/", "")