projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
a0f59cd
)
[swfinterp] Allow function patching
author
Philipp Hagemeister
<phihag@phihag.de>
Mon, 17 Nov 2014 00:27:15 +0000
(
01:27
+0100)
committer
Philipp Hagemeister
<phihag@phihag.de>
Mon, 17 Nov 2014 00:27:15 +0000
(
01:27
+0100)
youtube_dl/swfinterp.py
patch
|
blob
|
history
diff --git
a/youtube_dl/swfinterp.py
b/youtube_dl/swfinterp.py
index b63c65b201ec2b34c6482e8526694431041f75fe..e5deb2c14df30c259b742ac73c2a765d94b56207 100644
(file)
--- a/
youtube_dl/swfinterp.py
+++ b/
youtube_dl/swfinterp.py
@@
-150,6
+150,7
@@
def _read_byte(reader):
class SWFInterpreter(object):
def __init__(self, file_contents):
class SWFInterpreter(object):
def __init__(self, file_contents):
+ self._patched_functions = {}
code_tag = next(tag
for tag_code, tag in _extract_tags(file_contents)
if tag_code == 82)
code_tag = next(tag
for tag_code, tag in _extract_tags(file_contents)
if tag_code == 82)
@@
-354,6
+355,9
@@
class SWFInterpreter(object):
assert p + code_reader.tell() == len(code_tag)
assert p + code_reader.tell() == len(code_tag)
+ def patch_function(self, avm_class, func_name, f):
+ self._patched_functions[(avm_class, func_name)] = f
+
def extract_class(self, class_name):
try:
return self._classes_by_name[class_name]
def extract_class(self, class_name):
try:
return self._classes_by_name[class_name]
@@
-361,6
+365,9
@@
class SWFInterpreter(object):
raise ExtractorError('Class %r not found' % class_name)
def extract_function(self, avm_class, func_name):
raise ExtractorError('Class %r not found' % class_name)
def extract_function(self, avm_class, func_name):
+ p = self._patched_functions.get((avm_class, func_name))
+ if p:
+ return p
if func_name in avm_class.method_pyfunctions:
return avm_class.method_pyfunctions[func_name]
if func_name in self._classes_by_name:
if func_name in avm_class.method_pyfunctions:
return avm_class.method_pyfunctions[func_name]
if func_name in self._classes_by_name: