U
    ³GÚjÊ  ã                   @   sª   d Z ddlZddlZddlmZ edƒZedƒZedƒedƒfZdZd	d
dddddddddddddddddddddd d!hZ	d"d#„ Z
d$d%„ Zd-d'd(„Zd.d)d*„Zd+d,„ ZdS )/u•   Herramientas de inspecciÃ³n de fÃºtbol, exclusivamente lectura.
No descarga playlists, no publica enlaces ni devuelve secretos a Gemini.
Python 3.8.
é    N)ÚPathz/var/lib/hermes-nexus/epg.dbz!/var/lib/hermes-nexus/football.dbz-/var/www/html/NFL_ST/hermes_lmp_epg_live.jsonz./var/www/html/NFL_ST/hermes_lmp_epg_cache.jsoni  P ÚtitleÚtituloÚnameZnombreZteamZequipoÚhomeZawayÚmatchZpartidoÚstartZstartsÚdateZfechaÚtimeZhoraZchannelÚcanalZcompetitionZleagueÚligaZdescriptionÚdescripcionZ	shortnameZdisplaynamec                 C   s<   t | tƒr(dt|  ¡ ƒ  kr&dks0n tdƒ‚|  ¡  ¡ S )Né   éd   u.   TÃ©rmino de bÃºsqueda entre 2 y 100 caracteres)Ú
isinstanceÚstrÚlenÚstripÚ
ValueErrorÚcasefold)Útermino© r   úhermes_football_explorer_v3a.pyÚ_term   s    (r   c                 C   s   t dtt| ƒdƒƒS )Né   é   )ÚmaxÚminÚint)Úlimiter   r   r   Ú_limit   s    r    é   c                 C   s–   t | ƒ}t|ƒ}t ¡ s ddiS tjd t¡ddd�}zP| dd| d d| d d| d |f¡ 	¡ }| t
|ƒdd	d
„ |D ƒdœW ¢S | ¡  X d S )NÚerrorZEPG_DB_NO_DISPONIBLEúfile:{}?mode=roTé   ©ZuriZtimeoutzÚ
            SELECT fuente, canal, titulo, inicio, fin, descripcion
            FROM epg_programas
            WHERE titulo LIKE ? OR descripcion LIKE ? OR canal LIKE ?
            ORDER BY inicio DESC LIMIT ?
        ú%c              
   S   sB   g | ]:}|d  |d |d |d |d |d p0ddd… d	œ‘qS )
r   r   r   é   é   r$   Ú Né´   )Zfuenter   r   ZinicioZfinr   r   ©Ú.0Úrr   r   r   Ú
<listcomp>+   s   þ þz explorar_epg.<locals>.<listcomp>)r   Ztotal_mostradosÚsolo_lecturaZ	programas)r   r    ÚEPGÚis_fileÚsqlite3ÚconnectÚformatÚcloseÚexecuteÚfetchallr   )r   r   ÚtermÚdbÚrowsr   r   r   Úexplorar_epg   s    "û
þÿ
r;   c                    sè  t | ƒ‰t|ƒ}g }g }tD �]¸}| ¡ r| ¡ jtkr:q| |j¡ zt	 
|jdd�¡}W n tttfk
rz   Y qY nX |dfg}d}|rt|ƒ|k r|dk r| ¡ \}‰ |d7 }ˆ dkrÀqŠt|tƒrì| ‡ fdd„|d d	… D ƒ¡ qŠt|tƒrŠi }	| ¡ D ]j\}
}t|
ƒ ¡  d
d¡}|tk�rt|tttfƒ�rt|ƒd d… }d|k�rd|k�r||	t|
ƒ< �q|	�r¢t‡fdd„|	 ¡ D ƒƒ�r¢| |j|	dœ¡ | ¡ D ](}t|ttfƒ�rª| |ˆ d f¡ �qªqŠq| ||dddœS )Nzutf-8)Úencodingr   i0u  r   é   c                 3   s   | ]}|ˆ d  fV  qdS )r   Nr   )r,   Úx)Údepthr   r   Ú	<genexpr>F   s     z examinar_json.<locals>.<genexpr>iÐ  Ú_r)   r*   z://ú@c                 3   s   | ]}ˆ |  ¡ kV  qd S )N)r   )r,   Úv)r8   r   r   r@   O   s     )ZarchivoZcamposTz>Solo JSON de lista permitida; no se leen archivos arbitrarios.)r   Zarchivos_revisadosZcoincidenciasr/   Znota)r   r    Ú
JSON_FILESr1   ÚstatÚst_sizeÚ	MAX_BYTESÚappendr   ÚjsonÚloadsZ	read_textr   ÚOSErrorÚUnicodeErrorr   Úpopr   ÚlistÚextendÚdictÚitemsr   ÚlowerÚreplaceÚ	SAFE_KEYSr   ÚfloatÚanyÚvalues)r   r   ZmatchesZarchivosÚpathÚobjÚstackÚseenÚitemZsafeÚkrC   ÚkeyÚvaluer   )r?   r8   r   Úexaminar_json1   sN    



"
" þr`   c                  C   s\   t  ¡ sddiS tjd t ¡ddd�} z&|  d¡ ¡ }dd	„ |D ƒdd
œW ¢S |  ¡  X d S )Nr"   ZFOOTBALL_DB_NO_DISPONIBLEr#   Tr$   r%   a£  
            SELECT e.id,e.league,e.home,e.away,e.starts_utc,
                   COALESCE(l.provider,''),COALESCE(l.epg_channel,''),
                   CASE WHEN COALESCE(l.manual_url,'')<>'' THEN 1 ELSE 0 END,
                   CASE WHEN COALESCE(l.automatic_url,'')<>'' THEN 1 ELSE 0 END
            FROM events e LEFT JOIN football_links l ON l.event_id=e.id
            ORDER BY e.starts_utc DESC LIMIT 35
        c                 S   sP   g | ]H}|d  |d |d |d |d |d |d t |d ƒt |d ƒd	œ	‘qS )
r   r   r   r'   r(   r$   é   é   é   )	Úidr   ZlocalZ	visitanteZ
inicio_utcZ	proveedorZ	canal_epgZmanualZ
automatico)Úboolr+   r   r   r   r.   e   s   þ  
 
þz$revisar_tarjetas.<locals>.<listcomp>)Zeventosr/   )ÚFOOTBALLr1   r2   r3   r4   r5   r6   r7   )r9   r:   r   r   r   Úrevisar_tarjetasX   s    þý
rg   )r!   )r!   )Ú__doc__rI   r2   Úpathlibr   r0   rf   rD   rG   rT   r   r    r;   r`   rg   r   r   r   r   Ú<module>   sB   þ              ý

'