import os import json # TODO tornar um cron, sempre que adicionar um instrumento na pasta samples, ele deve fazer o manifest de novo # --- Configurações --- # O nome da pasta que contém os seus samples. SAMPLES_DIR = 'samples' # O nome do arquivo JSON que será gerado. OUTPUT_FILE = 'samples-manifest.json' def scan_directory(path): """ Função recursiva que escaneia um diretório e constrói uma estrutura de dicionário (árvore) representando as pastas e arquivos. """ tree = {} try: # Lista todos os itens (arquivos e pastas) no caminho atual for item in os.listdir(path): full_path = os.path.join(path, item) # Se o item for um diretório, chama a função novamente para ele if os.path.isdir(full_path): tree[item] = scan_directory(full_path) # Se for um arquivo, adiciona no formato que nosso app precisa else: tree[item] = {"_isFile": True} except FileNotFoundError: print(f"ERRO: O diretório '{path}' não foi encontrado.") return None except Exception as e: print(f"Ocorreu um erro inesperado: {e}") return None return tree # --- Execução Principal do Script --- if __name__ == "__main__": print(f"Iniciando escaneamento da pasta '{SAMPLES_DIR}'...") # Verifica se a pasta 'samples' realmente existe if not os.path.isdir(SAMPLES_DIR): print(f"ERRO: A pasta '{SAMPLES_DIR}' não foi encontrada.") print("Por favor, crie a pasta e adicione seus arquivos de áudio, ou verifique se o script está no lugar certo.") else: # Gera a estrutura da árvore de diretórios directory_tree = scan_directory(SAMPLES_DIR) if directory_tree is not None: # Abre o arquivo de saída para escrita with open(OUTPUT_FILE, 'w', encoding='utf-8') as f: # Converte o dicionário Python para uma string JSON formatada e salva no arquivo json.dump(directory_tree, f, indent=2, ensure_ascii=False) print(f"Arquivo '{OUTPUT_FILE}' gerado com sucesso!")