Example #1
0
def rename_files(files, rule_set, use_path=False, use_extension=False, on_progress=None, check_abort=None):
    progress_tracker = ProgressTracker(on_progress)

    assert check_abort is None or is_callable(check_abort)

    progress_tracker.report_more_total(len(files))
    renamed_files = []

    for file_ref in files:
        if check_abort is not None and check_abort():
            raise RenameFilesAbortedError()

        renamed_files.append(
            _rename_file(
                file_ref,
                rule_set,
                use_path=use_path,
                use_extension=use_extension,
            )
        )
        progress_tracker.report_more_done(1)

    _verify_renamed_files(renamed_files)

    return renamed_files
Example #2
0
def scan_files(base_path, recursive=True, on_progress=None, check_abort=None):
    progress_tracker = ProgressTracker(on_progress)

    assert check_abort is None or is_callable(check_abort)

    progress_tracker.report_more_total(1)

    _do_base_path_checks(base_path)

    scan_queue = deque([BAONPath(base_path)])
    files = []

    while len(scan_queue) > 0:
        if check_abort is not None and check_abort():
            raise ScanFilesAbortedError()

        path = scan_queue.popleft()
        file_ref = _scan_single_entry(path)

        directory_opened = False
        if file_ref.is_dir and not file_ref.is_link and (recursive or path.is_root()):
            try:
                files_in_dir = os.listdir(path.real_path())
                scan_queue.extend(path.extend(name) for name in files_in_dir)
                progress_tracker.report_more_total(len(files_in_dir))
                directory_opened = True
            except OSError as e:
                file_ref.problems.append(CannotExploreDirectoryError(inner_error=e))

        if not directory_opened:
            files.append(file_ref)

        progress_tracker.report_more_done(1)

    return sorted(files)
Example #3
0
    def __init__(self, on_progress=None):
        self._last_reported_done = 0
        self._last_reported_total = 0

        if on_progress is not None:
            assert is_callable(on_progress)
            self._on_progress = on_progress