U
    Ç—×j  ã                   @   sê   d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ edd�Zedd�ZdZdd„ Zdd„ Zdd„ Ze d¡dd„ ƒZe d¡e dœdd„ƒZ!dS )é    N)Úurlsplit)Ú	APIRouterÚHTTPException)ÚResponseÚStreamingResponse)Úrun_in_threadpool)ÚHLSRegistryV2)Útransformar_manifest)Útransformar_manifest_v4)Údescargar_hls)Úpreparar_segmentoÚtransmitir_preparado)Úvalidar_destinoz/api/player)ÚprefixiX  )Úttlzppv/lagranja1c                 C   s&   t | ƒ} dt| f}t | |¡}d| S )NZmasterú/api/player/resource/©r   ÚCANALÚregistroÚ	registrar)ÚurlÚ	identidadÚtoken© r   ú-/var/www/html/NFL_ST/hermes_player_v4_test.pyÚregistrar_maestro   s    
r   c                 C   s&   t | ƒ} dt|f}t | |¡}d| S )NZsegmentor   r   )r   r   Zidentidad_segurar   r   r   r   Úregistrar_segmento   s    
r   c                 Ã   s¶   t | ƒ} t| ƒj d¡sBt| ƒI d H \}}tt||ƒdddid�S tt| dƒI d H }|d }|d }| 	d	¡svt
d
ƒ‚| d¡}d|kr˜t||ttƒ}nt||tƒ}t|dddid�S )Nz.m3u8z
video/mp2tzCache-Controlzno-store)Ú
media_typeÚheadersÚmanifestÚ	contenidoÚ	url_finals   #EXTM3UzManifiesto HLS invalidoz	utf-8-sigz#EXT-X-MEDIA-SEQUENCE:zapplication/vnd.apple.mpegurl)Úcontentr   r   )r   r   ÚpathÚendswithr   r   r   r   r   Ú
startswithÚ
ValueErrorÚdecoder
   r   r   r	   r   r   )r   ÚclienteÚ	respuestaÚ	resultador    ÚorigenÚtextoÚtransformador   r   r   Ú	responder!   sF    ý  ÿ


   ÿ  ÿýr.   z/play/ppv/lagranja1.m3u8c                  Ã   sT   ddl m}  z"t| ddƒI d H }t|ƒI d H W S  tk
rN   tddd�‚Y nX d S )Nr   )Úresolver_canalÚppvÚ	lagranja1éö  zNo se pudo iniciar reproduccion©Ústatus_codeÚdetail)Úhermes_player_gatewayr/   r   r.   Ú	Exceptionr   )r/   r   r   r   r   Ú
reproducirH   s      ÿ
þr8   z/resource/{identificador})Úidentificadorc              
   Ã   sÄ   zt  | ¡}W nP tk
r^ } z2t|ƒ}|dkr4d}td|dd� tddd�‚W 5 d }~X Y nX zt|ƒI d H W S  tjk
r  } ztd	d
d�‚W 5 d }~X Y n  t	k
r¾   td	dd�‚Y nX d S )N)zRecurso desconocidozRecurso expiradozError de registrozHERMES V4 REGISTRO:T)Úflushi”  zRecurso no disponibler3   r2   zOrigen HLS no disponiblezError de recurso HLS)
r   Úresolverr&   ÚstrÚprintr   r.   ÚhttpxÚHTTPStatusErrorr7   )r9   r   ÚerrorZcausaÚer   r   r   ÚrecursoX   s.    þþþrB   )"r>   Úurllib.parser   Úfastapir   r   Úfastapi.responsesr   r   Ústarlette.concurrencyr   Zhermes_hls_registry_v2r   Úhermes_hls_manifestr	   Zhermes_hls_manifest_v4_labr
   Úhermes_hls_fetchr   Úhermes_hls_stream_v3r   r   Úhermes_hls_securityr   Úrouterr   r   r   r   r.   Úgetr8   r<   rB   r   r   r   r   Ú<module>   s(   

'
