CoolFace
Apppublic

CESARSQ/Cqantion-OS

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes
ejemplo_practico.py260 linesDownload Raw Back to root
1"""2EJEMPLO PRÁCTICO - ANTIGRAVITY Pilar 23Extracción de leads del nicho Fitness con datos reales simulados4"""5 6from shopify_lead_extractor import ShopifyLeadExtractor7import time8 9def ejemplo_basico():10    """11    Ejemplo básico: Extraer leads de 5 tiendas de fitness12    """13    print("="*70)14    print("📋 EJEMPLO BÁSICO: Extracción de Leads de Fitness")15    print("="*70)16    17    # 1. Inicializar extractor18    extractor = ShopifyLeadExtractor(niche='fitness', max_stores=5)19    20    # 2. Lista de tiendas a procesar21    tiendas_fitness = [22        'https://www.gymshark.com',23        'https://www.alphalete.com',24        'https://www.nobullproject.com',25        'https://www.lululemon.com',26        'https://www.ryderwear.com'27    ]28    29    print(f"\n🎯 Objetivo: Extraer emails de {len(tiendas_fitness)} tiendas")30    print(f"⏱️  Tiempo estimado: {len(tiendas_fitness) * 20} segundos")31    print("\n" + "-"*70)32    33    # 3. Procesar tiendas34    # NOTA: En este ambiente sin red, simulamos el proceso35    print("\n⚠️  Simulación activada (sin conexión de red real)")36    print("En producción, descomentar la siguiente línea:\n")37    print("# extractor.process_stores(tiendas_fitness)")38    39    # Simulación con datos de ejemplo40    simulate_extraction(extractor, tiendas_fitness)41    42    # 4. Exportar resultados43    csv_file = extractor.export_to_csv()44    45    # 5. Mostrar estadísticas46    extractor.print_stats()47    48    print(f"\n✅ Proceso completado!")49    print(f"📁 Archivo generado: {csv_file}")50    print(f"\n💡 Siguiente paso: Usar este CSV en Pilar 3 (Cold Emailing)")51 52 53def simulate_extraction(extractor, stores):54    """55    Simula extracción de datos para demostración56    (En producción, esto sería reemplazado por extracción real)57    """58    # Datos simulados de ejemplo59    ejemplo_leads = [60        {61            'store_name': 'Gymshark',62            'store_url': 'https://www.gymshark.com',63            'emails': ['ben.francis@gymshark.com', 'partnerships@gymshark.com'],64            'niche': 'fitness'65        },66        {67            'store_name': 'Alphalete Athletics',68            'store_url': 'https://www.alphalete.com',69            'emails': ['christian@alphalete.com'],70            'niche': 'fitness'71        },72        {73            'store_name': 'NOBULL',74            'store_url': 'https://www.nobullproject.com',75            'emails': ['marcus@nobullproject.com', 'team@nobullproject.com'],76            'niche': 'fitness'77        }78    ]79    80    print("\n🔍 Procesando tiendas (SIMULADO)...\n")81    82    for i, lead in enumerate(ejemplo_leads, 1):83        print(f"[{i}/3] {lead['store_name']}")84        print(f"  🌐 URL: {lead['store_url']}")85        86        # Filtrar emails genéricos87        valid_emails = [88            email for email in lead['emails'] 89            if not extractor._is_generic_email(email)90        ]91        92        print(f"  📧 Emails encontrados: {len(lead['emails'])}")93        print(f"  ✅ Emails válidos: {len(valid_emails)}")94        95        if valid_emails:96            print(f"  → {', '.join(valid_emails)}")97            98            # Agregar a leads99            lead['emails'] = valid_emails100            extractor.leads.append(lead)101            extractor.stats['emails_extracted'] += len(valid_emails)102        else:103            print(f"  ⚠️  Todos los emails fueron filtrados (genéricos)")104        105        extractor.stats['stores_found'] += 1106        extractor.seen_emails.update(valid_emails)107        108        print()109        time.sleep(0.5)  # Simular delay110 111 112def ejemplo_con_filtros_avanzados():113    """114    Ejemplo avanzado: Demostración de filtros y validaciones115    """116    print("\n" + "="*70)117    print("🔬 EJEMPLO AVANZADO: Filtros y Validaciones")118    print("="*70)119    120    extractor = ShopifyLeadExtractor(niche='beauty', max_stores=10)121    122    # Emails de prueba123    test_emails = [124        'founder@beautybrand.com',       # VÁLIDO125        'info@beautybrand.com',          # GENÉRICO - filtrar126        'support@beautybrand.com',       # GENÉRICO - filtrar127        'sarah.jones@beautybrand.com',   # VÁLIDO128        'hello@beautybrand.com',         # GENÉRICO - filtrar129        'ceo@beautybrand.com',           # VÁLIDO130        'contact@beautybrand.com',       # GENÉRICO - filtrar131    ]132    133    print("\n📝 Emails a validar:")134    for email in test_emails:135        print(f"  • {email}")136    137    print("\n🔍 Aplicando filtros...\n")138    139    valid_emails = []140    filtered_emails = []141    142    for email in test_emails:143        if extractor._is_generic_email(email):144            filtered_emails.append(email)145            print(f"  ❌ {email:40s} → FILTRADO (genérico)")146        else:147            valid_emails.append(email)148            print(f"  ✅ {email:40s} → VÁLIDO")149    150    print("\n" + "-"*70)151    print(f"📊 Resultados:")152    print(f"  Total procesados: {len(test_emails)}")153    print(f"  Válidos: {len(valid_emails)}")154    print(f"  Filtrados: {len(filtered_emails)}")155    print(f"  Tasa de validez: {len(valid_emails)/len(test_emails)*100:.1f}%")156 157 158def ejemplo_exportacion_personalizada():159    """160    Ejemplo de exportación con formato personalizado161    """162    print("\n" + "="*70)163    print("💾 EJEMPLO: Exportación Personalizada")164    print("="*70)165    166    extractor = ShopifyLeadExtractor(niche='pets', max_stores=5)167    168    # Agregar datos de ejemplo169    extractor.leads = [170        {171            'store_name': 'The Farmer\'s Dog',172            'store_url': 'https://www.thefarmersdog.com',173            'emails': ['brett@thefarmersdog.com'],174            'niche': 'pets'175        },176        {177            'store_name': 'BarkBox',178            'store_url': 'https://www.barkbox.com',179            'emails': ['matt@barkbox.com', 'henrik@barkbox.com'],180            'niche': 'pets'181        }182    ]183    184    extractor.stats['stores_found'] = 2185    extractor.stats['emails_extracted'] = 3186    187    # Exportar188    csv_file = extractor.export_to_csv(filename='leads_pets_custom.csv')189    190    print(f"\n✅ Archivo exportado: {csv_file}")191    192    # Mostrar contenido193    print("\n📄 Contenido del archivo:")194    print("-"*70)195    196    with open(csv_file, 'r') as f:197        content = f.read()198        print(content)199    200    print("-"*70)201 202 203def menu_principal():204    """205    Menú interactivo para seleccionar ejemplos206    """207    print("\n")208    print("🚀 " + "="*66 + " 🚀")209    print("🚀  ANTIGRAVITY PILAR 2 - EJEMPLOS PRÁCTICOS")210    print("🚀 " + "="*66 + " 🚀")211    print("\n")212    print("Selecciona un ejemplo para ejecutar:\n")213    print("  1. Ejemplo Básico - Extracción de Leads de Fitness")214    print("  2. Ejemplo Avanzado - Filtros y Validaciones")215    print("  3. Ejemplo de Exportación Personalizada")216    print("  4. Ejecutar TODOS los ejemplos")217    print("  0. Salir")218    print("\n" + "="*70)219    220    while True:221        try:222            opcion = input("\n👉 Ingresa el número de opción [1-4, 0 para salir]: ").strip()223            224            if opcion == '0':225                print("\n👋 ¡Hasta luego!")226                break227            elif opcion == '1':228                ejemplo_basico()229                break230            elif opcion == '2':231                ejemplo_con_filtros_avanzados()232                break233            elif opcion == '3':234                ejemplo_exportacion_personalizada()235                break236            elif opcion == '4':237                ejemplo_basico()238                ejemplo_con_filtros_avanzados()239                ejemplo_exportacion_personalizada()240                break241            else:242                print("❌ Opción inválida. Por favor ingresa un número entre 0 y 4.")243                244        except KeyboardInterrupt:245            print("\n\n👋 Programa interrumpido. ¡Hasta luego!")246            break247        except Exception as e:248            print(f"❌ Error: {str(e)}")249 250 251if __name__ == "__main__":252    # Para ejecución automática sin menú, descomenta una de estas líneas:253    254    # ejemplo_basico()255    # ejemplo_con_filtros_avanzados()256    # ejemplo_exportacion_personalizada()257    258    # Menú interactivo (por defecto)259    menu_principal()260