
    Hh                     X    S SK Jr  S SKrS SKrS SKrS SKrSrSrS r	S r
SSS	S
S.rS rg)    )GoogleSearchN@e62b6b8d126f5ffea30490592908fde7308ff5e4bf9c64738eb5cea9055a2fccz_C:/Users/julio/OneDrive/Documentos/Trabajo/IdeasFrscas/Vuelos/Datos/informacion_aeropuertos.csvc                     [        U [        5      (       d  gSR                  S [        R                  " SU R                  5       5       5       5      $ )N c              3   ^   #    U  H#  n[         R                  " U5      S :w  d  M  Uv   M%     g7f)MnN)unicodedatacategory).0cs     Gc:\Users\julio\OneDrive\Documentos\Trabajo\IdeasFrscas\Vuelos\vuelos.py	<genexpr>#normalizar_texto.<locals>.<genexpr>   s,      >a"d* 	
>s   -	-NFD)
isinstancestrjoinr	   	normalizelower)textos    r   normalizar_textor      sC    eS!!77 ((>      c                   ^	 [         R                  " U5      n[        U 5      m	U	4S jnX"R                  USS9   n/ nUR	                  5        Hr  u  pgUR                  S5      n[         R                  " U5      (       d  M3  [        U[        5      (       d  MJ  [        U5      S:X  d  M[  UR                  US   US.5        Mt     U$ )z
Busca aeropuertos cuyo municipio o nombre contenga parcialmente la ciudad (ignorando acentos).
Devuelve una lista de diccionarios con nombre e IATA code.
c                    > [        U R                  SS5      5      n[        U R                  SS5      5      nTU;   =(       d    TU;   $ )Nmunicipalityr   name)r   get)row	municipionombreciudad_norms      r   coincide0obtener_codigos_iata_desde_csv.<locals>.coincide   sB    $SWW^R%@A	!#''&""56i'@;&+@@r      )axis	iata_code   r   )r    codigo)pdread_csvr   applyiterrowsr   notnar   r   lenappend)
ciudadruta_csvdfr"   
resultadosaeropuertos_r   iatar!   s
            @r   obtener_codigos_iata_desde_csvr7      s    
 
X	B"6*KA
 HHXAH./JK%%'ww{#88D>>js33D	Qf+   ( r   economypremium_economybusinessfirst)r$      r'      c                 X   / SQn[        X5      nU(       d  [        SU  35      e[        SU  S35        [        U5       H"  u  pg[        US-    SUS    SUS	    S
35        M$     [	        S5      R                  5       R                  5       nUS;   a  U Vs/ s H  owS	   PM	     n	nOo UR                  S5       Vs/ s H  n[        UR                  5       5      S-
  PM!     n
nU
 Vs/ s H&  nSUs=::  a  [        U5      :  d  M  O  M  XV   S	   PM(     n	nU	(       d  [        S5      e/ nU	 GH  nU GH  n[        SS5       GH  n[        U   n[        SU SU SU SU 35        SSSSUUUUSSSSSUS.n [        U5      nUR                  5       nSU;  a  [        S5        Md  US    GH;  nUR                  S/ 5      nU GH  nUR!                  UR                  S S!5      UR                  S"S!5      UUR                  S#S!5      UR                  S$0 5      R                  S%S!5      UR                  S&0 5      R                  S%S!5      UR                  S$0 5      R                  S'S!5      UR                  S&0 5      R                  S'S!5      UUUR                  S(S!5      UR                  S)S!5      ["        R"                  R%                  5       R'                  S*5      S+.5        GM!     GM>     GM     GM     GM     [(        R*                  " U5      nUR,                  (       d*  S-U  S.U S/3nUR/                  US0S1S29  [        S3U 35        U$ [        S45        U$ s  snf s  snf s  snf ! [         a  n[        S5      UeS nAff = f! [         a  n[        S,U 35         S nAGMb  S nAff = f)5N)MEXNLUTIJMTYCJSCUULAXPHXDFWIAHMSPSFOYYCYEGYLWYULYQRYYZYVRYWGz+No se encontraron aeropuertos con IATA en: z
 Aeropuertos encontrados en :r$   z. r    z (r(   )u?   
Selecciona aeropuerto(s) por número (ej. 1 o 1,3 o 'todos'): )todosr   ,r   uI   Entrada inválida. Debes ingresar números separados por comas o 'todos'.u,   No seleccionaste ningún aeropuerto válido.   z
 u    ➜ z
 | Clase: z
 | Fecha: google_flightsesmx2USDT)enginehlgltypedeparture_id
arrival_idoutbound_datetravel_classadultscurrencyshow_hiddendeep_searchsort_byapi_keyother_flightsu5   No se encontraron más vuelos para esta combinación.flightsairlinezNo disponibleflight_numberdurationdeparture_airporttimearrival_airportr   pricetotal_durationz%Y-%m-%d)u
   Aerolíneau   Número de vueloClaseu	   DuraciónSalidaLlegadaOrigenDestinou   Código llegadau   Código salidazPrecio estimadou   Duración totalzFecha consultau"   ⚠️ Error al consultar vuelos: zdatos/Vuelos a z todas clases z.csvFz	utf-8-sig)indexencodingu   
✅ Archivo guardado: uH   
❌ No se encontraron vuelos en ninguna clase para esta ciudad y fecha.)r7   
ValueErrorprint	enumerateinputstripr   splitintr.   	Exceptionrangeclases_dictr   get_dictr   r/   datetimetodaystrftimer)   	DataFrameemptyto_csv)ciudad_destinofecha_llegadarj   r1   aeropuertos_origenr4   ia	seleccioncodigos_seleccionadosindicesevuelos_listarb   ra   clase	clase_strparamssearchresultsvuelo	segmentosseg	df_vuelosnombre_archivos                            r   vuelos_a_ciudad_batchr   4   s   W 1JKF~FVWXX	*>*:!
<=+&1R(}Bq{m156 ' XY__aggiIM!6A Bk8k B	q3<??33GH3Gas1779~)3GGHGN$lw!RSWXRk[^_j[kRk%=Rk%=[^H%=w!$l !GHHL+
.Lq!'.	L>zl*YKzZgYhij /$0",%2$) %#'#'"&"D)&1F$oo/G&g5UV !(!9$)IIi$<	#,C(//.1ggi.Q47GGO_4])2-0WWZ-Q*-''2Er*J*N*NvWf*g+.773Db+I+M+MfVe+f*-''2Er*J*N*NvWf*g+.773Db+I+M+MfVe+f3=2>3899Wo3V3899=M3_2:2C2C2I2I2K2T2TU_2`1  $- ":; % / ,j \*I??*>*:.W[\u{K((89:  	YZS !C I$l 	qhiopp	qr ! D>qcBCCDsg   M(M' ;&M!M' 'M"M"	M"M' 8,N&EN
M' '
N1M==N
N)	N$	$N)	)serpapir   r   pandasr)   r	   osrj   r1   r   r7   r   r    r   r   <module>r      sC         	
Ll8 	Yr   