diff --git a/copier.py b/copier.py index 397aef8..915d754 100644 --- a/copier.py +++ b/copier.py @@ -2,9 +2,51 @@ # Funções para copiar ficheiros para o destino organizado +from pathlib import Path +import organizer +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)