From 1401f9ad978ea8112299af13fcf7f6df9b9029ed Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Fri, 6 Nov 2015 03:47:06 +0100 Subject: [PATCH] [youtube] fix #749 --- src/you_get/extractors/youtube.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/you_get/extractors/youtube.py b/src/you_get/extractors/youtube.py index 71051027..a68343c5 100644 --- a/src/you_get/extractors/youtube.py +++ b/src/you_get/extractors/youtube.py @@ -39,6 +39,7 @@ class YouTube(VideoExtractor): def decipher(js, s): def tr_js(code): code = re.sub(r'function', r'def', code) + code = re.sub(r'(\W)(as|if|in|is|or)\(', r'\1_\2(', code) code = re.sub(r'\$', '_dollar', code) code = re.sub(r'\{', r':\n\t', code) code = re.sub(r'\}', r'\n', code) @@ -63,10 +64,13 @@ class YouTube(VideoExtractor): else: f2def = re.search(r'[^$\w]%s:function\((\w+)\)(\{[^\{\}]+\})' % f2e, js) f2def = 'function {}({},b){}'.format(f2e, f2def.group(1), f2def.group(2)) + f2 = re.sub(r'(\W)(as|if|in|is|or)\(', r'\1_\2(', f2) f2 = re.sub(r'\$', '_dollar', f2) code = code + 'global %s\n' % f2 + tr_js(f2def) - code = code + 'sig=%s(s)' % re.sub(r'\$', '_dollar', f1) + f1 = re.sub(r'(as|if|in|is|or)', r'_\1', f1) + f1 = re.sub(r'\$', '_dollar', f1) + code = code + 'sig=%s(s)' % f1 exec(code, globals(), locals()) return locals()['sig']