
    }j"                     |    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e      Z G d de      Zy	)
   )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                   z    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 Zd Zd Zy) 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                 6    | j                  d|d|t              S )Nzwindow\.__data__\s*=data)transform_source)_search_jsonr   )selfwebpagevideo_ids      H/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/extractor/zoom.py_get_page_datazZoomIE._get_page_data>   s(      #WfhQ[ ! ] 	]    c                    | j                  ||d| d      }	 | j                  d|      }| j                  d      }|st        dd      |j	                  d	      d
k(  }| j                  |d|rdndz  z   |ddt        ||rdnddz      ||j	                  d      d            }	|	j	                  d      st        |	d   d      | j                  ||d| d      S # t        $ r |cY S w xY w)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   passwdr:   )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
validations
             r*   _get_real_webpagezZoomIE._get_real_webpageB   s-   ((h|H:U]=^(_	++OWED >>/2 Xcgi iXX./9<
((.Z'RPP+-=DVjFfDE"((8,X E ) 
 ~~h' N!;dKK%%c8OH:U]:^%__#  	N	s   C C-,C-c                     | j                  |      j                  ddd      \  }}}i }t        |dt        hddfi      }|dk(  rc| j	                  |||d      }| j                  ||      d   }| j                  | d| |d	
      d   d   }	t        t        ||	      |      }d|d<   | j	                  |||d      }| j                  ||      d   }
|
st        d      |j                  |       | j                  | d|
 ||d      d   }i }dD ]0  }|j                  | d      st        ||| d         ddg||<   2 g }|j                  d      r_|j                  d|d   t        t        |d            t        t        |d            ddt        t        t        |d                  d d!       |j                  d"      rB|j                  d#|d"   t        t        |d$            t        t        |d%            dddd&       |j                  d'      }|r@|j                  i t!        | j#                  d(t%        |      d)d *            d+|d,dd-d.       |t        t        |d/            t        |j                  d0            ||d1|id2S )3NrC   typer   	startTimeshare	meetingIdz"nws/recording/1.0/play/share-info/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    )r^   r   viewr   )	recordingfileSizeInMBr_   )format_noter   widthheight	format_idr   filesize_approx
preferenceshareMp4UrlzScreen share stream)shareResolvtionsr_   )rj   r   )rc   r   rd   re   rf   r   rh   viewMp4WithshareUrlz_(\d+x\d+)\.mp4
resolution)defaultzScreen share with cameraview_with_sharer   )rc   r   rf   r   rh   )r7   topicr!   Referer)r   r   r!   	subtitlesr"   http_headers)_match_valid_urlgroupr   r	   rI   r+   rB   r   r   r   updaterA   appendr   r   r   r
   _search_regexr   )r'   r   rC   rD   r)   rW   start_paramsr(   
meeting_idredirect_pathfile_idr$   rq   _typer"   view_with_share_urls                   r*   _real_extractzZoomIE._real_extractY   s   '+'<'<S'A'G'G
TZ\`'a$(H#C+
KQS7T)UVw,,S(HgNG,,Wh?LJ //*>zlK< 0 >>FHHUWM #78]#C\RC$*E.!((h&I%%gx8B !<==\"""j4WI>PU- # //79 	4 	Exx5'&"8TUG3--@A % $	% 	 88L!NN.L)$\$8N%OP%l49O&PQ##1+l4Qn>o2p#q	 	 88M"NN4M*$\$8O%PQ%l49P&QR$   #hh'<=NN "4#5#5&5H(I<ae $6 $g h  :*.   d4E!FG#DHHZ$89"8	
 		
r,   N)	__name__
__module____qualname__IE_NAME
_VALID_URL_TESTSr+   rI   r~    r,   r*   r   r      s    GsJ V1uI

 D	 S1uH
		 E1eB

 -
 K1eJ#
	9'FR]`.O
r,   r   c                   :    e Zd ZdZdZddddddd	d
deddgZd Zy)ZoomClipsIEz
zoom:clipsz9https?://(?:[^.]+\.)?zoom\.us/clips/share/(?P<id>[\w.-]+)z2https://zoom.us/clips/share/6YEG4i_qS0eiT7UH9zPeYw 1431f67d2e74a3ff3fec4feadb9847776YEG4i_qS0eiT7UH9zPeYwr   z	Test Clipu   Hans Müllerr   i 5j20260619)r   r   r   uploaderr!   release_timestamprelease_date
view_countr   c           
         | j                  |      }| j                  d| |d      d   }|d   }d|it        |dt        hfdt        hfd	t	        d
      hfdt        hfd      t        |ddt        hf      |d   dddgdS )Nz5https://zoomclips.zoom.us/nws/marvel/2.0/clips/share/rP   r.   rQ   	mediaInfor   
mediaTopic	ownerNamecreatedTimei  )scalemediaDuration)r   r   r   r!   statisticsInfocountplayUrlm3u8_nativer   )r   protocolr   )r   r"   )	_match_idrB   r   strr   )r'   r   clip_idrQ   
media_infos        r*   r~   zZoomClipsIE._real_extract   s    ..%$$CG9M7 % 99AC K(
 '
:&.(3%0&3k6M5N%O,{m<	( 
 'v0@'K=/YZ!),) 
 	
r,   N)r   r   r   r   r   intr   r~   r   r,   r*   r   r      s@    GMJC1* &!+&	
 F
r,   r   N)commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r   r,   r*   <module>r      s<    !    +V
] V
r(
- (
r,   