projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
release 2016.07.09.2
[youtube-dl]
/
youtube_dl
/
jsinterp.py
diff --git
a/youtube_dl/jsinterp.py
b/youtube_dl/jsinterp.py
index 4a5a0dbc3fca59e06a268e51c3a0161ede74db70..9737f70021d3285a4e8df616467b764de1a91fa2 100644
(file)
--- a/
youtube_dl/jsinterp.py
+++ b/
youtube_dl/jsinterp.py
@@
-131,8
+131,9
@@
class JSInterpreter(object):
if variable in local_vars:
obj = local_vars[variable]
else:
if variable in local_vars:
obj = local_vars[variable]
else:
- obj = self._objects.setdefault(
- variable, self.extract_object(variable))
+ if variable not in self._objects:
+ self._objects[variable] = self.extract_object(variable)
+ obj = self._objects[variable]
if arg_str is None:
# Member access
if arg_str is None:
# Member access
@@
-203,7
+204,8
@@
class JSInterpreter(object):
argvals = tuple([
int(v) if v.isdigit() else local_vars[v]
for v in m.group('args').split(',')])
argvals = tuple([
int(v) if v.isdigit() else local_vars[v]
for v in m.group('args').split(',')])
- self._functions.setdefault(fname, self.extract_function(fname))
+ if fname not in self._functions:
+ self._functions[fname] = self.extract_function(fname)
return self._functions[fname](argvals)
raise ExtractorError('Unsupported JS expression %r' % expr)
return self._functions[fname](argvals)
raise ExtractorError('Unsupported JS expression %r' % expr)
@@
-230,7
+232,7
@@
class JSInterpreter(object):
def extract_function(self, funcname):
func_m = re.search(
r'''(?x)
def extract_function(self, funcname):
func_m = re.search(
r'''(?x)
- (?:function\s+%s|[{;,]%s\s*=\s*function|var\s+%s\s*=\s*function)\s*
+ (?:function\s+%s|[{;,]
\s*
%s\s*=\s*function|var\s+%s\s*=\s*function)\s*
\((?P<args>[^)]*)\)\s*
\{(?P<code>[^}]+)\}''' % (
re.escape(funcname), re.escape(funcname), re.escape(funcname)),
\((?P<args>[^)]*)\)\s*
\{(?P<code>[^}]+)\}''' % (
re.escape(funcname), re.escape(funcname), re.escape(funcname)),