a
    h!                     @   s   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	 d	eZG d
d deZdS )    N   )InfoExtractor   )	HTTPError)	ExtractorErrorint_or_none	qualitiesremove_startsmuggle_urlunsmuggle_urlupdate_url_queryurl_or_noneurlencode_postdata)traverse_objc                       s   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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
d1d+d,Ze fd-d.Zd/d0 Z  ZS )2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/0fc24387c4f24ee3Z 1343ce1a6cb39d67889bfa07c7b02b0eZ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/93bf31e41e39ca27Z cebae5cf558cca83271917cf4ec03f26Za79fdcb21f1be2c62ez"HS_01_Live Stream 2023-01-14 10:00i  zAccount Disabled)r   r   r   skipzHhttps://videos.sproutvideo.com/embed/119cd6bc1a18e6cd98/30751a1761ae5b90Z f368c78df07e78a749508b221528672cZ119cd6bc1a18e6cd98z 3. Updating your Partner details<   )r   r   r   r   r   formathd)r   r   r   paramszPhttps://videos.sproutvideo.com/embed/119dd8ba121ee0cc98/4ee50c88a343215d?type=hdZ 7f6798f037d7a3e3e07e67959de68fc6Z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    ZuhdsourceFc                 C   sP   i }| d |   D ]\}}||t|d< q| d |d< |rLtjj|ddS |S )NZ
signatureszCloudFront-Z	sessionIDT)doseq)itemsr	   urllibparse	urlencode)policyZsignature_key	as_stringquerykeyvalue r0   Q/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/sproutvideo.py_policy_to_qsS   s
    zSproutVideoIE._policy_to_qsc                 #   s<   t  ||D ](}|dr&d| }t|d|iV  qd S )Nz//zhttps:referer)super_extract_embed_urls
startswithr
   )clsr   webpage	embed_url	__class__r0   r1   r5   [   s    

z!SproutVideoIE._extract_embed_urlsc              
      s  t |i \}}| |}| j||t|ddid}| jd|d|dddd	 d
}|d }||krtt| j d| dg i  }}dd|d}	t|dr| |d}
| j|ddd}| j|ddd}|| j	| j
jf i ||dd|	|
d |D ] }|t|d |
||d qt|dtjhdd	 f }rlt| j|ddu rNdnd  | fd d!|D  t|d"d#d	 fD ](}||d$d%g d|d& i q~||||	d't|d(thfd)thfd*thfd+S ),NRefererr3   )headersz=(?:var|const|let)\s+(?:dat|(?:player|video)Info|)\s*=\s*["\']zplayer infoz[A-Za-z0-9+/=]+z["\'];c                 S   s   t |  S )N)base64	b64decodedecode)xr0   r0   r1   <lambda>j       z-SproutVideoIE._real_extract.<locals>.<lambda>)Zcontains_patternZend_patternZtransform_sourceZvideoUidz sent the wrong video data ()z*/*zhttps://videos.sproutvideo.com)AcceptZOriginr<   ZhlsmtT)r,   kr   )Zm3u8_idr=   r-   r   )r   Zextra_param_to_segment_urlZextra_param_to_key_url	downloadsc                 S   s   t |d S )Nr   r   _vr0   r0   r1   rB      rC   Z	has_audioFnonec                    s(   g | ] \}}t ||d | dqS )r   )	format_idr   r   qualityacodec)str).0rO   Z
format_urlrQ   rP   r0   r1   
<listcomp>   s   z/SproutVideoIE._real_extract.<locals>.<listcomp>ZsubtitleDatac                 S   s   t |d S )NsrcrJ   rK   r0   r0   r1   rB      rC   Zsrclangr#   rV   )r   formatsr$   Zhttp_headersr   r   Zposterframe_url)r   r   r   )r   Z	_match_id_download_webpager   Z_search_jsonr   IE_NAMEr2   extendZ_extract_m3u8_formats_M3U8_URL_TMPLr   updater   dictr'   r   
_QUALITIESget
setdefaultappendrR   r   r   )selfr   Zsmuggled_datavideo_idr8   dataZ	video_uidrW   r$   r=   Zmanifest_queryZfragment_queryZ	key_queryfmtrI   Zsub_datar0   rT   r1   _real_extractb   sj    




zSproutVideoIE._real_extract)F)__name__
__module____qualname__Z_NO_SCHEME_RE
_VALID_URLZ_EMBED_REGEX_TESTSZ_WEBPAGE_TESTSr[   r^   staticmethodr2   classmethodr5   rf   __classcell__r0   r0   r:   r1   r      st   
/
r   c                   @   s6   e Zd ZdZdZddddddd	d
dgZdd ZdS )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-streamingZ 9bbbb2c0c0739eb163b80f87b8d77c9eZ799cd8b11c10efc1f0r   zHow to Video: Live Streamingi
  r   r   r   c           	   
   C   s   |  |dd\}}| j||dd\}}|jdkr| d}|sNtdddz(| j||d	td
|i| |d}W nJ ty } z2t	|j
tr|j
jdkrtddd W Y d }~n
d }~0 0 tt||d  }r| |t|S tdd S )Nr   
display_idi  )Zexpected_statusZvideopasswordzAThis video is password-protected; use the --video-password optionT)expectedzSubmitting video passwordpassword)rd   zIncorrect passwordz+Unable to extract any SproutVideo embed url)Z_match_valid_urlgroupZ_download_webpage_handlestatus	get_paramr   rX   r   Z_hidden_inputs
isinstancecauser   nextr   r5   Z
url_result)	rb   r   rc   rp   r8   Zurlhrr   er9   r0   r0   r1   rf      s0    


zVidsIoIE._real_extractN)rg   rh   ri   rY   rj   rk   rf   r0   r0   r0   r1   ro      s   ro   )r>   urllib.parser(   commonr   Znetworking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   Zutils.traversalr   r   ro   r0   r0   r0   r1   <module>   s   , 