o
    i2R                     @   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`dkdlddmdndodpdqdrdsddiddtduddvdwdddxdKdFd	ddiddydzd{d|dzd{d}dzd{gZd~d-dd.dd/d0dd1d2d3	ddidgZedd 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-backend38902413mp4zGCC IA16 backendi\E2e20231020zre:^https?://.*\.jpgzcount:42zcount:41if  )	idexttitle	timestampupload_date	thumbnail
thumbnailschaptersdurationskip_downloadm3u8)url	info_dictparamszhttps://slideslive.com/38935785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-ethics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-spolecnost 8a79b5e3d700837f40bd2afca3c8fa0138897546uK   SPECIÁL: Meta-přednáška Petra Ludwiga - Hodnoty pro lepší společnost20231029ie>ez	count:169z	count:168i  )	r   r   r   r   r   r   r   r   r   )r   md5r   r   z2https://slideslive.com/embed/presentation/38925850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/38979920z&MoReL: Multi-omics Relational Learningi2ezcount:6   zhttps://slideslive.com/3895407438954074z.Decentralized Attribution of Generative Modelszcount:16iu2ezcount:15i2  z https://slideslive.com/38979570/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%2F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   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   playlist_countr   playlistr   z https://slideslive.com/38979481/r   z38979481-playlistz:How to Train Your MAML to Excel in Few-Shot Classification38979481i̿2ezcount:43i;  z38979481-013zFHow to Train Your MAML to Excel in Few-Shot Classification - Slide 013z&https://slideslive.com/embed/38932460/38932460z;Active Learning for Hierarchical Multi-Label Classificationi  zre:https?://.+/.+\.(?:jpg|png)zcount:20i/e20240219)r   r   r   r   r   r   r   r   zhttps://slideslive.com/3898399438983994z'Zero-Shot AutoML with Pretrained Modelsi2ezcount:23zUhttps://slideslive.com/38903721/magic-a-scientific-resurrection-of-an-esoteric-legendT)r   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   sN    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   webpageembed_id
url_parsedorigin rF   O/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/slideslive.py_extract_embed_urls<  s   z SlidesLiveIE._extract_embed_urlsc              	   C   s$   | j d| ||t|ddddS )Nr6   RefererOriginr7   )headersquery)_download_webpage_handler	   )selfvideo_idrK   rF   rF   rG   _download_embed_webpage_handleH  s   
z+SlidesLiveIE._download_embed_webpage_handlec           	      C   s   i }ddddddddd	d
d
}|  D ] }|dsq|d\}}}||dd  }|s/q|||< qdD ]}||v rJ| j|| d ddpGg ||< q6|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-:   )rT   rU   F)fatal)
splitlines
startswith	partitionget_parse_json)	rN   	m3u8_data	m3u8_dictlookuplinetag_valuekeyrF   rF   rG   _extract_custom_m3u8_infoP  s2   

z&SlidesLiveIE._extract_custom_m3u8_infoFc           	      C   s   g d }}| j d| d| d|ddddd}|r,|s'| j|d	 d
 |dd}|| | jd| d| d|ddd}|rV|sQ|sQ| jd| d| d|dd}|| ||fS )Nhttps:///z/master.m3u8r   hlsFT)m3u8_idrZ   liver   r   z%Extracting duration from HLS manifest)notez/master.mpddash)mpd_idrZ   z&Extracting duration from DASH manifest)_extract_m3u8_formats_extract_m3u8_vod_durationextend_extract_mpd_formats_extract_mpd_vod_duration)	rN   cdn_hostnamepathrO   skip_durationformatsr   hls_formatsdash_formatsrF   rF   rG   _extract_formats_and_durationp  s,   



z*SlidesLiveIE._extract_formats_and_durationc                    s   |jtt|dddd\}}|j}d|v rAt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v sgJ |d }
d}i g }|
drj|d ddddpi d}td}|rd}d| d}ttd td!d"D ]\}}||t|d#t|d$|d%t|
d&d'd(f qs|
d)rj|d) dd*d+dttjjjrd,}td-D ]\}}||t|d.d/dtt|d0d&f qg g }}t|
d1r|d2|d1 d3 |D ]%\}}}}|r*||d4|||f d3 |d5|d4|d6 qi }t|d7td!D ]!}t|
d8}|sOqA||
d9pXd:g |d;d< qA|
d=pqjd=|d>d%t|
d?|
d@dAk|||dB |	dCkr|
 dC< n8|	dDkr|dE dF |
\}} ||dG n dH|
|	 dI |	dJkrtdK|
 dL|i dC< tdMsψ S  fdNdO} |  dP d= S )QN)r8   )r9   r}   )rI   rJ   )rK   domain_not_allowed)zallowed_domains[].Fget_allz9This is an embed-only presentation. Try passing --refererT)expectedri   rj   zdata-player-token="([^"]+)"zplayer tokenhttps://slideslive.com/player/zDownloading player infoplayer_token)rn   rL   rR   )r   yodavimeoyoutuberS   z5https://slides.slideslive.com/%s/slides/original/%s%srV   zDownloading slides JSON)rZ   rn   errnotez.png)slide_qualitiesr   z.jpgz8https://cdn.slideslive.com/data/presentations/%s/slides/z/%s%sslides.)expected_typer   )imagename)r   extname)defaulttime  scalerW   zDownloading slides XMLzFailed to download slides infoz@https://cdn.slideslive.com/data/presentations/%s/slides/big/%s%sz./slidez./slideNamer   z	./timeSecr   cover)r   r   03dzSlide )r   
start_time)rU   .
webvtt_urllanguageenvtt)r   r   r    r   rQ   vod)r   r   r   is_liver   r   rU   r   r   rT   r   )r   ry   url_transparent)_typer   ie_key
display_idr   zhttps://player.vimeo.com/video/referer)r   .videor   c                  3   s     V  j d dddddddpi } ttd	d
D ]N\}}t|ddkr/q#t|d}t| |ddfdd}|rB|sCq#j||dd\}}|sQq# d|d d  d|d d tt|ddd|dV  q#d S )Nr   z/slides_video_service_dataF,)r   videoszDownloading video slides infoz$Failed to download video slides info)rZ   rL   rn   r   r   r   )r   servicer   )r   r   rT   .r   T)rx   -r   r   z	 - Slide r   )r   duration_msr   r   )r   r   r   r   ry   )_download_jsonjoin	enumerater	   r|   r   )service_dataslide_idslide
video_pathrv   ry   re   infor   rN   r   rO   video_slidesrF   rG   entries  sF   



z+SlidesLiveIE._real_extract.<locals>.entriesz	-playlist)!	_match_idrP   r	   r   r   r   _search_regex_download_webpagerh   lowerr^   r   r   dictappendr   _download_xml
isinstancexmletreeElementTreeElementr;   r   r   
setdefault_html_search_metar
   r|   update
capitalizer   playlist_result)rN   r   rB   urlhredirect_urldomainre   player_dataplayer_inforR   rS   slide_url_templateslides_infoslide_ext_defaultslide_qualityr   r   r   r   
slide_path	slide_extr   rU   subr   ry   r   r   rF   r   rG   _real_extract  s   




















zSlidesLiveIE._real_extractN)F)__name__
__module____qualname__
_VALID_URL_TESTS_WEBPAGE_TESTSclassmethodrH   rP   rh   r|   r   rF   rF   rF   rG   r      s   
 ,#    

 r   )r:   urllib.parser<   xml.etree.ElementTreer   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   rF   rF   rF   rG   <module>   s    ,