OverviewFilesCommitsIssuesDocsReleasesPeers

kodi-jacktook / plugin.video.jacktook / lib / jacktook / utils.py

61 lines · python ref:
import json

import xbmc
import xbmcaddon


def kodilog(message, level=xbmc.LOGINFO):
    xbmc.log("[###JACKTOOKLOG###] " + str(message), level)


ADDON = xbmcaddon.Addon()
ADDON_PATH = ADDON.getAddonInfo("path")
ADDON_ID = ADDON.getAddonInfo("id")
ADDON_VERSION = ADDON.getAddonInfo("version")
ADDON_NAME = ADDON.getAddonInfo("name")


def get_installed_addons(addon_type="", content="unknown", enabled="all"):
    data = execute_json_rpc("Addons.GetAddons", type=addon_type, content=content, enabled=enabled)
    addons = data["result"].get("addons")
    return [(a["addonid"], a["type"]) for a in addons] if addons else []


def notify_all(sender, message, data=None):
    params = {"sender": sender, "message": message}
    if data is not None:
        params["data"] = data
    return execute_json_rpc("JSONRPC.NotifyAll", **params).get("result") == "OK"


def run_script(script_id, *args):
    xbmc.executebuiltin("RunScript({})".format(",".join((script_id, *args))))


def execute_json_rpc(method, rpc_version="2.0", rpc_id=1, **params):
    return json.loads(
        xbmc.executeJSONRPC(
            json.dumps(dict(jsonrpc=rpc_version, method=method, params=params, id=rpc_id))
        )
    )


class ResolveTimeoutError(Exception):
    pass


class NoProvidersError(Exception):
    pass


def assure_str(s):
    return s


def str_to_bytes(s):
    return s.encode()


def bytes_to_str(b):
    return b.decode()