
    טi                         d dl mZ d dlmZ d dlZd dlmZ d dlZd dlZdZ	 eddd	      Z
d
 ZdedefdZdefdZe
j                  d      d        Zy)    )FastAPI)JSONResponseN)BeautifulSoupzBhttps://aeropuertocuenca.ec/itinerarios/view/salidasarribos.v5.phpz!API Itinerarios Aeropuerto Cuencau]   API scrappea vuelos desde el aeropuerto de Cuenca con ruta, fecha, hora, aerolínea y estado.z1.1.0)titledescriptionversionc                  p    t        j                  t        d      } | j                          | j                  S )N
   )timeout)requestsget
SOURCE_URLraise_for_statustext)resps    "/opt/aeropuerto/back/api/vuelos.pyobtener_html_fuenter      s(    <<
B/D99    img_srcreturnc                     t         j                  j                  |       j                  dd      j                  dd      j                  dd      }|j	                         S )zX
    Recibe algo como '../../../itinerarios/img/avianca.png'
    Devuelve 'Avianca'
    z.png z.jpgz.jpeg)ospathbasenamereplace
capitalize)r   nombres     r   extraer_nombre_desde_imgr      sP    
 WWg&..vr:BB62NVVW^`bcFr   html_contentc                     t        | d      }|j                  d      }t        |      dk  rt        d      |d   }|d   }d } ||d       ||d	      fS )
Nzhtml.parsertable   z,No se encontraron tablas de salidas/arribos.r      c                 (   g }t        | j                  d            D ]q  \  }}|dk(  r|j                  d      }t        |      dk  r-|d   j                  d      }|r |j	                  d      rt        |d         }n|d   j                  d	      }|j                  |t        j                  |d   j                  d	            t        j                  |d
   j                  d	            t        j                  |d   j                  d	            t        j                  |      t        j                  |d   j                  d	            t        j                  |d   j                  d	            j                  dd      d       t |S )Ntrr   td      imgsrcT)stripr$   r#         /-)tiporutafechahora	aerolineavueloestado)	enumeratefind_alllenfindr   r   get_textappendhtmlunescaper   )tablar1   vuelosifilatdsr*   r5   s           r   parse_tablaz)parsear_tabla_vuelos.<locals>.parse_tabla'   sM    !56 	GAtAv--%C3x!| a&++e$Cswwu~4SZ@	FOO$O7	MMc!fooDo&ABs1vT'BCc!fooDo&AB!]]95s1vT'BC--Ad(CDLLSRUV 	0 r   SALIDAARRIBO)r   r9   r:   
ValueError)r    souptablastabla_salidastabla_arribosrE   s         r   parsear_tabla_vuelosrM      se    }5D]]7#F
6{QGHH1IM1IM8 }X.M(0SSSr   z/api/cuenca-vuelosc            	          	 t               } t        |       \  }}t        t        ||t	        |      t	        |      d      S # t
        $ r"}t        ddt        |      i      cY d }~S d }~ww xY w)N)fuentesalidasarribostotal_salidastotal_arribosi  error)status_codecontent)r   rM   r   r   r:   	Exceptionstr)r    rP   rQ   es       r   apirZ   F   sr    J*,/=  \ \
  	  JwA5HIIJs   >A 	A,
A'!A,'A,)fastapir   fastapi.responsesr   r   bs4r   r   r>   r   appr   rX   r   rM   r   rZ    r   r   <module>r`      sv     *   	 Q

-o
c c &Ts &TR 	J Jr   