mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 18:26:15 +00:00
121 lines
3.5 KiB
Python
121 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import division, absolute_import, print_function, unicode_literals
|
|
|
|
#################################################################################################
|
|
|
|
import os
|
|
|
|
import xbmc
|
|
import xbmcaddon
|
|
import xbmcvfs
|
|
|
|
from .helper import translate, window, settings, addon_id, dialog, LazyLogger
|
|
from .helper.utils import create_id, translate_path
|
|
|
|
##################################################################################################
|
|
|
|
LOG = LazyLogger(__name__)
|
|
|
|
##################################################################################################
|
|
|
|
|
|
def get_addon_name():
|
|
"""Used for logging."""
|
|
return xbmcaddon.Addon(addon_id()).getAddonInfo("name").upper()
|
|
|
|
|
|
def get_version():
|
|
return xbmcaddon.Addon(addon_id()).getAddonInfo("version")
|
|
|
|
|
|
def get_platform():
|
|
|
|
if xbmc.getCondVisibility("system.platform.osx"):
|
|
return "OSX"
|
|
elif xbmc.getCondVisibility("System.HasAddon(service.coreelec.settings)"):
|
|
return "CoreElec"
|
|
elif xbmc.getCondVisibility("System.HasAddon(service.libreelec.settings)"):
|
|
return "LibreElec"
|
|
elif xbmc.getCondVisibility("System.HasAddon(service.osmc.settings)"):
|
|
return "OSMC"
|
|
elif xbmc.getCondVisibility("system.platform.atv2"):
|
|
return "ATV2"
|
|
elif xbmc.getCondVisibility("system.platform.ios"):
|
|
return "iOS"
|
|
elif xbmc.getCondVisibility("system.platform.windows"):
|
|
return "Windows"
|
|
elif xbmc.getCondVisibility("system.platform.android"):
|
|
return "Linux/Android"
|
|
elif xbmc.getCondVisibility("system.platform.linux.raspberrypi"):
|
|
return "Linux/RPi"
|
|
elif xbmc.getCondVisibility("system.platform.linux"):
|
|
return "Linux"
|
|
else:
|
|
return "Unknown"
|
|
|
|
|
|
def get_device_name():
|
|
"""Detect the device name. If deviceNameOpt, then
|
|
use the device name in the add-on settings.
|
|
Otherwise, fallback to the Kodi device name.
|
|
"""
|
|
if not settings("deviceNameOpt.bool"):
|
|
device_name = xbmc.getInfoLabel("System.FriendlyName")
|
|
else:
|
|
device_name = settings("deviceName")
|
|
device_name = device_name.replace('"', "_")
|
|
device_name = device_name.replace("/", "_")
|
|
|
|
return device_name
|
|
|
|
|
|
def get_device_id(reset=False):
|
|
"""Return the device_id if already loaded.
|
|
It will load from jellyfin_guid file. If it's a fresh
|
|
setup, it will generate a new GUID to uniquely
|
|
identify the setup for all users.
|
|
|
|
window prop: jellyfin_deviceId
|
|
"""
|
|
client_id = window("jellyfin_deviceId")
|
|
|
|
if client_id:
|
|
return client_id
|
|
|
|
directory = translate_path("special://profile/addon_data/plugin.video.jellyfin/")
|
|
|
|
if not xbmcvfs.exists(directory):
|
|
xbmcvfs.mkdir(directory)
|
|
|
|
jellyfin_guid = os.path.join(directory, "jellyfin_guid")
|
|
file_guid = xbmcvfs.File(jellyfin_guid)
|
|
client_id = file_guid.read()
|
|
|
|
if not client_id or reset:
|
|
LOG.debug("Generating a new GUID.")
|
|
|
|
client_id = str(create_id())
|
|
file_guid = xbmcvfs.File(jellyfin_guid, "w")
|
|
file_guid.write(client_id)
|
|
|
|
file_guid.close()
|
|
LOG.debug("DeviceId loaded: %s", client_id)
|
|
window("jellyfin_deviceId", value=client_id)
|
|
|
|
return client_id
|
|
|
|
|
|
def reset_device_id():
|
|
|
|
window("jellyfin_deviceId", clear=True)
|
|
get_device_id(True)
|
|
dialog("ok", "{jellyfin}", translate(33033))
|
|
xbmc.executebuiltin("RestartApp")
|
|
|
|
|
|
def get_info():
|
|
return {
|
|
"DeviceName": get_device_name(),
|
|
"Version": get_version(),
|
|
"DeviceId": get_device_id(),
|
|
}
|