CESARSQ/Cqantion-OS
0
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 