a
    h                     @   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dJdKdLddMdNdOdPdQdRdSd"dTd;g g dQdUdVddWdXdYdZdXdYd[dXdYgZd\d] Zd^d_ Z	d`S )a	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=901995Z b608f466c7fa24b9666c6439d766ab7eZ901995Zflvz1Extended: 'That person cannot be me' Johnson saysz$md5:958dd3b4f5bbbf0ed4d045c790d89285iuWZ20160630r   zSeason 0z'CTV News National | Archive | Stories 2Z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=1272429Z 8b8c2b33c5c1803e3c26bc74ff8694d5Z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.jpgZ58104zCTV News BarrieZ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   Z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.6665797Z 24bc4b88cdc17d8c3fc01dfc228ab72cZ2695026Z89852zFrom CTV News Channelz$md5:796a985a23cacc7e1e2fafefd94afd0aZ2023z1Bank of Canada asks public about digital currencyZ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=582589Z 135cc592df607d29dddc931f1b756ae2Z582589iUgc_@zCTV News Stoxz=CTV original footage of the rise and fall of the Berlin Wall.zBerlin WallZ63817Z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#3023759Z a14c0603557decc6531260791c23cc5eZ3023759i  i#9gZ2024zEpisode 125zCTV News Ottawa at Sixgx&0@}   z6CTV News Ottawa at Six for Saturday, November 16, 2024Z92667)r   r   r   r   r   Zepisoder   r   Zepisode_numberr   r   r   r   r   r   r   zhttp://www.ctvnews.ca/1.810401T)r   Z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:)Z
url_resultr   )selfclip_id r"   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/ctvnews.py_ninecninemedia_url_result   s    z$CTVNewsIE._ninecninemedia_url_resultc              
      s    |}t jtj|j }r0|d}t j|rH 	|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 }n8 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 )ZotZmaxItemsPerPage)queryc                    s   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                    s   g | ]}  |qS r"   r&   r'   r)   r"   r#   r*          zgetAuthStates\("([\d+,]+)"zclip ids,c                    s   g | ]}  |qS r"   r&   r'   r)   r"   r#   r*      s   zjasper-player-containerT)taghtmlzaxis-ids.ZaxisId)Z	_match_idre	fullmatch_VIDEO_ID_REurllibparseurlparsefragmentgroupr$   Z_download_webpager   findallZ_search_regexsplitr	   r   r   jsonloadsstrZplaylist_result)r    r   Zpage_idZmobjZwebpageentriesr"   r)   r#   _real_extract   s2    






zCTVNewsIE._real_extractN)
__name__
__module____qualname__Z_BASE_REGEXr1   Z_PLAYLIST_ID_REZ
_VALID_URLZ_TESTSr$   r=   r"   r"   r"   r#   r
      s   r
   )r9   r/   urllib.parser2   commonr   Zninecninemediar   utilsr   r   Zutils.traversalr   r	   r
   r"   r"   r"   r#   <module>   s   