U
    òØj�  ã                   @   sZ   d dl Z d dlZd dlZd dlmZ d dlmZmZ dd„ Zdd„ Zdd	„ Z	ddd„Z
dS )é    N)ÚPath)ÚdatetimeÚtimezonec                    sZ   t | tƒsdS |  d¡‰ t ˆ tƒs&dS d}t‡ fdd„|D ƒƒsDdS t‡ fdd„|D ƒƒS )NFÚresponse)ZgamesZ	prevGamesZ	nextGamesc                 3   s   | ]}t ˆ  |¡tƒV  qd S ©N)Ú
isinstanceÚgetÚlist©Ú.0Úk©r   © úhermes_lmp_epg_cache_v2.pyÚ	<genexpr>   s   ÿzvalidar.<locals>.<genexpr>c                 3   s   | ]}ˆ | V  qd S r   r   r
   r   r   r   r      s     )r   Údictr   ÚallÚany)ÚepgZsectionsr   r   r   Úvalidar   s    


þr   c              	   C   s¼   t | ƒsdS t|ƒ}t tj¡ ¡ | dœ}tj|j	d t
|jƒd�\}}zVtj|ddd��,}tj||dd� | ¡  t | ¡ ¡ W 5 Q R X t |t
|ƒ¡ W 5 tj |¡r¶t |¡ X d	S )
NF)Úreceived_atr   Ú.)ÚprefixÚdirÚwúutf-8©Úencoding)Zensure_asciiT)r   r   r   Únowr   ÚutcZ	isoformatÚtempfileZmkstempÚnameÚstrÚparentÚosÚpathÚexistsÚunlinkÚfdopenÚjsonÚdumpÚflushÚfsyncÚfilenoÚreplace)r   ÚrutaÚpÚregistroÚfdZtemporalÚfr   r   r   Úguardar   s&    þþ
r4   c              
   C   sb   t | ƒ}| ¡ sd S z,t |jdd�¡}t| d¡ƒs<W d S |W S  ttt	fk
r\   Y d S X d S )Nr   r   r   )
r   r&   r)   ÚloadsZ	read_textr   r   ÚOSErrorÚ
ValueErrorÚ	TypeError)r/   r0   r1   r   r   r   Úcargar5   s    r9   é,  c              
   C   s„   t | ƒ}|d krd S zNt |d ¡}|jd kr4W d S t tj¡|  ¡ }|dk sX||kr^W d S |W S  tt	t
fk
r~   Y d S X d S )Nr   r   )r9   r   ZfromisoformatZtzinfor   r   r   Ztotal_secondsr7   r8   ÚKeyError)r/   Zmax_edad_segundosr1   ZrecibidoZedadr   r   r   Úcargar_vigenteD   s     ÿ
ÿr<   )r:   )r)   r$   r    Úpathlibr   r   r   r   r4   r9   r<   r   r   r   r   Ú<module>   s   