U
    g                     @   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 )NineCNineMediaIEZ9c9mediaCAz09c9media:(?P<destination_code>[^:]+):(?P<id>\d+)zGhttp://capi.9c9media.com/destinations/%s/platforms/desktop/contents/%s/c                 C   sb  |  | \}}| j||f }| j||ddid}|d }|d d }|d }|d| d	 }	| j|	|dd
id}| dst|dd r| | |	d }
g }|| j|
d |ddddd || j	|
d |ddd || j
|
d |ddd g }|dpg D ]@}|d}|s&q||t|dt|dd qg g  }}d |fd!|ffD ]<\}}||g D ]$}|d}|sq~|| q~qj|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NameZContentPackages    ZIdzcontentpackages//z[HasClosedCaptions]Zallow_unplayable_formatsc                 S   s   | d d d S )NZConstraintsZSecurityType xr   r   C/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/ninecninemedia.py<lambda>!       z0NineCNineMediaIE._real_extract.<locals>.<lambda>z	manifest.Zm3u8mp4Zm3u8_nativeZhlsF)Zm3u8_idfatalZf4mZhds)Zf4m_idr   ZmpdZdash)Zmpd_idr   ZImagesUrlZWidthZHeight)urlwidthheightZTagsZGenresZSeasonZDescZ	ShortDescZBroadcastDateTimeZEpisodeNumberc                 S   s   | d d S )NZMediar   r   r   r   r   r   r   N   r   ZDuration)idtitledescription	timestampZepisode_numberseasonseason_number	season_idseriestags
categoriesdurationformats
thumbnailsZHasClosedCaptionsenZvtt)r   extZsrtZ	subtitles)Z_match_valid_urlgroups_API_BASE_TEMPLATEZ_download_json	get_paramr   Z
report_drmextendZ_extract_m3u8_formatsZ_extract_f4m_formatsZ_extract_mpd_formatsgetappendr   r   r   r   )selfr   Zdestination_codeZ
content_idZapi_base_urlcontentr   Zcontent_packageZ
package_idZcontent_package_urlZmanifest_base_urlr(   r)   imageZ	image_urlr%   r&   Zsource_name	containereZe_namer!   infor   r   r   _real_extract   s       

        



zNineCNineMediaIE._real_extractN)__name__
__module____qualname__IE_NAME_GEO_COUNTRIES
_VALID_URLr-   r8   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 )CPTwentyFourIEZ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.5676877Z2328005r   z/WATCH: Truck rips ATM from Mississauga businessz$md5:cf7498480885f080a754389a2b2f7073iazSeason 0r   Z57974zCTV News Torontog\(:@zhhttp://images2.9c9media.com/image_asset/2014_11_5_2eb609a0-475b-0132-fbd6-34b52f6f1279_jpg_2000x1125.jpgZ20211122)r   r+   r   r   r    r!   r"   r#   r$   r'   Z	thumbnailZupload_dateTZbv)Zskip_downloadformat)r   Z	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)r   destination)groupz	9c9media::)Z	_match_idZ_download_webpageZ_search_regexZ
url_resultr	   )r2   r   Z
display_idZwebpageZvideo_idrB   r   r   r   r8   |   s    
  
zCPTwentyFourIE._real_extractN)r9   r:   r;   r<   r=   r>   Z_TESTSr8   r   r   r   r   r?   d   s(   r?   N)
commonr   utilsr   r   r   r   r   r	   r?   r   r   r   r   <module>   s   	Y