a
    h,                     @   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 )NZdateCreatedZuts)r	   r   )self
video_data r   L/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/turner.py_extract_timestamp   s    zTurnerBaseIE._extract_timestampNc                 C   s   |  d|dd }| j|}|sd|i}	|r:|	| n||	d< |drn| |d ||d |d ||	d	< | j|||	d
}
t|
d}|rt|ddt|
d}|s|S || j|< |d | S )Nzhttps?://[^/]+(.+/)zsecure path*pathZvideoIdZauth_requiredurlZ	site_nameZaccessToken)queryz	error/msgT)expectedtoken?hdnea=)Z_search_regex_AKAMAI_SPE_TOKEN_CACHEgetupdateZ_extract_mvpd_auth_download_xmlr   r   )r   tokenizer_src	video_url
content_idap_datasoftware_statementZcustom_tokenizer_queryZsecure_pathr   r   auth	error_msgr   r   r   _add_akamai_spe_token   s.    



z"TurnerBaseIE._add_akamai_spe_tokenFc                 C   sH  | j ||dd |d}|si S |jd }t|ddd}t|dpB|}	g }
g }g }i }td	}|d
D ]}t|j }|sqht	|}|
drqhnv|
dr|d}|sqh| |d |d | |	||}n<td|s|||di }|d}|sqh|| }||
v rqh|
| |d}|dv rR|dg ||d qh|dkrn|||d qh|dkr|| j||dd qhtd|r|| |||di ddd qh|dkr(| j||d |pd!dd"}d|v rd#|v r|D ]}d$d%d&gi|d'< q|| qh|dkr\|| jt|d(d)i||pPd*dd+ qh|||d,}||}|r|t|d-t|d.t|dd/ njt|tr| rt||d0< nFtd1|}|r|d2d3kr|d4d5d6 nt|d2|d0< || qh|d7D ]}|d8D ]r}t|d9}|r8|d:r`q8|d;pz|d<pzd}||g |d=d>d?d@|dAdB q8q*|dCdD |dED  t|dFdGk}|||||t|dHtt|dIt t|dJpt|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       z0TurnerBaseIE._extract_cvp_info.<locals>.<lambda>)Ztransform_sourcefatalidZheadlineT)r-   Z	contentIdz=(?P<width>[0-9]+)x(?P<height>[0-9]+)(?:_(?P<bitrate>[0-9]+))?z.//filez/mp4:protected/z/secure/securer!   	media_srcz	https?://defaultZbitrate)sccZsrtvtten)extr   Zpng)r.   r   ZsmilFz#https?://[^/]+\.akamaihd\.net/[iz]/Zf4mhostzpmd.cdn.turner.com)hdshttpZm3u8mp4hls)m3u8_idr-   r   ffmpeg_args	-seekable0downloader_optionsZhdcorez3.7.0r7   )Zf4m_idr-   )	format_idr   r5   widthheight)rA   rB   tbrrC   zios_(audio|[0-9]+)$r   audiononeZm4a)Zvcodecr5   zclosedCaptions/sourcetrackr   z/biglanglabelr2   r3   tt)r2   ZwebvttZsmptettformat)r   r5   c                 s   sB   | ]:}| d p| d|jt| dt| ddV  qdS )ZcutnamerA   rB   )r.   r   rA   rB   N)r   textr	   ).0imager   r   r   	<genexpr>   s   z1TurnerBaseIE._extract_cvp_info.<locals>.<genexpr>zimages/imageZisLivetrueZposterdescriptionlengthZtrtZmetasversionZ	showTitleZseasonNumberZepisodeNumber)r.   titleformats	subtitles
thumbnailsZ	thumbnailrQ   duration	timestampZupload_dateZseriesZseason_numberZepisode_numberis_live)#r    attribr   recompilefindallr   rL   r)   r   
startswithr   r(   matchappend
setdefaultextendZ_extract_smil_formatsZ_extract_akamai_formats_extract_m3u8_formatsZ_extract_f4m_formatsr   searchr   intgroupr	   
isinstancestrisdigitendswithr   r
   r   r   )r   Zdata_srcZvideo_idr%   Z	path_datar$   r-   r   rT   r#   urlsrU   rW   rV   ZrexZ
video_filer"   r5   Zsecure_path_dataZbase_path_datar0   r@   Zm3u8_formatsfZmobjsourcerF   Z	track_urlrG   rZ   r   r   r   _extract_cvp_info2   s   






















	

zTurnerBaseIE._extract_cvp_infoc                 C   sH  t |tsi }|d}| d| d|d d }d }g }g }	dD ]}
||
i }|dpf|d}|snqD|d	d
kr| d|||||}|	| j||dd|dd t|d}|sD|sD|dg D ]H}t|d}t|d}|d u s|d u rq|||| d qqD|r<|	D ]}dg di|d< q$|	||dS )NrZ   zhttps://medium.ngtv.io/media/z/tvZmediatv)ZunprotectedZbulkaesZ	secureUrlr   ZplaylistProtectionZspez%https://token.ngtv.io/token/token_sper9   r:   F)r;   Zliver-   ZtotalRuntimeZcontentSegmentsstartrX   )
start_timeZend_timer<   )r=   r>   z-icyr>   r?   )rU   chaptersrX   )	rh   dictr   Z_download_jsonr(   rc   rd   r   ra   )r   Zmedia_idZtokenizer_queryr%   r$   rZ   Zstreams_datarX   rs   rU   Zsupported_typeZstream_dataZm3u8_urlZchapterrr   Zchapter_durationrm   r   r   r   _extract_ngtv_info   sZ    



zTurnerBaseIE._extract_ngtv_info)N)N)__name__
__module____qualname__r   r   r(   ro   ru   r   r   r   r   r      s   
 *r   )r\   Z	adobepassr   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   <module>   s   4