U
    ÓTÚj  ã                   @   sl   d Z ddlZddlZddlmZmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlZdd„ Zd	d
„ ZdS )u�   Hermes Football V4: orden natural, bÃºsqueda y asignaciÃ³n controlada.
Solo fÃºtbol, coincidencia EPG+O11 Ãºnica, sin sobrescribir manuales.
é    N)ÚdatetimeÚtimezone)Úpreparar_asignacion_futbolÚDBÚPENDING)Úset_automatic)Ú
check_oncec                    sB   dd l ‰ d ‡ fdd„ˆ  dt| ƒ ¡ ¡D ƒ¡} t dd| ¡ ¡ S )Nr   Ú c                 3   s   | ]}ˆ   |¡s|V  qd S )N)Z	combining)Ú.0Úc©Úunicodedata© úhermes_football_v4.pyÚ	<genexpr>   s     
 z_normalize.<locals>.<genexpr>ZNFKDz
[^a-z0-9]+ú )r   ÚjoinZ	normalizeÚstrÚcasefoldÚreÚsubÚstrip)Úsr   r   r   Ú
_normalize   s    (r   c              	      s  t | tƒr(dt|  ¡ ƒ  kr&dks0n ddiS t| ƒ‰ tjdt d dd��"}tj|_	d	d
„ | 
d¡D ƒ}W 5 Q R X ‡ fdd
„|D ƒ}|s–d| dœS ddlm} dd l}| | d¡¡ ¡  ¡ ‰‡fdd
„|D ƒ}t|ƒdkrê|d }n4t|ƒdk�r|d }nddd
„ |d d… D ƒdœS t|d ƒ}| d¡dk�r>|S |d }	t|	d  }
t |
jdd�¡}d|d |d  d!d"œ}t|d |d# |d |ƒ}| d$¡�s¸d%| d&d'¡|d( d)œS t|d# ƒ}z|
 ¡  W n tk
�ræ   Y nX d*|d( |d+ |d,|d d-d.œS )/Né   éZ   ÚestadoZSOLICITUD_INVALIDAzfile:z?mode=roT)Zuric                 S   s   g | ]}t |ƒ‘qS r   )Údict)r
   Úxr   r   r   Ú
<listcomp>   s     z,buscar_y_asignar_partido.<locals>.<listcomp>zWSELECT id,home,away,starts_utc,local_day FROM events ORDER BY starts_utc DESC LIMIT 150c                    sX   g | ]P}ˆ t |d  ƒ ¡ ksPˆ t |d ƒ ¡ ksPˆ t |d  ƒksPˆ t |d ƒkr|‘qS )ÚhomeÚaway)r   Úsplit©r
   Úe)Útermr   r   r      s       ÿZSIN_PARTIDO)r   Úequipor   )r   zAmerica/Tijuanac                    s   g | ]}|d  ˆ kr|‘qS )Ú	local_dayr   r#   )Útodayr   r   r      s      é   ZVARIOS_PARTIDOSc                 S   s*   g | ]"}|d  |d |d |d dœ‘qS )Úidr    r!   r'   )r*   ZlocalZ	visitanteZfechar   r#   r   r   r   r   %   s     é   )r   Zpartidosr*   ZPROPUESTA_PENDIENTEÚticketz.jsonzutf-8)ÚencodingZCATALOGO_UNICOÚ	epg_canalÚdiferencia_minutosuL   EPG Sling y catÃ¡logo O11 coinciden; fuente pÃºblica independiente pendiente)r   r.   r/   ZnotaZurlÚsavedZNO_ASIGNADOÚreasonZDESCONOCIDOÚpartido)r   Zmotivor2   ZASIGNADOZcanal_catalogoZ	PENDIENTEuX   AsignaciÃ³n guardada. El estado HTTP no prueba reproducciÃ³n completa. Refresca FÃºtbol.)r   r2   ZcanalZverificacion_httpZconfirmacion_publicaZevent_idZmensaje)Ú
isinstancer   Úlenr   r   Úsqlite3Zconnectr   ZRowZrow_factoryZexecuter   ÚpytzZnowr   ÚdateZ	isoformatr   Úgetr   ÚjsonÚloadsZ	read_textr   r   ÚunlinkÚOSError)r&   ZdbZeventsZmatchesr   r6   Ztoday_matchesZeventZproposalr,   ÚpathZpayloadZevidencer0   Zstatusr   )r%   r(   r   Úbuscar_y_asignar_partido   sV    (


þ    ýr>   )Ú__doc__r   r5   r   r   Zhermes_football_v3dr   r   r   Zhermes_football_links_v3r   Zhermes_football_v3b_aprobarr   r9   r   r>   r   r   r   r   Ú<module>   s   