astrXbian/.install/.kodi/addons/plugin.video.youtube/resources/lib/youtube_plugin/youtube/helper/signature/json_script_engine.py

72 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
"""
Copyright (C) 2014-2016 bromix (plugin.video.youtube)
Copyright (C) 2016-2018 plugin.video.youtube
SPDX-License-Identifier: GPL-2.0-only
See LICENSES/GPL-2.0-only for more information.
"""
from six.moves import range
class JsonScriptEngine(object):
def __init__(self, json_script):
self._json_script = json_script
def execute(self, signature):
_signature = signature
_actions = self._json_script['actions']
for action in _actions:
func = ''.join(['_', action['func']])
params = action['params']
if func == '_return':
break
for i in range(len(params)):
param = params[i]
if param == '%SIG%':
param = _signature
params[i] = param
break
method = getattr(self, func)
if method:
_signature = method(*params)
else:
raise Exception("Unknown method '%s'" % func)
return _signature
@staticmethod
def _join(signature):
return ''.join(signature)
@staticmethod
def _list(signature):
return list(signature)
@staticmethod
def _slice(signature, b):
del signature[b:]
return signature
@staticmethod
def _splice(signature, a, b):
del signature[a:b]
return signature
@staticmethod
def _reverse(signature):
return signature[::-1]
@staticmethod
def _swap(signature, b):
c = signature[0]
signature[0] = signature[b % len(signature)]
signature[b] = c
return signature