mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-12-14 19:13:17 +00:00
Change emby to jellyfin in functions, variables etc.
This commit is contained in:
parent
647636430f
commit
233192863a
39 changed files with 273 additions and 278 deletions
126
resources/lib/jellyfin/__init__.py
Normal file
126
resources/lib/jellyfin/__init__.py
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
#################################################################################################
|
||||
|
||||
import logging
|
||||
|
||||
from client import JellyfinClient
|
||||
from helpers import has_attribute
|
||||
|
||||
#################################################################################################
|
||||
|
||||
class NullHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
print(self.format(record))
|
||||
|
||||
loghandler = NullHandler
|
||||
LOG = logging.getLogger('Jellyfin')
|
||||
|
||||
#################################################################################################
|
||||
|
||||
def config(level=logging.INFO):
|
||||
|
||||
logger = logging.getLogger('Jellyfin')
|
||||
logger.addHandler(Jellyfin.loghandler())
|
||||
logger.setLevel(level)
|
||||
|
||||
def ensure_client():
|
||||
|
||||
def decorator(func):
|
||||
def wrapper(self, *args, **kwargs):
|
||||
|
||||
if self.client.get(self.server_id) is None:
|
||||
self.construct()
|
||||
|
||||
return func(self, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
return decorator
|
||||
|
||||
|
||||
class Jellyfin(object):
|
||||
|
||||
''' This is your Jellyfinclient, you can create more than one. The server_id is only a temporary thing
|
||||
to communicate with the JellyfinClient().
|
||||
|
||||
from jellyfin import Jellyfin
|
||||
|
||||
Jellyfin('123456')['config/app']
|
||||
|
||||
# Permanent client reference
|
||||
client = Jellyfin('123456').get_client()
|
||||
client['config/app']
|
||||
'''
|
||||
|
||||
# Borg - multiple instances, shared state
|
||||
_shared_state = {}
|
||||
client = {}
|
||||
server_id = "default"
|
||||
loghandler = loghandler
|
||||
|
||||
def __init__(self, server_id=None):
|
||||
self.__dict__ = self._shared_state
|
||||
self.server_id = server_id or "default"
|
||||
|
||||
def get_client(self):
|
||||
return self.client[self.server_id]
|
||||
|
||||
@classmethod
|
||||
def set_loghandler(cls, func=loghandler, level=logging.INFO):
|
||||
|
||||
for handler in logging.getLogger('Jellyfin').handlers:
|
||||
if isinstance(handler, cls.loghandler):
|
||||
logging.getLogger('Jellyfin').removeHandler(handler)
|
||||
|
||||
cls.loghandler = func
|
||||
config(level)
|
||||
|
||||
def close(self):
|
||||
|
||||
if self.server_id not in self.client:
|
||||
return
|
||||
|
||||
self.client[self.server_id].stop()
|
||||
self.client.pop(self.server_id, None)
|
||||
|
||||
LOG.info("---[ STOPPED JELLYFINCLIENT: %s ]---", self.server_id)
|
||||
|
||||
@classmethod
|
||||
def close_all(cls):
|
||||
|
||||
for client in cls.client:
|
||||
cls.client[client].stop()
|
||||
|
||||
cls.client = {}
|
||||
LOG.info("---[ STOPPED ALL JELLYFINCLIENTS ]---")
|
||||
|
||||
@classmethod
|
||||
def get_active_clients(cls):
|
||||
return cls.client
|
||||
|
||||
@ensure_client()
|
||||
def __setattr__(self, name, value):
|
||||
|
||||
if has_attribute(self, name):
|
||||
return super(Jellyfin, self).__setattr__(name, value)
|
||||
|
||||
setattr(self.client[self.server_id], name, value)
|
||||
|
||||
@ensure_client()
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.client[self.server_id], name)
|
||||
|
||||
@ensure_client()
|
||||
def __getitem__(self, key):
|
||||
return self.client[self.server_id][key]
|
||||
|
||||
def construct(self):
|
||||
|
||||
self.client[self.server_id] = JellyfinClient()
|
||||
|
||||
if self.server_id == 'default':
|
||||
LOG.info("---[ START JELLYFINCLIENT ]---")
|
||||
else:
|
||||
LOG.info("---[ START JELLYFINCLIENT: %s ]---", self.server_id)
|
||||
|
||||
config()
|
||||
Loading…
Add table
Add a link
Reference in a new issue