U
    gU                     @   sd   d dl Z d dlZd dl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 G dd deZdS )    N   )InfoExtractor   )	ExtractorErrorint_or_noneparse_qssmuggle_urltraverse_objunified_timestampupdate_url_queryurl_or_none
xpath_textc                '   @   s  e Zd ZdZdddddddd	d
dd	ddi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dd 	ddidd!d"d#dd$dd%d&d'd(d)d*	ddid+d,d-dd.dd/d0dd1d2d3	ddidd4d5dd6dd1d7dd8d9d3	ddidd:d;dd<dd=d>dd?d@d3	ddiddAdBddCddDdEdd/dFd3	ddiddGdHddIdJddKddLdMdN	ddiddOdPdQdRdSdTdUddRdVddWddXdYdN	idTdZdd[dPdVdd\idTd]dd^d_dVdd\igddid`dadbdcdddSdTdeddddfddgddgdhdN	idTdiddjdPdfdd\igddid`dkdldmddndodpdqdrdpdsdtdudvdwdxdydzd{d|gg eeed}dLd~dddiddddddddddKdFd	ddidddzdddzdddzdgZdd-dd.dd/d0dd1d2d3	ddidgZedd Zdd Z	dd Z
dddZdd ZdS )SlidesLiveIEzDhttps?://slideslive\.com/(?:embed/(?:presentation/)?)?(?P<id>[0-9]+)z0https://slideslive.com/38902413/gcc-ia16-backendZ38902413mp4zGCC IA16 backendi\E2eZ20231020zre:^https?://.*\.jpgzcount:42zcount:41if  )	idexttitle	timestampupload_date	thumbnail
thumbnailschaptersdurationZskip_downloadZm3u8)url	info_dictparamszhttps://slideslive.com/38935785Z38935785zGOffline Reinforcement Learning: From Algorithms to Practical Challengesiz2ezre:^https?://.*\.(?:jpg|png)z	count:640z	count:639ih&  )	r   r   r   r   r   r   r   r   r   z^https://slideslive.com/38973182/how-should-a-machine-learning-researcher-think-about-ai-ethicsZ38973182z?How Should a Machine Learning Researcher Think About AI Ethics?i92ezcount:3zcount:2i  )	r   r   r   r   r   r   r   r   r   z`https://slideslive.com/38897546/special-metaprednaska-petra-ludwiga-hodnoty-pro-lepsi-spolecnostZ 8a79b5e3d700837f40bd2afca3c8fa01Z38897546uK   SPECIÁL: Meta-přednáška Petra Ludwiga - Hodnoty pro lepší společnostZ20231029ie>ez	count:169z	count:168i  )	r   r   r   r   r   r   r   r   r   )r   md5r   r   z2https://slideslive.com/embed/presentation/38925850Z38925850z=Towards a Deep Network Architecture for Structured Smoothnesszcount:8iek2ezcount:7iF  )	r   r   r   r   r   r   r   r   r   z https://slideslive.com/38979920/Z38979920z&MoReL: Multi-omics Relational Learningi2ezcount:6   zhttps://slideslive.com/38954074Z38954074z.Decentralized Attribution of Generative Modelszcount:16iu2ezcount:15i2  z https://slideslive.com/38979570/Z38979570z?Efficient Active Search for Combinatorial Optimization Problemszcount:9i2ei'  zfhttps://slideslive.com/embed/presentation/38979880?embed_parent_url=https%3A%2F%2Fedit.videoken.com%2FZ38979880z+The Representation Power of Neural Networksi2ezcount:22zcount:21i&  )	r   r   r   r   r   r   r   r   r   zihttps://slideslive.com/embed/presentation/38979682?embed_container_origin=https%3A%2F%2Fedit.videoken.com   z38979682-playlistz2LoRA: Low-Rank Adaptation of Large Language Models)r   r   r   Z38979682i/2ezcount:30zcount:31i  z38979682-021z>LoRA: Low-Rank Adaptation of Large Language Models - Slide 021)r   r   r   r   r   r   z38979682-024z>LoRA: Low-Rank Adaptation of Large Language Models - Slide 024   )r   Zplaylist_countr   Zplaylistr   z https://slideslive.com/38979481/r   z38979481-playlistz:How to Train Your MAML to Excel in Few-Shot ClassificationZ38979481i̿2ezcount:43i;  z38979481-013zFHow to Train Your MAML to Excel in Few-Shot Classification - Slide 013z&https://slideslive.com/embed/38932460/ZRTPdrgkyTiEZ38932460z;Active Learning for Hierarchical Multi-Label ClassificationzDWatch full version of this video at https://slideslive.com/38932460.zSlidesLive Videos - AzUC62SdArr41t_-_fX40QCLRwz8https://www.youtube.com/channel/UC62SdArr41t_-_fX40QCLRwz@slideslivevideos-a6075z/https://www.youtube.com/@slideslivevideos-a6075Z20200903ibv2ei  r   Znot_liveTZunlistedzPeople & Blogsz!re:^https?://.*\.(?:jpg|png|webp)zcount:20)r   
display_idr   r   descriptionZchannelZ
channel_idZchannel_urlZuploaderZuploader_idZuploader_urlr   r   r   Z	age_limitZlive_statusZplayable_in_embedZavailability
categoriestagsZchannel_follower_countZ
like_countZ
view_countr   r   r   zhttps://slideslive.com/38983994Z38983994z'Zero-Shot AutoML with Pretrained Modelsi2ezcount:23zUhttps://slideslive.com/38903721/magic-a-scientific-resurrection-of-an-esoteric-legend)r   Zonly_matchingz>https://slideslive.com/38922070/learning-transferable-skills-1zZhttps://slideslive.com/38921896/retrospectives-a-venue-for-selfreflection-in-ml-research-3z3https://iclr.cc/virtual_2020/poster_Hklr204Fvr.htmlc                 c   sL   t d|D ]:}tj|}|j d|j }td| ||dV  qd S )NzF(?s)new\s+SlidesLiveEmbed\s*\([^)]+\bpresentationId:\s*["\'](\d+)["\']z://*https://slideslive.com/embed/presentation/embed_parent_urlembed_container_origin)refindallurllibparseurlparseschemenetlocr   )clsr   webpageZembed_idZ
url_parsedorigin r2   ?/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/slideslive.py_extract_embed_urlsN  s    z SlidesLiveIE._extract_embed_urlsc              	   C   s$   | j d| ||t|ddddS )Nr$   RefererOriginr%   )headersquery)Z_download_webpage_handler	   )selfvideo_idr7   r2   r2   r3   _download_embed_webpage_handleZ  s      z+SlidesLiveIE._download_embed_webpage_handlec           	      C   s   i }ddddddddd	d
d
}|  D ]@}|ds6q&|d\}}}||dd  }|s^q&|||< q&dD ](}||krl| j|| d ddpg ||< ql|S )Nr   r   r   playlist_typeservice_name
service_idvideo_servers	subtitlesslides_json_urlslides_xml_url)
zPRESENTATION-TITLEzPRESENTATION-UPDATED-ATzPRESENTATION-THUMBNAILzPLAYLIST-TYPEzVOD-VIDEO-SERVICE-NAMEzVOD-VIDEO-IDzVOD-VIDEO-SERVERSzVOD-SUBTITLESzVOD-SLIDES-JSON-URLzVOD-SLIDES-XML-URLz#EXT-SL-:   )r?   r@   F)fatal)
splitlines
startswith	partitiongetZ_parse_json)	r9   Z	m3u8_dataZ	m3u8_dictlookuplinetag_valuekeyr2   r2   r3   _extract_custom_m3u8_infob  s0    

z&SlidesLiveIE._extract_custom_m3u8_infoFc           	      C   s   g d  }}| j d| d| d|ddddd}|rX|sN| j|d	 d
 |dd}|| | jd| d| d|ddd}|r|s|s| jd| d| d|dd}|| ||fS )Nhttps:///z/master.m3u8r   ZhlsFT)Zm3u8_idrE   Zliver   r   z%Extracting duration from HLS manifest)notez/master.mpdZdash)Zmpd_idrE   z&Extracting duration from DASH manifest)Z_extract_m3u8_formatsZ_extract_m3u8_vod_durationextendZ_extract_mpd_formatsZ_extract_mpd_vod_duration)	r9   cdn_hostnamepathr:   skip_durationformatsr   Zhls_formatsZdash_formatsr2   r2   r3   _extract_formats_and_duration  s@    
    
  
    
z*SlidesLiveIE._extract_formats_and_durationc                    s   |jtt|dddd\}}|j}d|krtt|ddd}|s\td	d
djd| dd| dd\}}d|djd ddid}|}|d 	 }	|	dkst
|d }
d}i g  }|drj|d ddddpi d}td}|r2d}d| d}ttd td!d"D ]:\}}||t|d#t|d$|d%t|d&d'd(f qFs|d)rj|d) dd*d+dttjjjrd,}td-D ]0\}}||t|d.d/dtt|d0d&f qg g  }}t|d1r0|d2|d1 d3 |D ]J\}}}}|rd||d4|||f d3 |d5|d4|d6 q4i }t|d7td!D ]B}t|d8}|sq||d9pd:g |d;d< q|d=pjd=|d>d%t|d?|d@dAk|||dB |	dCkr*|
 dC< np|	dDkr`|dE dF |
\}} ||dG n: dH|
|	 dI |	dJkrt dK|
 dL|i dC< tdMs S  fdNdO}!|  dP d= S )QN)r&   )r'   rZ   )r5   r6   )r7   Zdomain_not_allowed)zallowed_domains[].Fget_allz9This is an embed-only presentation. Try passing --refererT)expectedrQ   rR   zdata-player-token="([^"]+)"zplayer token"https://ben.slideslive.com/player/zDownloading player infoplayer_token)rS   r8   r=   )r   yodavimeoZyoutuber>   z5https://slides.slideslive.com/%s/slides/original/%s%srA   zDownloading slides JSON)rE   rS   errnotez.png)Zslide_qualitiesr   z.jpgz8https://cdn.slideslive.com/data/presentations/%s/slides/z/%s%sslides.)Zexpected_typer   )imagename)re   Zextname)defaulttime  ZscalerB   zDownloading slides XMLzFailed to download slides infoz@https://cdn.slideslive.com/data/presentations/%s/slides/big/%s%sz./slidez./slideNamerf   z	./timeSecr   Zcover)r   r   03dzSlide )r   
start_time)r@   .
webvtt_urllanguageenZvtt)r   r   r    r   r<   Zvod)r   r   r   Zis_liver   r   r@   r   r`   r?   r   )r   rX   Zurl_transparent)_typer   Zie_keyr    ra   zhttps://player.vimeo.com/video/Zreferer)rd   .videor   c                  3   s    V  j d dddddddp2i } ttd	d
D ]\}}t|ddkr\qDt|d}t| |ddfdd}|rD|sqDj||dd\}}|sqD d|d d  d|d d tt|ddd|dV  qDd S )Nr^   z/slides_video_service_dataF,)r_   ZvideoszDownloading video slides infoz$Failed to download video slides info)rE   r8   rS   rb   rc   r   )rr   Zservicer`   )rr   r   r?   .r[   T)rW   -rk   r   z	 - Slide r   )rr   Zduration_msri   rj   )r   r   r   r   rX   )_download_jsonjoin	enumerater	   rY   r   )Zservice_dataslide_idslideZ
video_pathrU   rX   rM   infor_   r9   rd   r:   Zvideo_slidesr2   r3   entries  sP    
  
     
z+SlidesLiveIE._real_extract.<locals>.entriesz	-playlist)"Z	_match_idr;   r	   r   r   r   Z_search_regexZ_download_webpagerP   lowerAssertionErrorrI   ru   rw   dictappendr   Z_download_xml
isinstancexmletreeElementTreeElementr)   r   r   
setdefaultZ_html_search_metar
   rY   update
capitalizer   Zplaylist_result)r9   r   r0   ZurlhZredirect_urldomainrM   Zplayer_dataZplayer_infor=   r>   Zslide_url_templateZslides_infoZslide_ext_defaultZslide_qualityrx   ry   r   r   Z
slide_pathZ	slide_extrl   r@   subrm   rX   r   r|   r2   rz   r3   _real_extract  s   
 
 
  

   
 
    
 







  


zSlidesLiveIE._real_extractN)F)__name__
__module____qualname__Z
_VALID_URLintZ_TESTSZ_WEBPAGE_TESTSclassmethodr4   r;   rP   rY   r   r2   r2   r2   r3   r      sD           
  , # $     * 
 
r   )r(   urllib.parser*   xml.etree.ElementTreer   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r2   r2   r2   r3   <module>   s
   ,