projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[eporner] Make test only_matching
[youtube-dl]
/
youtube_dl
/
utils.py
diff --git
a/youtube_dl/utils.py
b/youtube_dl/utils.py
index 25a9f33c02ff1aae6e13688c97109bc128fabb56..d65f5e833a530e1e9bf3e254c8b5ec4e099088b2 100644
(file)
--- a/
youtube_dl/utils.py
+++ b/
youtube_dl/utils.py
@@
-883,12
+883,17
@@
def make_socks_conn_class(base_class, socks_proxy):
elif url_components.scheme.lower() == 'socks4a':
socks_type = ProxyType.SOCKS4A
elif url_components.scheme.lower() == 'socks4a':
socks_type = ProxyType.SOCKS4A
+ def unquote_if_non_empty(s):
+ if not s:
+ return s
+ return compat_urllib_parse_unquote_plus(s)
+
proxy_args = (
socks_type,
url_components.hostname, url_components.port or 1080,
True, # Remote DNS
proxy_args = (
socks_type,
url_components.hostname, url_components.port or 1080,
True, # Remote DNS
-
compat_urllib_parse_unquote_plus
(url_components.username),
-
compat_urllib_parse_unquote_plus
(url_components.password),
+
unquote_if_non_empty
(url_components.username),
+
unquote_if_non_empty
(url_components.password),
)
class SocksConnection(base_class):
)
class SocksConnection(base_class):
@@
-1050,7
+1055,10
@@
def unified_strdate(date_str, day_first=True):
if upload_date is None:
timetuple = email.utils.parsedate_tz(date_str)
if timetuple:
if upload_date is None:
timetuple = email.utils.parsedate_tz(date_str)
if timetuple:
- upload_date = datetime.datetime(*timetuple[:6]).strftime('%Y%m%d')
+ try:
+ upload_date = datetime.datetime(*timetuple[:6]).strftime('%Y%m%d')
+ except ValueError:
+ pass
if upload_date is not None:
return compat_str(upload_date)
if upload_date is not None:
return compat_str(upload_date)
@@
-1544,15
+1552,11
@@
def setproctitle(title):
def remove_start(s, start):
def remove_start(s, start):
- if s.startswith(start):
- return s[len(start):]
- return s
+ return s[len(start):] if s is not None and s.startswith(start) else s
def remove_end(s, end):
def remove_end(s, end):
- if s.endswith(end):
- return s[:-len(end)]
- return s
+ return s[:-len(end)] if s is not None and s.endswith(end) else s
def remove_quotes(s):
def remove_quotes(s):
@@
-1926,14
+1930,14
@@
def js_to_json(code):
}.get(m.group(0), m.group(0)), v[1:-1])
INTEGER_TABLE = (
}.get(m.group(0), m.group(0)), v[1:-1])
INTEGER_TABLE = (
- (r'^
(0[xX][0-9a-fA-F]+)
', 16),
- (r'^
(0+[0-7]+)
', 8),
+ (r'^
0[xX][0-9a-fA-F]+
', 16),
+ (r'^
0+[0-7]+
', 8),
)
for regex, base in INTEGER_TABLE:
im = re.match(regex, v)
if im:
)
for regex, base in INTEGER_TABLE:
im = re.match(regex, v)
if im:
- i = int(im.group(
1
), base)
+ i = int(im.group(
0
), base)
return '"%d":' % i if v.endswith(':') else '%d' % i
return '"%s"' % v
return '"%d":' % i if v.endswith(':') else '%d' % i
return '"%s"' % v
@@
-2031,11
+2035,7
@@
def mimetype2ext(mt):
def urlhandle_detect_ext(url_handle):
def urlhandle_detect_ext(url_handle):
- try:
- url_handle.headers
- getheader = lambda h: url_handle.headers[h]
- except AttributeError: # Python < 3
- getheader = url_handle.info().getheader
+ getheader = url_handle.headers.get
cd = getheader('Content-Disposition')
if cd:
cd = getheader('Content-Disposition')
if cd: