diff --git a/modules/scanner.py b/modules/scanner.py index a33a55f..1ff2286 100644 --- a/modules/scanner.py +++ b/modules/scanner.py @@ -11,10 +11,10 @@ def listar_ficheiros( extensoes: list[str] | None = None, ) -> list: """ - Percorrer recursivamente a pasta de origem e devolver lista de caminhos completos dos ficheiros. + Percorrer recursivamente a pasta de origem e devolver lista de caminhos + completos dos ficheiros. versão Pathlib """ - sha256_ficheiros: dict[str, str] = {} caminho_origem = Path(origem) if not caminho_origem.exists(): raise FileNotFoundError(f"Erro: a pasta '{origem}' não existe.") @@ -30,17 +30,17 @@ def listar_ficheiros( ] # criar lista de ficheiros ficheiros = [] - for item in tqdm( - caminho_origem.rglob("*"), desc="A listar ficheiros", unit="ficheiro" - ): - if item.is_file(): - # filtro de ficheiros ocultos - if not incluir_ocultos and item.name.startswith("."): - continue - # filtro de extensoes - if extensoes and item.suffix.lower() not in extensoes: - continue - ficheiros.append(str(item)) + itens = caminho_origem.rglob("*") + + with tqdm(desc="A listar ficheiros", unit="ficheiro") as barra_progresso: + for item in itens: + if item.is_file(): + if not incluir_ocultos and item.name.startswith("."): + continue + if extensoes and item.suffix.lower() not in extensoes: + continue + ficheiros.append(str(item)) + barra_progresso.update(1) return ficheiros @@ -51,7 +51,8 @@ def listar_ficheiros_unicos( extensoes: list[str] | None = None, ) -> dict[str, list[str]]: """ - Listar ficheiros unicos na pasta origem, agrupando caminhos por assinatura SHA256. + Listar ficheiros unicos na pasta origem, agrupando caminhos por assinatura + SHA256. Retorna dicionario: { assinatura: [caminho1, caminho2, ...] } """ caminho_origem = Path(origem) @@ -70,19 +71,18 @@ def listar_ficheiros_unicos( # dicionario de ficheiros com assinatura ficheiros_por_assinatura: dict[str, list[str]] = {} + itens = caminho_origem.rglob("*") - for item in tqdm( - caminho_origem.rglob("*"), desc="A listar ficheiros únicos", unit="ficheiro" - ): - if item.is_file(): - # filtro ficheiros ocultos - if not incluir_ocultos and item.name.startswith("."): - continue - # filtro extenseos - if extensoes and item.suffix.lower() not in extensoes: - continue - assinatura = gerar_assinatura_SHA256_ficheiro(str(item)) - ficheiros_por_assinatura.setdefault( - assinatura, []).append(str(item)) + with tqdm(desc="A listar ficheiros", unit="ficheiro") as barra_progresso: + for item in itens: + if item.is_file(): + if not incluir_ocultos and item.name.startswith("."): + continue + if extensoes and item.suffix.lower() not in extensoes: + continue + assinatura = gerar_assinatura_SHA256_ficheiro(str(item)) + ficheiros_por_assinatura.setdefault( + assinatura, []).append(str(item)) + barra_progresso.update(1) return ficheiros_por_assinatura