Exemple #1
0
    def directory(self, path):
        directory = None
        if os.path.isdir(path):
            self.log_and_output('Processing path: {path}', **{'path': path})
            directory = os.path.realpath(path)

        elif os.path.isfile(path):
            self.log_and_output('Processing path: {path} as a single file', **{'path': path})
            directory = os.path.realpath(path)

        # If the client and the application are not on the same machine,
        # translate the directory into a network directory
        elif all([app.TV_DOWNLOAD_DIR, os.path.isdir(app.TV_DOWNLOAD_DIR),
                  helpers.real_path(path) == helpers.real_path(app.TV_DOWNLOAD_DIR)]):
            directory = os.path.join(
                app.TV_DOWNLOAD_DIR,
                os.path.abspath(path).split(os.path.sep)[-1]
            )
            self.log_and_output('Trying to use folder: {directory}', level=logging.DEBUG, **{'directory': directory})
        else:
            self.log_and_output(
                'Unable to figure out what folder to process.'
                " If your download client and Medusa aren't on the same"
                ' machine, make sure to fill out the Post Processing Dir'
                ' field in the config.', level=logging.WARNING
            )
        setattr(self, '_directory', directory)
Exemple #2
0
    def delete_folder(folder, check_empty=True):
        """
        Remove a folder from the filesystem.

        :param folder: Path to folder to remove
        :param check_empty: Boolean, check if the folder is empty before removing it, defaults to True
        :return: True on success, False on failure
        """
        # check if it's a folder
        if not folder or not os.path.isdir(folder):
            return False

        # check if it's a protected folder
        if helpers.real_path(folder) in (helpers.real_path(
                app.TV_DOWNLOAD_DIR), helpers.real_path(
                    app.DEFAULT_CLIENT_PATH),
                                         helpers.real_path(app.TORRENT_PATH)):
            return False

        # check if it's empty folder when wanted checked
        if check_empty:
            check_files = os.listdir(folder)
            if check_files:
                log.info(
                    'Not deleting folder {folder} found the following files: {check_files}',
                    {
                        'folder': folder,
                        'check_files': check_files
                    })
                return False

            try:
                log.info("Deleting folder (if it's empty): {folder}",
                         {'folder': folder})
                os.rmdir(folder)
            except (OSError, IOError) as error:
                log.warning('Unable to delete folder: {folder}: {error}', {
                    'folder': folder,
                    'error': ex(error)
                })
                return False
        else:
            try:
                log.info('Deleting folder: {folder}', {'folder': folder})
                shutil.rmtree(folder)
            except (OSError, IOError) as error:
                log.warning('Unable to delete folder: {folder}: {error}', {
                    'folder': folder,
                    'error': ex(error)
                })
                return False

        return True
Exemple #3
0
    def delete_folder(folder, check_empty=True):
        """
        Remove a folder from the filesystem.

        :param folder: Path to folder to remove
        :param check_empty: Boolean, check if the folder is empty before removing it, defaults to True
        :return: True on success, False on failure
        """
        # check if it's a folder
        if not os.path.isdir(folder):
            return False

        # check if it isn't TV_DOWNLOAD_DIR
        if app.TV_DOWNLOAD_DIR:
            if helpers.real_path(folder) == helpers.real_path(
                    app.TV_DOWNLOAD_DIR):
                return False

        # check if it's empty folder when wanted checked
        if check_empty:
            check_files = os.listdir(folder)
            if check_files:
                logger.log(
                    'Not deleting folder {0} found the following files: {1}'.
                    format(folder, check_files), logger.INFO)
                return False

            try:
                logger.log(
                    "Deleting folder (if it's empty): {0}".format(folder))
                os.rmdir(folder)
            except (OSError, IOError) as error:
                logger.log(
                    'Unable to delete folder: {0}: {1}'.format(
                        folder, ex(error)), logger.WARNING)
                return False
        else:
            try:
                logger.log('Deleting folder: {0}'.format(folder))
                shutil.rmtree(folder)
            except (OSError, IOError) as error:
                logger.log(
                    'Unable to delete folder: {0}: {1}'.format(
                        folder, ex(error)), logger.WARNING)
                return False

        return True
Exemple #4
0
    def delete_folder(folder, check_empty=True):
        """
        Remove a folder from the filesystem.

        :param folder: Path to folder to remove
        :param check_empty: Boolean, check if the folder is empty before removing it, defaults to True
        :return: True on success, False on failure
        """
        # check if it's a folder
        if not os.path.isdir(folder):
            return False

        # check if it isn't TV_DOWNLOAD_DIR
        if app.TV_DOWNLOAD_DIR:
            if helpers.real_path(folder) == helpers.real_path(app.TV_DOWNLOAD_DIR):
                return False

        # check if it's empty folder when wanted checked
        if check_empty:
            check_files = os.listdir(folder)
            if check_files:
                logger.log('Not deleting folder {0} found the following files: {1}'.format
                           (folder, check_files), logger.INFO)
                return False

            try:
                logger.log("Deleting folder (if it's empty): {0}".format(folder))
                os.rmdir(folder)
            except (OSError, IOError) as error:
                logger.log('Unable to delete folder: {0}: {1}'.format(folder, ex(error)), logger.WARNING)
                return False
        else:
            try:
                logger.log('Deleting folder: {0}'.format(folder))
                shutil.rmtree(folder)
            except (OSError, IOError) as error:
                logger.log('Unable to delete folder: {0}: {1}'.format(folder, ex(error)), logger.WARNING)
                return False

        return True