コード例 #1
0
def loginToPlex(username=None, password=None):
    global user
    if username is None:
        if not get_setting_value('myPlex_username') or not get_setting_value(
                'myPlex_password'):
            logger.log('Plex :: Missing Plex Credentials in db', 'INFO')
            return False
        else:
            username = get_setting_value('myPlex_username')
            password = get_setting_value('myPlex_password')

    logger.log('Plex :: Logging into plex.tv', 'INFO')
    try:
        user = User(username, password)
        user, token = user.MyPlexSignIn()

        if user is '':
            logger.log('Plex :: Log in FAILED', 'ERROR')
            return False  # failed to sign in

        setting = get_setting('myPlex_token')
        if not setting:
            setting = Setting('myPlex_token')

        setting.value = token
        db_session.add(setting)
        db_session.commit()
        logger.log('Plex :: Log in successful', 'INFO')
        return True
    except:
        logger.log('Plex :: Log in FAILED', 'ERROR')
        return False
コード例 #2
0
ファイル: library.py プロジェクト: hephaestus9/Ironworks
def init_xbmc_media_settings():
    '''
    If library settings are not in
    database, add them with default value.
    '''
    for setting in library_settings:
        for s in library_settings[setting]:
            if get_setting(s['key']) == None:
                new_setting = Setting(key=s['key'], value=s['value'])
                db_session.add(new_setting)
    db_session.commit()

    return
コード例 #3
0
def json_login():
    if not loginToPlex():
        return jsonify(
            success=False,
            msg=
            'Failed to login to plex.tv, plese make sure this is a valid username/password.'
        )

    # Delete info for previous accounts
    try:
        PlexServer.query.delete()
    except:
        logger.log('Plex :: Failed to delete old server info', 'WARNING')

    # Populate servers for new user
    if not getServers():
        return jsonify(
            success=False,
            msg=
            'Failed to retrieve server information from https://plex.tv/pms/servers.'
        )

    # Set active server to 0 (no server selected)
    try:
        active_server = get_setting('active_server')

        if not active_server:
            active_server = Setting('active_server', 0)
            db_session.add(active_server)
            db_session.commit()

        else:
            active_server.value = 0
            db_session.add(active_server)
            db_session.commit()

    except:
        logger.log(
            'Plex :: Failed to reset server, please make sure to select new one.',
            'WARNING')

    # return a list of (server name, server id)
    return jsonify(success=True, servers=listServers())
コード例 #4
0
def switch_server(server_id=None):
    """
    Switches Plex servers manually.
    """
    try:
        active_server = get_setting('active_server')

        if not active_server:
            active_server = Setting('active_server', 0)
            db_session.add(active_server)
            db_session.commit()

        server = PlexServer.query.filter(PlexServer.id == server_id).first()
        if server:
            active_server.value = server_id
            db_session.add(active_server)
            db_session.commit()
            logger.log('Switched active server to ID %s' % server_id, 'INFO')
            try:
                status, msg = plex_update_sections(server_id)
                if not status:
                    logger.log('Plex :: %s' % msg, 'ERROR')
            except Exception as e:
                return jsonify(
                    success=False,
                    msg='Failed to reach server, please check log for details.'
                )
        else:
            logger.log(
                'Switching server prevented, server ID %s does not exist in db'
                % server_id, 'INFO')

    except Exception as e:
        logger.log('Error setting active server to ID %s: %s' % (server_id, e),
                   'WARNING')
        return jsonify(success=False)

    return jsonify(success=True)
コード例 #5
0
def server_settings():
    """Get settings for active XBMC server instance"""

    # query all configured XBMC servers from the db
    servers = XbmcServer.query.order_by(XbmcServer.position)

    if servers.count() == 0:
        return {
            'hostname': None,
            'port': None,
            'username': None,
            'password': None,
        }

    active_server = get_setting_value('active_server')

    # if active server is not defined, set it

    if not active_server:
        active_server = Setting('active_server', servers.first().id)
        db_session.add(active_server)
        db_session.commit()

    try:
        server = servers.get(active_server)

    except:
        logger.log('Could not retrieve active server, falling back on first entry' , 'WARNING')
        server = servers.first()

    return {
        'hostname': server.hostname,
        'port': server.port,
        'username': server.username,
        'password': server.password,
        'mac_address': server.mac_address,
    }
コード例 #6
0
def tutorial_save():
    global user, servers
    # save login and password on db
    try:
        settings = json.JSONDecoder().decode(request.form['settings'])
        for s in settings:
            setting = get_setting(s['name'])

            if not setting:
                setting = Setting(s['name'])

            setting.value = s['value']
            db_session.add(setting)
        db_session.commit()
        logger.log('Plex :: Successfully saved Plex credentials', 'INFO')
    except:
        return jsonify(success=False,
                       msg='Failed to save plex credentials to db')

    # Delete info for previous accounts
    try:
        PlexServer.query.delete()
    except:
        logger.log('Plex :: Failed to delete old server info', 'WARNING')

    try:
        if loginToPlex():  # login to plex
            servers = getServers()
            if servers:  # retrieve servers
                return jsonify(success=True, servers=listServers())
            else:
                return jsonify(sucess=False, msg='Failed to retrieve servers')
        else:
            return jsonify(sucess=False, msg='Failed to login to plex')
    except:
        return jsonify(success=False, msg='Servers not populated Successfully')