o
    i                     @   s`   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 ddlmZ G dd deZdS )   )InfoExtractor   )ExtractorErrorint_or_none
js_to_jsonparse_filesizeparse_qsparse_resolutionstr_or_noneupdate_url_queryurl_basenameurlencode_postdataurljoin)traverse_objc                   @   s   e Zd ZdZdZddddddd	d
ddddddddddddddd
dddddddddgZdd Zdd Zd d! Zd"S )#ZoomIEzoomz_(?P<base_url>https?://(?:[^.]+\.)?zoom\.us/)rec(?:ording)?/(?P<type>play|share)/(?P<id>[\w.-]+)zhttps://economist.zoom.us/rec/play/dUk_CNBETmZ5VA2BwEl-jjakPpJ3M1pcfVYAPRsoIbEByGsLjUZtaa4yCATQuOL3der8BlTwxQePl_j0.EImBkXzTIaPvdZO5 ab445e8c911fddc4f9adc842c2c5d434zadUk_CNBETmZ5VA2BwEl-jjakPpJ3M1pcfVYAPRsoIbEByGsLjUZtaa4yCATQuOL3der8BlTwxQePl_j0.EImBkXzTIaPvdZO5mp4z1China's "two sessions" and the new five-year plan)idexttitlez1Recording requires email authentication to access)urlmd5	info_dictskipzhttps://ffgolf.zoom.us/rec/play/qhEhXbrxq1Zoucx8CMtHzq1Z_2YZRPVCqWK_K-2FkEGRsSLDeOX8Tu4P6jtjZcRry8QhIbvKZdtr4UNo.QcPn2debFskI9whJ 2c4b1c4e5213ebf9db293e88d9385beezaqhEhXbrxq1Zoucx8CMtHzq1Z_2YZRPVCqWK_K-2FkEGRsSLDeOX8Tu4P6jtjZcRry8QhIbvKZdtr4UNo.QcPn2debFskI9whJu1   Prépa AF2023 - Séance 5 du 11 avril - R20/VM/GO)r   r   r   zshttps://us02web.zoom.us/rec/share/hkUk5Zxcga0nkyNGhVCRfzkA2gX_mzgS3LpTxEEWJz9Y_QpIQ4mZFOUx7KZRZDQA.9LGQBdqmDAYgiZ_8 90fdc7cfcaee5d52d1c817fc03c43c9bzQhkUk5Zxcga0nkyNGhVCRfzkA2gX_mzgS3LpTxEEWJz9Y_QpIQ4mZFOUx7KZRZDQA.9LGQBdqmDAYgiZ_8z*Timea Andrea Lelik's Personal Meeting RoomzThis recording has expiredzyhttps://cityofdetroit.zoom.us/rec/share/VjE-5kW3xmgbEYqR5KzRgZ1OFZvtMtiXk5HyRJo5kK4m5PYE6RF4rF_oiiO_9qaM.UTAg1MI7JSnF3ZjX bdc7867a5934c151957fb81321b3c024zQVjE-5kW3xmgbEYqR5KzRgZ1OFZvtMtiXk5HyRJo5kK4m5PYE6RF4rF_oiiO_9qaM.UTAg1MI7JSnF3ZjXz3February 2022 Detroit Revenue Estimating Conferencei  z
mincount:3)r   r   r   durationformatsc                 C   s   | j d|d|tdS )Nzwindow\.__data__\s*=data)transform_source)_search_jsonr   )selfwebpagevideo_id r&   I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/zoom.py_get_page_data>   s   
zZoomIE._get_page_datac           
      C   s   | j ||d| dd}z| d|}W n ty   | Y S w | d}|s-tddd|d	d
k}| j|d|r<dnd  |ddt||rHdndd  ||ddd}	|	dsdt|	d dd| j ||d| ddS )NzDownloading z webpagenotepassword_formvideopasswordzFThis video is protected by a passcode, use the --video-password optionT)expecteduseWhichPasswdmeetingzrec/validate%s_passwd_meet zValidating passcodezWrong passcodemeetfileIdaction)r   passwdr5   )r    statuserrorMessagezRe-downloading )_download_webpage_form_hidden_inputsr   	get_paramget_download_jsonr   )
r#   r   base_urlr%   url_typer$   formpassword
is_meeting
validationr&   r&   r'   _get_real_webpageB   s.   

zZoomIE._get_real_webpagec                 C   s"  |  |ddd\}}}i }t|dthddfi}|dkrK| |||d}| ||d }| j| d| |d	d
d d }	tt||	|}d|d< | |||d}| ||d }
|
sat	d|
| | j| d|
 ||ddd }i }dD ]}|| drt||| d ddg||< qzg }|dr|d|d tt|dtt|dddttt|dd d! |d"r|d#|d" tt|d$tt|d%dddd& |d'}|r|i t| jd(t|d)d d*d+|d,dd-d. |tt|d/t|d0||d1|id2S )3Nr>   typer   	startTimeshare	meetingIdz"nws/recording/1.0/play/share-info/zDownloading share info JSONr)   resultredirectUrltruecontinueModeplayfileIdzUnable to extract file IDznws/recording/1.0/play/info/zDownloading play info JSON)queryr*   )
transcriptccchapterUrlvtt)r   r   
viewMp4UrlzCamera stream)viewResolvtions    )rW   r   viewr   )	recordingfileSizeInMBrX   )format_noter   widthheight	format_idr   filesize_approx
preferenceshareMp4UrlzScreen share stream)shareResolvtionsrX   )rc   r   )r\   r   r]   r^   r_   r   ra   viewMp4WithshareUrlz_(\d+x\d+)\.mp4
resolution)defaultzScreen share with cameraview_with_sharer   )r\   r   r_   r   ra   )r2   topicr   Referer)r   r   r   	subtitlesr   http_headers)_match_valid_urlgroupr   r   rD   r(   r=   r   r   r   updater<   appendr   r   r
   r	   _search_regexr   )r#   r   r>   r?   r%   rP   start_paramsr$   
meeting_idredirect_pathfile_idr    rj   _typer   view_with_share_urlr&   r&   r'   _real_extractY   s   





zZoomIE._real_extractN)	__name__
__module____qualname__IE_NAME
_VALID_URL_TESTSr(   rD   rw   r&   r&   r&   r'   r      sN    )r   N)commonr   utilsr   r   r   r   r   r	   r
   r   r   r   r   utils.traversalr   r   r&   r&   r&   r'   <module>   s    4