fix youtube KeyError

This commit is contained in:
thomasgenster 2014-07-15 21:39:58 +02:00
parent bd1f325b42
commit f16e48ae44

View File

@ -45,6 +45,23 @@ class JSInterpreter(object):
v = self.interpret_expression(expr, local_vars, allow_recursion) v = self.interpret_expression(expr, local_vars, allow_recursion)
return assign(v) return assign(v)
def XG(self, list, desiredNonCommentArgIndex):
file = list[0]
v = int(desiredNonCommentArgIndex) % int(len(list))
list[0] = list[int(v)]
list[int(desiredNonCommentArgIndex)] = file
return list
def NZ(self, suite):
return suite[::-1]
def PL(self, curr, _part):
return curr[int(_part):]
def fo(self, curr):
curr = curr.split("")
def interpret_expression(self, expr, local_vars, allow_recursion): def interpret_expression(self, expr, local_vars, allow_recursion):
if expr.isdigit(): if expr.isdigit():
return int(expr) return int(expr)
@ -55,7 +72,20 @@ class JSInterpreter(object):
m = re.match(r'^(?P<in>[a-z]+)\.(?P<member>.*)$', expr) m = re.match(r'^(?P<in>[a-z]+)\.(?P<member>.*)$', expr)
if m: if m:
member = m.group('member') member = m.group('member')
val = local_vars[m.group('in')] if m.group('in') == u'fo':
val = local_vars[u'a']
le = re.match(r'^(?P<function>[A-Z]+)\([a]\,(?P<num>.*)\)$', member)
f = le.group('function')
n = le.group('num')
if f == 'XG':
return self.XG(val, n)
elif f == 'NZ':
return self.NZ(val)
elif f == 'PL':
return self.PL(val, n)
else:
val = local_vars[m.group('in')]
if member == 'split("")': if member == 'split("")':
return list(val) return list(val)
if member == 'join("")': if member == 'join("")':
@ -64,6 +94,7 @@ class JSInterpreter(object):
return len(val) return len(val)
if member == 'reverse()': if member == 'reverse()':
return val[::-1] return val[::-1]
slice_m = re.match(r'slice\((?P<idx>.*)\)', member) slice_m = re.match(r'slice\((?P<idx>.*)\)', member)
if slice_m: if slice_m:
idx = self.interpret_expression( idx = self.interpret_expression(