Ejemplo n.º 1
0
    def get_rows(self):
        try:
            return self._cursor.execute(''.join(self._select_movies))

        except sqlite3.DatabaseError as de:
            LOG.debug(de.message)
            raise PlexCleanerException("Unabled to fetch database rows {0}".format(de.message), severity=logging.ERROR)
Ejemplo n.º 2
0
def copy_jacket(src, dst, skip):
    try:
        if os.path.isfile(dst) and skip:
            LOG.debug("Jacket '{0}' already exist, skip.".format(dst))
            return False

        shutil.copy(src, dst)
        return True

    except (IOError, OSError) as oe:
        log_error(oe.errno, dst)
        return False
Ejemplo n.º 3
0
def copy_jacket(src, dst, skip):
    try:
        if os.path.isfile(dst) and skip:
            LOG.debug("Jacket '{0}' already exist, skip.".format(dst))
            return False

        shutil.copy(src, dst)
        return True

    except (IOError, OSError) as oe:
        log_error(oe.errno, dst)
        return False
Ejemplo n.º 4
0
def create_dir(dst):
    try:
        LOG.debug("Creating directory '{0}'.".format(dst))
        os.mkdir(dst)

        return True

    except OSError as e:
        if e.errno == errno.EEXIST:
            LOG.debug("Directory '{0}' already exist.".format(dst))
            return False

        raise PlexCleanerException("Unable to create directory '{0}' check permissions".format(dst),
                                   severity=logging.ERROR)
Ejemplo n.º 5
0
def move_media(src, dst, interrupt=False):
    try:
        LOG.debug(u"Copy file '{0}' to '{1}'".format(src, dst))
        if os.path.isfile(dst):
            LOG.debug(u"File '{0}' already exist, will override if not the same file.".format(src))

        shutil.move(src, dst)
        return True

    except (IOError, OSError) as oe:
        log_error(oe.errno, dst)

        if interrupt:
            raise PlexCleanerException('Media movie move error occurred (file missing)', severity=logging.CRITICAL)
Ejemplo n.º 6
0
def create_dir(dst):
    try:
        LOG.debug("Creating directory '{0}'.".format(dst))
        os.mkdir(dst)

        return True

    except OSError as e:
        if e.errno == errno.EEXIST:
            LOG.debug("Directory '{0}' already exist.".format(dst))
            return False

        raise PlexCleanerException(
            "Unable to create directory '{0}' check permissions".format(dst),
            severity=logging.ERROR)
Ejemplo n.º 7
0
def move_media(src, dst, interrupt=False):
    try:
        LOG.debug(u"Copy file '{0}' to '{1}'".format(src, dst))
        if os.path.isfile(dst):
            LOG.debug(
                u"File '{0}' already exist, will override if not the same file."
                .format(src))

        shutil.move(src, dst)
        return True

    except (IOError, OSError) as oe:
        log_error(oe.errno, dst)

        if interrupt:
            raise PlexCleanerException(
                'Media movie move error occurred (file missing)',
                severity=logging.CRITICAL)
Ejemplo n.º 8
0
    def __init__(self, metadata_home='/var/lib/plexmediaserver',
                 database_override=None, database_name='com.plexapp.plugins.library.db'):

        sqlite = sqlite3.sqlite_version_info[:2]
        if sqlite < (3, 7):
            raise PlexCleanerException("SQLite bindings are not up to date "
                                       "(requires 3.7 current is {0}.{1})".format(*sqlite), severity=logging.ERROR)

        db = os.path.join(metadata_home, self._database_path, database_name)
        try:
            if database_override:
                db = database_override
                LOG.debug("User database override {0}".format(db))

            LOG.info("Reading Plex database located at {0}".format(db))
            self.filename = db
            self._connection = sqlite3.connect(db)
            self._cursor = self._connection.cursor()
            self._cursor.execute('ANALYZE')

        except sqlite3.OperationalError as oe:
            LOG.debug(oe)
            raise PlexCleanerException('Could not connect to Plex database', severity=logging.ERROR)

        except sqlite3.DatabaseError as de:
            LOG.debug(de.message)
            raise PlexCleanerException('Could not open Plex database (check permissions)', severity=logging.ERROR)
Ejemplo n.º 9
0
def update_database(db, m):
    filename = m.get_correct_absolute_file()
    db.update_row(m.mid, filename)
    LOG.debug("Updating movie '{0}' with path '{1}'".format(m.correct_title, filename))
    return True
Ejemplo n.º 10
0
def update_database(db, m):
    filename = m.get_correct_absolute_file()
    db.update_row(m.mid, filename)
    LOG.debug("Updating movie '{0}' with path '{1}'".format(
        m.correct_title, filename))
    return True
Ejemplo n.º 11
0
 def rollback(self):
     LOG.debug('Rollback last changes to database.')
     self._connection.rollback()
     self._uncommited = False
Ejemplo n.º 12
0
 def commit(self):
     LOG.debug('Commiting last changes to database.')
     self._connection.commit()
     self._uncommited = False
Ejemplo n.º 13
0
 def update_many_row(self, values):
     LOG.debug("Updating {0} movies".format(len(values)))
     self._cursor.executemany(self._update_movie, values)
     self._uncommited = True
Ejemplo n.º 14
0
 def update_row(self, mid, value):
     LOG.debug("Updating movie '{0}' with '{1}'".format(mid, value))
     self._cursor.execute(self._update_movie, (value, mid))
     self._uncommited = True