import os import re import shutil from typing import List from constantes import AGENTS_FILES_PATH class File_Util: """ Manipulação de diretórios e arquivos """ @staticmethod def create_or_clear_output_directory(output_dir: str): """ Cria o diretório de saída se não existir. """ if not os.path.exists(output_dir): os.makedirs(output_dir) print(f"Diretório criado: {output_dir}") else: # Limpa todos os arquivos e subdiretórios for filename in os.listdir(output_dir): file_path = os.path.join(output_dir, filename) try: if os.path.isfile(file_path) or os.path.islink(file_path): os.unlink(file_path) elif os.path.isdir(file_path): shutil.rmtree(file_path) except Exception as e: print(f"Erro ao excluir {file_path}: {e}") print(f"Diretório limpo: {output_dir}") @staticmethod def retirar_sufixo_codec_arquivo(directory: str) -> List[str]: """ Os arquivos de audio e video quando baixados ficam com o codec embutido no nome, dificultando identificar o nome do arquivo a ser processado. O objetivo é remover o sufixo do nome do arquivo. """ return_list = [] for filename in os.listdir(directory): # Procura padrão como ".f123" antes da extensão new_filename = re.sub(r'\.f\d{3}(?=\.\w+$)', '', filename) if new_filename != filename: old_path = os.path.join(directory, filename) new_path = os.path.join(directory, new_filename) os.rename(old_path, new_path) print(f"Renomeado: {filename} → {new_filename}") return_list.append(new_filename) return return_list @staticmethod def tratar_arquivo_local(caminho_entrada: str) -> str: """ Verifica se o arquivo existe no caminho informado. Se não existir, adiciona o path padrão do sistema. Parâmetros: - caminho_entrada (str): Caminho completo ou nome do arquivo. Retorna: - str: Caminho válido para o arquivo, ou None se não encontrado. """ # Verifica se o arquivo já existe no caminho informado if os.path.isfile(caminho_entrada): return caminho_entrada # Tenta procurar no diretório padrão, se fornecido novo_caminho = os.path.join(AGENTS_FILES_PATH, os.path.basename(caminho_entrada)) if os.path.isfile(novo_caminho): return novo_caminho # Arquivo não encontrado return None