
    VGh                          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	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)    N   )InfoExtractor   )	HTTPError)	ExtractorErrorint_or_none	qualitiesremove_startsmuggle_urlunsmuggle_urlupdate_url_queryurl_or_noneurlencode_postdata)traverse_objc                        e Zd ZdZde Zde dg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idddddddd d!d"id#dgZd$ddd	d
ddd%gZd&Zd'Z	e
d+d(       Ze fd)       Zd* Z xZS ),SproutVideoIEz://videos\.sproutvideo\.com/embed/(?P<id>[\da-f]+)/[\da-f]+zhttps?:z,<iframe [^>]*\bsrc=["\'](?P<url>(?:https?:)?z[^"\']*)["\']zHhttps://videos.sproutvideo.com/embed/4c9dddb01910e3c9c4/0fc24387c4f24ee3 1343ce1a6cb39d67889bfa07c7b02b0e4c9dddb01910e3c9c4mp4u5   Adrien Labaeye : Berlin, des communautés aux communsi@  ,re:https?://images\.sproutvideo\.com/.+\.jpgidexttitleduration	thumbnailurlmd5	info_dictzHhttps://videos.sproutvideo.com/embed/a79fdcb21f1be2c62e/93bf31e41e39ca27 cebae5cf558cca83271917cf4ec03f26a79fdcb21f1be2c62ez"HS_01_Live Stream 2023-01-14 10:00i  zHhttps://videos.sproutvideo.com/embed/119cd6bc1a18e6cd98/30751a1761ae5b90 f368c78df07e78a749508b221528672c119cd6bc1a18e6cd98z 3. Updating your Partner details<   )r   r   r   r   r   formathd)r   r   r    paramszPhttps://videos.sproutvideo.com/embed/119dd8ba121ee0cc98/4ee50c88a343215d?type=hd 7f6798f037d7a3e3e07e67959de68fc6119dd8ba121ee0cc98z%Recipients Setup - Domestic Wire OnlyM   enzcount:1)r   r   r   r   r   	subtitleszZhttps://www.solidarum.org/vivre-ensemble/adrien-labaeye-berlin-des-communautes-aux-communs)r   r    zUhttps://{base}.videos.sproutvideo.com/{s3_user_hash}/{s3_video_hash}/video/index.m3u8)r'   uhdsourcec                     i }| d   |   j                         D ]  \  }}||t        |d      <    | d   |d<   |r!t        j                  j	                  |d      S |S )N
signatureszCloudFront-	sessionIDT)doseq)itemsr
   urllibparse	urlencode)policysignature_key	as_stringquerykeyvalues         e/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/sproutvideo.py_policy_to_qszSproutVideoIE._policy_to_qsR   sn     .}=CCE 	<JC6;E,sM23	<#K0k<Ev||%%e4%8P5P    c              #      K   t         |   ||      D ](  }|j                  d      rd| }t        |d|i       * y w)Nz//zhttps:referer)super_extract_embed_urls
startswithr   )clsr   webpage	embed_url	__class__s       r>   rD   z!SproutVideoIE._extract_embed_urlsZ   sN     4S'B 	;I##D)$YK0	i)S)9::	;s   =A c                 *   t        |i       \  }}| j                  |      }| j                  ||t        |ddi            }| j	                  d|d|ddd 	      }g i }}d
d|d}t        |d      r| j                  |d      }	| j                  |dd      }
| j                  |dd      }|j                  | j                   | j                  j                  d'i ||dd||	             |D ]$  }|j                  t        |d   |	      |
|d       & t        |dt        j                  hd f      x}ret        | j                        }|j!                  d      du rdnd }|j                  |D cg c]  \  }}t#        |      |d ||      |d c}}       t        |dd f      D ]8  }|j%                  |j!                  dd       g       j'                  d|d!   i       : ||||d"t        |d#t"        hfd$t(        hfd%t*        hfd&      S c c}}w )(NRefererrB   )headerszvar\s+dat\s*=\s*["\']dataz[A-Za-z0-9+/=]+z["\'];c                 H    t        j                  |       j                         S )N)base64	b64decodedecode)xs    r>   <lambda>z-SproutVideoIE._real_extract.<locals>.<lambda>h   s    f>N>Nq>Q>X>X>Z r@   )contains_patternend_patterntransform_sourcez*/*zhttps://videos.sproutvideo.com)AcceptOriginrK   hlsmtT)r:   kr   )m3u8_idrL   r;   r   )r   extra_param_to_segment_urlextra_param_to_key_url	downloadsc                     t        |d         S )Nr   r   _vs     r>   rS   z-SproutVideoIE._real_extract.<locals>.<lambda>   s    T_`abc`dTe r@   	has_audioFnone)	format_idr   r   qualityacodecsubtitleDatac                     t        |d         S )Nsrcrb   rc   s     r>   rS   z-SproutVideoIE._real_extract.<locals>.<lambda>   s    UVW\U]I^ r@   srclangr,   rm   )r   formatsr-   http_headersr   r   posterframe_url)r   r   r    )r   	_match_id_download_webpager   _search_jsonr?   extend_extract_m3u8_formats_M3U8_URL_TMPLr&   updater   dictr4   r	   
_QUALITIESgetstr
setdefaultappendr   r   )selfr   smuggled_datavideo_idrG   rM   ro   r-   rL   manifest_queryfragment_query	key_queryfmtr`   ri   rj   rh   
format_urlsub_datas                      r>   _real_extractzSproutVideoIE._real_extracta   s   *33]>>#&((<	9?U#V ) X  $gvxRd!4Z ! \  6
 e$!//c:N!//cT/JN**4*EINN455*##**2T2Hewn 6 F G  

+CJG2@.7  %TK$**Ge+fgg9g0G#xx4=V4FNN ,56 ()Z !^!"9-  6 7 %TN<^+_` 	H  i!>CJJxL 	 "#	


 4!C5)'+7/+?" 

 
	
6s   0!H
)F)__name__
__module____qualname___NO_SCHEME_RE
_VALID_URL_EMBED_REGEX_TESTS_WEBPAGE_TESTSrx   r{   staticmethodr?   classmethodrD   r   __classcell__)rI   s   @r>   r   r      s&   QMM?+JCM?R_`aLY1&LH

 Z1&9H

 Z1&7H
 T" b1&<H	*
	A,F\ l&LH
	 	N mN(JQ Q ; ;:
r@   r   c                   4    e Zd ZdZdZddddddd	d
dgZd Zy)VidsIoIEzvids.iozHhttps?://[\w-]+\.vids\.io/videos/(?P<id>[\da-f]+)/(?P<display_id>[\w-]+)zRhttps://how-to-video.vids.io/videos/799cd8b11c10efc1f0/how-to-video-live-streaming 9bbbb2c0c0739eb163b80f87b8d77c9e799cd8b11c10efc1f0r   zHow to Video: Live Streamingi
  r   r   r   c                 f   | j                  |      j                  dd      \  }}| j                  ||d      \  }}|j                  dk(  rR| j	                  d      }|st        dd      	 | j                  ||d	t        d
|i| j                  |                  }t        t        j                  ||      d       x}r| j                  |t        |      S t        d      # t
        $ rF}t        |j                  t              r&|j                  j                  dk(  rt        dd       d }~ww xY w)Nr   
display_idi  )expected_statusvideopasswordzAThis video is password-protected; use the --video-password optionT)expectedzSubmitting video passwordpassword)rM   zIncorrect passwordz+Unable to extract any SproutVideo embed url)_match_valid_urlgroup_download_webpage_handlestatus	get_paramr   rt   r   _hidden_inputs
isinstancecauser   nextr   rD   
url_result)	r   r   r   r   rG   urlhr   erH   s	            r>   r   zVidsIoIE._real_extract   s9   #44S9??lS*55c:WZ5[;;#~~o6H$Wbfh h00%@+"H---g6-  1  ]>>sGLdSS9S??9mXFFJKK " aggy1aggnn6K()=MMs   ,1C! !	D0*AD++D0N)r   r   r   IE_NAMEr   r   r   rr   r@   r>   r   r      s8    G\Jc1&3H

 
FLr@   r   )rO   urllib.parser5   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   rr   r@   r>   <module>r      sB      ! -
 
 
 +G
M G
T(L} (Lr@   