#!/usr/bin/env python3 """ Conversor AUTOMÁTICO de CSVs para JavaScript Lê TODAS as colunas automaticamente de cada CSV """ import csv import json import os from datetime import datetime # Lista de arquivos CSV para processar CSV_FILES = { 'cantoneiras': 'BD/perfis/cantoneiras_brasil_completo.csv', 'barras_redondas': 'BD/perfis/barras_brasil_completo.csv', 'tubos_circulares': 'BD/perfis/tubos_circulares_brasil_completo.csv', 'perfis_i': 'BD/perfis/perfis_i_brasil_completo.csv', 'perfis_w': 'BD/perfis/perfis_w_brasil_completo.csv', 'tubos_rhs': 'BD/perfis/tubos_rhs_brasil_completo.csv', 'chapas': 'BD/perfis/chapas_brasil_completo.csv', 'perfis_hp': 'BD/perfis/perfis_hp_brasil_completo.csv', 'barras_roscadas': 'BD/perfis/barras_roscadas_brasil_completo.csv', 'barras_chatas': 'BD/perfis/barras_chatas_brasil_completo.csv' } def converter_valor(valor, coluna): """Converte valor para o tipo correto""" valor = str(valor).strip().strip('"') # Colunas numéricas if any(x in coluna for x in ['_mm', '_kg', '_cm', '_m2', '_mpa', '_pol']): try: return float(valor) except: return 0 return valor def ler_csv_automatico(arquivo): """Lê CSV automaticamente detectando todas as colunas""" dados = [] if not os.path.exists(arquivo): print(f"⚠️ Arquivo não encontrado: {arquivo}") return dados, [] try: with open(arquivo, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) colunas = reader.fieldnames for row in reader: item = {} for col in colunas: item[col] = converter_valor(row[col], col) dados.append(item) print(f"✅ {arquivo}: {len(dados)} itens, {len(colunas)} colunas") return dados, colunas except Exception as e: print(f"❌ Erro ao ler {arquivo}: {e}") return dados, [] def gerar_javascript(dados_todos): """Gera arquivo JavaScript com todos os dados""" timestamp = datetime.now().timestamp() js_content = f'''/** * BANCO DE DADOS COMPLETO - Todos os Perfis * Dados embutidos em JavaScript para funcionamento autônomo * Gerado automaticamente a partir dos CSVs * * @version 2.0.0 * @date {timestamp} */ const BANCO_DADOS_PERFIS = {json.dumps(dados_todos, indent=2, ensure_ascii=False)}; // Exportar para uso global if (typeof window !== 'undefined') {{ window.BANCO_DADOS_PERFIS = BANCO_DADOS_PERFIS; }} console.log('✅ Banco de dados carregado:', Object.keys(BANCO_DADOS_PERFIS).length, 'tipos'); ''' return js_content def main(): print("╔════════════════════════════════════════════════════════════╗") print("║ Conversor AUTOMÁTICO de CSVs para JavaScript ║") print("╠════════════════════════════════════════════════════════════╣") print("║ Lê TODAS as colunas automaticamente de cada CSV ║") print("╚════════════════════════════════════════════════════════════╝") print() dados_todos = {} total_itens = 0 for tipo, arquivo in CSV_FILES.items(): print(f"📊 Processando {tipo}...") dados, colunas = ler_csv_automatico(arquivo) if dados: dados_todos[tipo] = dados total_itens += len(dados) print(f" Colunas: {', '.join(colunas[:5])}...") print() if not dados_todos: print("❌ Nenhum dado foi processado!") return print("🔧 Gerando arquivo JavaScript...") js_content = gerar_javascript(dados_todos) # Salvar arquivo output_file = 'js/database/banco-dados-completo.js' os.makedirs(os.path.dirname(output_file), exist_ok=True) with open(output_file, 'w', encoding='utf-8') as f: f.write(js_content) file_size = os.path.getsize(output_file) print(f"✅ Arquivo gerado: {output_file}") print(f"📊 Total de itens: {total_itens}") print(f"📁 Tamanho: {file_size} bytes (~{file_size//1024}KB)") print() print("╔════════════════════════════════════════════════════════════╗") print("║ ✅ CONVERSÃO CONCLUÍDA ║") print("╠════════════════════════════════════════════════════════════╣") print(f"║ Arquivo gerado: {output_file:40s} ║") print("║ ║") print("║ Próximos passos: ║") print("║ 1. Testar aplicação ║") print("║ 2. Verificar carregamento dos dados ║") print("║ 3. Fazer deploy ║") print("╚════════════════════════════════════════════════════════════╝") if __name__ == '__main__': main()