From 0fc33638efa5964d7d0eb6cacabe771694781b69 Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Thu, 17 Apr 2025 11:36:53 +0100 Subject: [PATCH] =?UTF-8?q?criada=20fun=C3=A7=C3=A3o=20criar=5Fpasta=5Fdes?= =?UTF-8?q?tino()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- organizer.py | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/organizer.py b/organizer.py index 7e16fc6..c8c8f4f 100644 --- a/organizer.py +++ b/organizer.py @@ -8,31 +8,63 @@ import time 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' + 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' + 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, categoria, data=None): +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. - """ - pass + 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