astrXbian/.install/.kodi/addons/plugin.video.youtube/resources/lib/youtube_plugin/kodion/debug.py

59 lines
2.0 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.
"""
import os
import json
def debug_here(host='localhost'):
import sys
for comp in sys.path:
if comp.find('addons') != -1:
pydevd_path = os.path.normpath(os.path.join(comp, os.pardir, 'script.module.pydevd', 'lib'))
sys.path.append(pydevd_path)
break
# noinspection PyUnresolvedReferences,PyPackageRequirements
import pydevd
pydevd.settrace(host, stdoutToServer=True, stderrToServer=True)
def runtime(context, addon_version, elapsed, single_file=True):
if not single_file:
filename_path_part = context.get_path().lstrip('/').rstrip('/').replace('/', '_')
debug_file_name = 'runtime_%s-%s.json' % (filename_path_part, addon_version)
default_contents = {"runtimes": []}
else:
debug_file_name = 'runtime-%s.json' % addon_version
default_contents = {"runtimes": {}}
debug_file = os.path.join(context.get_debug_path(), debug_file_name)
with open(debug_file, 'a') as _:
pass # touch
with open(debug_file, 'r') as f:
contents = f.read()
with open(debug_file, 'w') as f:
if not contents:
contents = default_contents
else:
contents = json.loads(contents)
if not single_file:
items = contents.get('runtimes', [])
items.append({"path": context.get_path(), "parameters": context.get_params(), "runtime": round(elapsed, 4)})
contents['runtimes'] = items
else:
items = contents.get('runtimes', {}).get(context.get_path(), [])
items.append({"parameters": context.get_params(), "runtime": round(elapsed, 4)})
contents['runtimes'][context.get_path()] = items
f.write(json.dumps(contents, indent=4))