From 77cc55e2f5177b0998eb05b7116c6bdb957e3b7d Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Sat, 19 Apr 2025 12:40:29 +0100 Subject: [PATCH] modulos movidos para pasta 'modules' --- copier.py | 50 ------------------------------------- logger.py | 9 ------- organizer.py | 69 ---------------------------------------------------- pytest.ini | 2 ++ scanner.py | 23 ------------------ utils.py | 9 ------- 6 files changed, 2 insertions(+), 160 deletions(-) delete mode 100644 copier.py delete mode 100644 logger.py delete mode 100644 organizer.py create mode 100644 pytest.ini delete mode 100644 scanner.py delete mode 100644 utils.py diff --git a/copier.py b/copier.py deleted file mode 100644 index 536990f..0000000 --- a/copier.py +++ /dev/null @@ -1,50 +0,0 @@ -# copier.py -# Funções para copiar ficheiros para o destino organizado -from . import organizer -from pathlib import Path -import shutil - - -def copiar_ficheiro(origem, destino): - """ - Copia o ficheiro da origem para o destino. - Deve lidar com conflitos de nomes (duplicados). - """ - pass - - -def copiar_ficheiros_para_destino( - lista_ficheiros: list[str], - base_destino: str, - categorizar_data: bool = False, - usar_criacao: bool = False, - formato_data: str = "%d-%m-%Y", -) -> None: - """ - Copiar cada ficheiro na lista para o directório base, seguindo as regras de categorização - - argumentos: - lista_ficheiros (list[str]) -> lista com o caminho dos ficheiros a serem copiados - base_destino (str) -> directorio base no qual serão criados os novos directórios com base nas regras de categorização - categorizar_data (bool) -> flag para activar categorização por data (defeito: False) - usar_criacao (bool) -> usar data de criação (defeito: False usar data de modificacao) - formato_data (str) -> formato de data para nome dos subdirectórios (defeito: '%d-%m-%Y') - - retorna: - None - """ - for ficheiro in lista_ficheiros: - if not Path(ficheiro).is_file(): - print(f"Aviso: '{ficheiro}' não existe ou não é um ficheiro.") - continue - categoria = organizer.categorizar_por_tipo(ficheiro) - data = ( - organizer.obter_data_ficheiro(ficheiro, usar_criacao) - if categorizar_data - else None - ) - pasta_destino = organizer.criar_pasta_destino( - base_destino, categoria, data, formato_data - ) - destino_final = pasta_destino / Path(ficheiro).name - shutil.copy2(ficheiro, destino_final) diff --git a/logger.py b/logger.py deleted file mode 100644 index b2ab260..0000000 --- a/logger.py +++ /dev/null @@ -1,9 +0,0 @@ -# logger.py -# Função para escrever logs do processo - - -def registar_log(mensagem): - """ - Escreve mensagem no ficheiro de log. - """ - pass diff --git a/organizer.py b/organizer.py deleted file mode 100644 index 2b140c5..0000000 --- a/organizer.py +++ /dev/null @@ -1,69 +0,0 @@ -# organizer.py -# Funções para categorizar ficheiros e criar estrutura de destino -from pathlib import Path -from datetime import datetime - - -def categorizar_por_tipo(ficheiro: str) -> str: - """ - Devolve o tipo de ficheiro (imagem, documento, vídeo, etc) com base na extensão. - - argumentos: - ficheiro (str) -> caminho do ficheiro - - retorna: - str -> tipo de ficheiro - """ - # TODO: extensões configuraveis externamente pelo utilizador - extensao = Path(ficheiro).suffix.lower() - if extensao in [".jpeg", ".jpg", ".bmp", ".cr2", ".raw"]: - return "imagem" - elif extensao in [".pdf", ".doc", ".docx", ".xls", ".xlsx"]: - return "documento" - elif extensao in [".mp4", ".mpeg", ".mov"]: - return "video" - else: - return "outros" - - -def obter_data_ficheiro(ficheiro: str, usar_criacao: bool = False) -> datetime: - """ - Devolve a data de modificação ou criação do ficheiro. - - argumentos: - ficheiro (str) -> caminho do ficheiro - usar_criacao (bool) -> retornar data de criação de ficheiro (defeito: False) - - retorna: - datetime -> data de modificação ou criação do ficheiro - """ - stats_ficheiro = Path(ficheiro).stat() - timestamp = stats_ficheiro.st_ctime if usar_criacao else stats_ficheiro.st_mtime - return datetime.fromtimestamp(timestamp) - - -def criar_pasta_destino( - base_destino: str, - categoria: str, - data: datetime | None = None, - formato_data: str = "%d-%m-%Y", -) -> Path: - """ - Cria a pasta de destino apropriada, se não existir. - - argumentos: - base_destino (str) -> directorio raiz para criar novo directorio - categoria (str) -> nome do novo directorio a criar - data (datetime | None) -> nome para subdirectorio para categorizar por data (defeito: None, não criar subdirectorio de data) - formato_data (str) -> formato da data ppara o nome da pasta (defeito: '%d-%m-%Y') - - retorna: - Path -> caminho completo para o novo directorio criado - """ - if isinstance(data, datetime): - data_directorio = data.strftime(formato_data) - else: - data_directorio = "" - caminho_novo_directorio = Path(base_destino) / categoria / data_directorio - caminho_novo_directorio.mkdir(parents=True, exist_ok=True) - return caminho_novo_directorio diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..a635c5c --- /dev/null +++ b/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +pythonpath = . diff --git a/scanner.py b/scanner.py deleted file mode 100644 index 5b1713a..0000000 --- a/scanner.py +++ /dev/null @@ -1,23 +0,0 @@ -# scanner.py -# Funções para ler diretórios e listar ficheiros -from pathlib import Path - - -def listar_ficheiros(origem: str = ".") -> list: - """ - Percorrer recursivamente a pasta de origem e devolver lista de caminhos completos dos ficheiros. - versão Pathlib - """ - lista_caminhos_ficheiros: list = [] - try: - caminho_origem = Path(origem) - for item in caminho_origem.iterdir(): - if item.is_dir(): - lista_caminhos_ficheiros.extend(listar_ficheiros(str(item.resolve()))) - else: - lista_caminhos_ficheiros.append(str(item.resolve())) - except FileNotFoundError: - print(f"Erro: a pasta '{origem}' não existe.") - except PermissionError: - print(f"Erro: sem permissões para aceder a '{origem}'.") - return lista_caminhos_ficheiros diff --git a/utils.py b/utils.py deleted file mode 100644 index dcd98fc..0000000 --- a/utils.py +++ /dev/null @@ -1,9 +0,0 @@ -# utils.py -# Funções auxiliares diversas - - -def validar_caminho(caminho): - """ - Verifica se o caminho existe e é válido. - """ - pass