o
    i                     @   sd   d dl Z d dlZd dlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ G dd	 d	eZdS )
    N   )InfoExtractor)NineCNineMediaIE   )extract_attributes
orderedSet)find_elementtraverse_objc                   @   s  e Zd ZdZdZdZe de e de e de e de de d	e gZd
dddddddg ddg dddddddddddddd dg dg d!d"d#d$d%dd&d'd(id)d*d+d'd,id-d*d.d'd/id0d*d1d2d3dd4d5d6d7d8g g d9d:d;d<d=d>dd?d@dAdg dBddCd;dDdEdFdGdg dHdIddJdKi d'dLdMddNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d"d]d^d_d;d`g dag dbdWdcddddedfdgdhdfdgdidfdggZdjdk Zdldm Z	dnS )o	CTVNewsIEz!https?://(?:[^.]+\.)?ctvnews\.ca/z(?P<id>\d{5,})z(?P<id>\d\.\d{5,})zvideo/czvideo(?:-gallery)?/?\?clipId=zvideo/?\?(?:playlist|bin)Id=z(?!video/)[^?#]*?z/?(?:$|[?#])z(?!video/)[^?#]+\?binId=z)http://www.ctvnews.ca/video?clipId=901995 b608f466c7fa24b9666c6439d766ab7e901995flvz1Extended: 'That person cannot be me' Johnson saysz$md5:958dd3b4f5bbbf0ed4d045c790d89285iuW20160630r   zSeason 0z'CTV News National | Archive | Stories 257981zre:https?://.*\.jpg$g5^I@)idexttitledescription	timestampupload_date
categoriesseason_numberseasontagsseries	season_id	thumbnailduration)urlmd5	info_dictz\https://barrie.ctvnews.ca/video/c3030933-here_s-what_s-making-news-for-nov--15?binId=1272429 8b8c2b33c5c1803e3c26bc74ff8694d53030933u)   Here’s what’s making news for Nov. 15uJ   Here are the top stories we’re working on for CTV News at 11 for Nov. 15zhhttp://images2.9c9media.com/image_asset/2021_2_22_a602e68e-1514-410e-a67a-e1f7cccbacab_png_2000x1125.jpg58104zCTV News Barrie20241116gbX9xE@i7g)r   r   r   r   r   r   r   r   r   r   r   r   r   r   z0http://www.ctvnews.ca/video?playlistId=1.2966224r   z	1.2966224   )r   r    playlist_mincountz+http://www.ctvnews.ca/video?binId=1.2876780z	1.2876780d   zlhttps://www.ctvnews.ca/it-s-been-23-years-since-toronto-called-in-the-army-after-a-major-snowstorm-1.5736957z	1.5736957   z~https://www.ctvnews.ca/business/respondents-to-bank-of-canada-questionnaire-largely-oppose-creating-a-digital-loonie-1.6665797 24bc4b88cdc17d8c3fc01dfc228ab72c269502689852zFrom CTV News Channelz$md5:796a985a23cacc7e1e2fafefd94afd0a2023z1Bank of Canada asks public about digital currency20230526i  zhhttp://images2.9c9media.com/image_asset/2019_3_28_35f5afc3-10f6-4d92-b194-8b9a86f55c6a_png_1920x1080.jpgipdgV-o@)r   r   r   r   r   r   r   r   r   r   r   r   r   r   z3https://stox.ctvnews.ca/video-gallery?clipId=582589 135cc592df607d29dddc931f1b756ae2582589iUgc_@zCTV News Stoxz=CTV original footage of the rise and fall of the Berlin Wall.zBerlin Wall6381720150401)r   r   r   r   r   r   r   r   r   r   r   r   r   r   zdhttps://ottawa.ctvnews.ca/features/regional-contact/regional-contact-archive?binId=1.1164587#3023759 a14c0603557decc6531260791c23cc5e3023759r   r   i  r   i#9gr   2024episodezEpisode 125r   zCTV News Ottawa at Sixr   gx&0@episode_number}   r   r   z6CTV News Ottawa at Six for Saturday, November 16, 2024r   r   r   r   r   92667zhttp://www.ctvnews.ca/1.810401T)r   only_matchingz[http://www.ctvnews.ca/canadiens-send-p-k-subban-to-nashville-in-blockbuster-trade-1.2967231z5http://vancouverisland.ctvnews.ca/video?clipId=761241c                 C   s   |  d| t|S )Nz9c9media:ctvnews_web:)
url_resultr   )selfclip_id r=   L/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/ctvnews.py_ninecninemedia_url_result   s   z$CTVNewsIE._ninecninemedia_url_resultc              
      s    |}t jtj|j }r|d}t j|r$ 	|S  j
d| |dddd} fddttd	|D }|s{ 
||}d
|v r_ fdd d|ddD }n fddt|tdddhthdtjhddthfD } ||S )Nr   zhttps://www.ctvnews.ca/zexample.AjaxPageLayout.oti@B )otmaxItemsPerPage)queryc                       g | ]}  |qS r=   r?   .0r<   r;   r=   r>   
<listcomp>   s    z+CTVNewsIE._real_extract.<locals>.<listcomp>zclip\.id\s*=\s*(\d+);zgetAuthStates("c                    rC   r=   rD   rE   rG   r=   r>   rH      s    zgetAuthStates\("([\d+,]+)"zclip ids,c                    rC   r=   rD   rE   rG   r=   r>   rH      s    
zjasper-player-containerT)taghtmlzaxis-ids.axisId)	_match_idre	fullmatch_VIDEO_ID_REurllibparseurlparsefragmentgroupr?   _download_webpager   findall_search_regexsplitr	   r   r   jsonloadsstrplaylist_result)r;   r   page_idmobjwebpageentriesr=   rG   r>   _real_extract   s2   






zCTVNewsIE._real_extractN)
__name__
__module____qualname___BASE_REGEXrP   _PLAYLIST_ID_RE
_VALID_URL_TESTSr?   rb   r=   r=   r=   r>   r
      s$   	
 r
   )rZ   rN   urllib.parserQ   commonr   ninecninemediar   utilsr   r   utils.traversalr   r	   r
   r=   r=   r=   r>   <module>   s    