54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
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!") |