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