o
    i,                     @   s\   d dl Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZ G dd deZdS )    N   )AdobePassIE   )ExtractorErrordetermine_extfix_xml_ampersandsfloat_or_noneint_or_noneparse_durationstrip_or_noneupdate_url_queryurl_or_none
xpath_attr
xpath_textc                   @   s<   e Zd Zi Zdd ZdddZi i dfddZdd	d
ZdS )TurnerBaseIEc                 C   s   t t|ddS )NdateCreateduts)r	   r   )self
video_data r   K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/turner.py_extract_timestamp   s   zTurnerBaseIE._extract_timestampNc                 C   s   |  d|dd }| j|}|sZd|i}	|r|	| n||	d< |dr7| |d ||d |d ||	d	< | j|||	d
}
t|
d}|rLt|ddt|
d}|sU|S || j|< |d | S )Nzhttps?://[^/]+(.+/)zsecure path*pathvideoIdauth_requiredurl	site_nameaccessToken)queryz	error/msgT)expectedtoken?hdnea=)_search_regex_AKAMAI_SPE_TOKEN_CACHEgetupdate_extract_mvpd_auth_download_xmlr   r   )r   tokenizer_src	video_url
content_idap_datasoftware_statementcustom_tokenizer_querysecure_pathr!   r   auth	error_msgr   r   r   _add_akamai_spe_token   s.   



z"TurnerBaseIE._add_akamai_spe_tokenFc                 C   s4  | j ||dd |d}|si S |jd }t|ddd}t|dp!|}	g }
g }g }i }td	}|d
D ]P}t|j }|sAq4t	|}|
drKq4|
drh|d}|sXq4| |d |d | |	||}ntd|s|||di }|d}|sq4|| }||
v rq4|
| |d}|dv r|dg ||d q4|dkr|||d q4|dkr|| j||dd q4td|r|| |||di ddd q4|dkr
| j||d |pd!dd"}d|v rd#|v r|D ]
}d$d%d&gi|d'< q|| q4|dkr$|| jt|d(d)i||pd*dd+ q4|||d,}||}|rK|t|d-t|d.t|dd/ n5t|tr| r]t||d0< n#td1|}|r|d2d3krw|d4d5d6 n	t|d2|d0< || q4|d7D ]B}|d8D ]9}t|d9}|r|d:rq|d;p|d<pd}||g |d=d>d?d@|dAdB qq|dCdD |dED  t|dFdGk}|||||t|dHtt|dIt t|dJpt|dK| !|t"|dLdMt|dNtt|dOtt|dP|dQS )RNc                 S   s   t |  S N)r   strip)sr   r   r   <lambda>5   s    z0TurnerBaseIE._extract_cvp_info.<locals>.<lambda>)transform_sourcefatalidheadlineT)r8   	contentIdz=(?P<width>[0-9]+)x(?P<height>[0-9]+)(?:_(?P<bitrate>[0-9]+))?z.//filez/mp4:protected/z/secure/securer)   	media_srcz	https?://defaultbitrate)sccsrtvtten)extr   png)r9   r   smilFz#https?://[^/]+\.akamaihd\.net/[iz]/f4mhostzpmd.cdn.turner.com)hdshttpm3u8mp4hls)m3u8_idr8   r"   ffmpeg_args	-seekable0downloader_optionshdcorez3.7.0rI   )f4m_idr8   )	format_idr   rD   widthheight)rV   rW   tbrrX   zios_(audio|[0-9]+)$r   audiononem4a)vcodecrD   zclosedCaptions/sourcetrackr   z/biglanglabelr@   rB   tt)r@   webvttsmptettformat)r   rD   c                 s   sD    | ]}| d p| d|jt| dt| ddV  qdS )cutnamerV   rW   )r9   r   rV   rW   N)r%   textr	   ).0imager   r   r   	<genexpr>   s    z1TurnerBaseIE._extract_cvp_info.<locals>.<genexpr>zimages/imageisLivetrueposterdescriptionlengthtrtmetasversion	showTitleseasonNumberepisodeNumber)r9   titleformats	subtitles
thumbnails	thumbnailrm   duration	timestampupload_dateseriesseason_numberepisode_numberis_live)#r(   attribr   recompilefindallr   rf   r4   r   
startswithr%   r2   matchappend
setdefaultextend_extract_smil_formats_extract_akamai_formats_extract_m3u8_formats_extract_f4m_formatsr   searchr&   intgroupr	   
isinstancestrisdigitendswithr   r
   r   r   )r   data_srcvideo_idr-   	path_datar,   r8   r   ru   r+   urlsrv   rx   rw   rex
video_filer*   rD   secure_path_database_path_datar=   rU   m3u8_formatsfmobjsourcer]   	track_urlr^   r   r   r   r   _extract_cvp_info2   s  



















zTurnerBaseIE._extract_cvp_infoc                 C   sB  t |tsi }|d}| d| d|d d }d }g }g }	dD ]i}
||
i }|dp3|d}|s7q"|d	d
krH| d|||||}|	| j||dd|dd t|d}|s|s|dg D ]#}t|d}t|d}|d u s|d u rqg|||| d qgq"|r|	D ]
}dg di|d< q|	||dS )Nr   zhttps://medium.ngtv.io/media/z/tvmediatv)unprotectedbulkaes	secureUrlr   playlistProtectionspez%https://token.ngtv.io/token/token_sperL   rM   F)rN   liver8   totalRuntimecontentSegmentsstartrz   )
start_timeend_timerO   )rP   rQ   z-icyrQ   rR   )rv   chaptersrz   )	r   dictr%   _download_jsonr2   r   r   r   r   )r   media_idtokenizer_queryr-   r,   r   streams_datarz   r   rv   supported_typestream_datam3u8_urlchapterr   chapter_durationr   r   r   r   _extract_ngtv_info   s\   




zTurnerBaseIE._extract_ngtv_infor3   )__name__
__module____qualname__r$   r   r2   r   r   r   r   r   r   r      s    
 *r   )r   	adobepassr   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   <module>   s    4