o
    i                     @   sL   d dl mZ ddlmZmZmZmZmZ G dd deZG dd deZ	dS )	   )InfoExtractor   )float_or_noneint_or_noneparse_iso8601str_or_nonetry_getc                   @   s&   e Zd ZdZdgZdZdZdd ZdS )NineCNineMediaIE9c9mediaCAz09c9media:(?P<destination_code>[^:]+):(?P<id>\d+)zGhttp://capi.9c9media.com/destinations/%s/platforms/desktop/contents/%s/c                 C   sN  |  | \}}| j||f }| j||ddid}|d }|d d }|d }|d| d	 }	| j|	|dd
id}| dsKt|dd rK| | |	d }
g }|| j|
d |ddddd || j	|
d |ddd || j
|
d |ddd g }|dpg D ]}|d}|sq||t|dt|dd qg g }}d |fd!|ffD ]\}}||g D ]}|d}|sq|| qq|d"pi }|||d#p|d$t|d%t|d&|dt|d't|dt|d(d ||t|d)||d*}|d+r%d,|
d- d-d.|
d/ d/d.gi|d0< |S )1Nz$includez?[Media.Name,Season,ContentPackages.Duration,ContentPackages.Id])queryNameContentPackages    Idzcontentpackages//z[HasClosedCaptions]allow_unplayable_formatsc                 S   s   | d d d S )NConstraintsSecurityType xr   r   S/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/ninecninemedia.py<lambda>!   s    z0NineCNineMediaIE._real_extract.<locals>.<lambda>z	manifest.m3u8mp4m3u8_nativehlsF)m3u8_idfatalf4mhds)f4m_idr    mpddash)mpd_idr    ImagesUrlWidthHeight)urlwidthheightTagsGenresSeasonDesc	ShortDescBroadcastDateTimeEpisodeNumberc                 S   s   | d d S )NMediar   r   r   r   r   r   r   N   s    Duration)idtitledescription	timestampepisode_numberseasonseason_number	season_idseriestags
categoriesdurationformats
thumbnailsHasClosedCaptionsenvtt)r+   extsrt	subtitles)_match_valid_urlgroups_API_BASE_TEMPLATE_download_json	get_paramr   
report_drmextend_extract_m3u8_formats_extract_f4m_formats_extract_mpd_formatsgetappendr   r   r   r   )selfr+   destination_code
content_idapi_base_urlcontentr9   content_package
package_idcontent_package_urlmanifest_base_urlrD   rE   image	image_urlrA   rB   source_name	containeree_namer=   infor   r   r   _real_extract   s   







zNineCNineMediaIE._real_extractN)__name__
__module____qualname__IE_NAME_GEO_COUNTRIES
_VALID_URLrN   rh   r   r   r   r   r	      s    r	   c                   @   sP   e Zd ZdZdgZdZdddddd	d
dddddddddddgZdd ZdS )CPTwentyFourIEcp24r   z0https?://(?:www\.)?cp24\.com/news/(?P<id>[^?#]+)zvhttps://www.cp24.com/news/video-shows-atm-being-ripped-out-of-business-by-pickup-truck-driver-in-mississauga-1.56768772328005r   z/WATCH: Truck rips ATM from Mississauga businessz$md5:cf7498480885f080a754389a2b2f7073iazSeason 0r   57974zCTV News Torontog\(:@zhhttp://images2.9c9media.com/image_asset/2014_11_5_2eb609a0-475b-0132-fbd6-34b52f6f1279_jpg_2000x1125.jpg20211122)r8   rI   r9   r:   r;   r=   r>   r?   r@   rC   	thumbnailupload_dateTbv)skip_downloadformat)r+   	info_dictparamsc                 C   sF   |  |}| ||}| jd|ddd\}}| d| d| t|S )Nz=getAuthStates\("(?P<id>[^"]+)",\s?"(?P<destination>[^"]+)"\);zvideo id and destination)r8   destination)groupz	9c9media::)	_match_id_download_webpage_search_regex
url_resultr	   )rX   r+   
display_idwebpagevideo_idr{   r   r   r   rh   |   s   

zCPTwentyFourIE._real_extractN)ri   rj   rk   rl   rm   rn   _TESTSrh   r   r   r   r   ro   d   s*    ro   N)
commonr   utilsr   r   r   r   r   r	   ro   r   r   r   r   <module>   s    	Y