U
    g                     @   sP   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 G dd deZdS )   )InfoExtractor   )
ExtractorErrorint_or_none
js_to_jsonparse_filesizeparse_resolutionstr_or_nonetraverse_objurl_basenameurlencode_postdataurljoinc                   @   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 )#ZoomIEZ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.EImBkXzTIaPvdZO5Z 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.QcPn2debFskI9whJZ 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_8Z 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.UTAg1MI7JSnF3ZjXZ 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)Ztransform_source)Z_search_jsonr   )selfwebpagevideo_id r   9/tmp/pip-unpacked-wheel-q5ljy6pj/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k
r@   | Y S X | d}|s\tddd|d	d
k}| j|d|rzdnd  |ddt||rdndd  ||ddd}	|	dst|	d dd| j ||d| ddS )NzDownloading z webpagenoteZpassword_formZvideopasswordzFThis video is protected by a passcode, use the --video-password optionT)expectedZuseWhichPasswdZmeetingzrec/validate%s_passwdZ_meet zValidating passcodezWrong passcodemeetfileZIdaction)r   passwdr&   )r   statusZerrorMessagezRe-downloading )Z_download_webpageZ_form_hidden_inputsr   	get_paramget_download_jsonr   )
r   r   base_urlr   url_typer   formpasswordZ
is_meetingZ
validationr   r   r   _get_real_webpage@   s4    

    
zZoomIE._get_real_webpagec                 C   s  |  |ddd\}}}i }|dkrz| |||d}| ||d }| j| d| |ddd	 d
 }t||}d|d< | |||d}| ||d }	|	std| j| d|	 ||ddd	 }
i }dD ]4}|
| drt||
| d ddg||< qg }|
drV|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|t| jd't|d(d d)d*|d+dd,d- |tt
|
d.t	|
d/||d0|id1S )2Nr,   typer   ZshareZ	meetingIdz"nws/recording/1.0/play/share-info/zDownloading share info JSONr    resultZredirectUrltrueZcontinueModeZplayZfileIdzUnable to extract file IDznws/recording/1.0/play/info/zDownloading play info JSON)queryr!   )Z
transcriptccZchapterUrlZvtt)r   r   Z
viewMp4UrlzCamera stream)viewResolvtions    )r7   r   viewr   )Z	recordingZfileSizeInMBr8   )format_noter   widthheight	format_idr   Zfilesize_approx
preferenceZshareMp4UrlzScreen share stream)shareResolvtionsr8   )r?   r   )r:   r   r;   r<   r=   r   r>   ZviewMp4WithshareUrlz_(\d+x\d+)\.mp4
resolution)defaultzScreen share with cameraZview_with_sharer   )r:   r   r=   r   r>   )r$   Ztopicr   ZReferer)r   r   r   	subtitlesr   Zhttp_headers)Z_match_valid_urlgroupr0   r   r+   r   r   r*   appendr   r
   r   r	   r   Z_search_regexr   )r   r   r,   r-   r   r4   r   Z
meeting_idZredirect_pathZfile_idr   rC   _typer   Zview_with_share_urlr   r   r   _real_extractW   s     
  

   
 zZoomIE._real_extractN)	__name__
__module____qualname__ZIE_NAMEZ
_VALID_URLZ_TESTSr   r0   rG   r   r   r   r   r      sL   )r   N)commonr   utilsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   <module>   s   0