Пример #1
0
    def __init__(self):
        LOG.debug("JellyfinClient initializing...")

        self.config = Config()
        self.http = HTTP(self)
        self.wsc = WSClient(self)
        self.auth = ConnectionManager(self)
        self.jellyfin = api.API(self.http)
        self.callback_ws = callback
        self.callback = callback
Пример #2
0
def run_server():
    global running
    global queue
    sem.acquire()
    if running:
        print "Task already running!"
        sem.release()
        return

    app.control.purge()
    queue = Queue()
    running = True
    sem.release()

    pool = Pool()
    udp_server = AsyncUDPServer('', 6060, pool=pool)
    osc_message_parser = OSCMessageParser(pool=pool)
    connection_manager = ConnectionManager(pool=pool)

    udp_server.msg_handler = osc_message_parser.add_message
    osc_message_parser.device_msg_handler = connection_manager.send_osc_message

    udp_server.start()
    osc_message_parser.start()
    connection_manager.start()

    while running:
        try:
            msg = queue.get(timeout=1)
        except gevent.queue.Empty:
            continue
        if msg == "STOP":
            print "Received STOP"
            break
        if msg['type'] is "UP":
            connection_manager.update(msg['device'])
        if msg['type'] is "DEL":
            connection_manager.delete(msg['device'])

    udp_server.stop()
    osc_message_parser.stop()
    connection_manager.stop()

    pool.join()
Пример #3
0
class JellyfinClient(object):

    logged_in = False

    def __init__(self):
        LOG.debug("JellyfinClient initializing...")

        self.config = Config()
        self.http = HTTP(self)
        self.wsc = WSClient(self)
        self.auth = ConnectionManager(self)
        self.jellyfin = api.API(self.http)
        self.callback_ws = callback
        self.callback = callback

    def set_credentials(self, credentials=None):
        self.auth.credentials.set_credentials(credentials or {})

    def get_credentials(self):
        return self.auth.credentials.get_credentials()

    def authenticate(self, credentials=None, options=None):

        self.set_credentials(credentials or {})
        state = self.auth.connect(options or {})

        if state['State'] == CONNECTION_STATE['SignedIn']:

            LOG.info("User is authenticated.")
            self.logged_in = True
            self.callback("ServerOnline", {'Id': self.auth.server_id})

        state['Credentials'] = self.get_credentials()

        return state

    def start(self, websocket=False, keep_alive=True):

        if not self.logged_in:
            raise ValueError("User is not authenticated.")

        self.http.start_session()

        if keep_alive:
            self.http.keep_alive = True

        if websocket:
            self.start_wsc()

    def start_wsc(self):
        self.wsc.start()

    def stop(self):

        self.wsc.stop_client()
        self.http.stop_session()
Пример #4
0
def run_server():
    global running
    global queue
    sem.acquire()
    if running:
        print "Task already running!"
        sem.release()
        return

    app.control.purge()
    queue = Queue()
    running = True
    sem.release()

    pool = Pool()
    udp_server = AsyncUDPServer('', 6060, pool=pool)
    osc_message_parser = OSCMessageParser(pool=pool)
    connection_manager = ConnectionManager(pool=pool)

    udp_server.msg_handler = osc_message_parser.add_message
    osc_message_parser.device_msg_handler = connection_manager.send_osc_message

    udp_server.start()
    osc_message_parser.start()
    connection_manager.start()

    while running:
        try:
            msg = queue.get(timeout=1)
        except gevent.queue.Empty:
            continue
        if msg == "STOP":
            print "Received STOP"
            break
        if msg['type'] is "UP":
            connection_manager.update(msg['device'])
        if msg['type'] is "DEL":
            connection_manager.delete(msg['device'])

    udp_server.stop()
    osc_message_parser.stop()
    connection_manager.stop()

    pool.join()
Пример #5
0
class EmbyClient(object):

    logged_in = False

    def __init__(self):
        LOG.debug("EmbyClient initializing...")

        self.config = Config()
        self.http = HTTP(self)
        self.wsc = WSClient(self)
        self.auth = ConnectionManager(self)
        self.emby = api.API(self.http)
        self.callback_ws = callback
        self.callback = callback

    def set_credentials(self, credentials=None):
        self.auth.credentials.set_credentials(credentials or {})

    def get_credentials(self):
        return self.auth.credentials.get_credentials()

    def authenticate(self, credentials=None, options=None):

        self.set_credentials(credentials or {})
        state = self.auth.connect(options or {})

        if state['State'] == CONNECTION_STATE['SignedIn']:

            LOG.info("User is authenticated.")
            self.logged_in = True
            self.callback("ServerOnline", {'Id': self['auth/server-id']})

        state['Credentials'] = self.get_credentials()

        return state

    def start(self, websocket=False, keep_alive=True):

        if not self.logged_in:
            raise ValueError("User is not authenticated.")

        self.http.start_session()

        if keep_alive:
            self.http.keep_alive = True

        if websocket:
            self.start_wsc()

    def start_wsc(self):
        self.wsc.start()

    def stop(self):

        self.wsc.stop_client()
        self.http.stop_session()

    def __getitem__(self, key):

        if key.startswith('config'):
            return self.config[key.replace('config/', "", 1)] if "/" in key else self.config

        elif key.startswith('http'):
            return self.http.__shortcuts__(key.replace('http/', "", 1))

        elif key.startswith('websocket'):
            return self.wsc.__shortcuts__(key.replace('websocket/', "", 1))

        elif key.startswith('callback'):
            return self.callback_ws if 'ws' in key else self.callback

        elif key.startswith('auth'):
            return self.auth.__shortcuts__(key.replace('auth/', "", 1))

        elif key.startswith('api'):
            return self.emby

        elif key == 'connected':
            return self.logged_in

        return