o
    i                     @   sH   d dl Z ddlmZ ddlmZmZmZmZmZm	Z	 G dd deZ
dS )    N   )InfoExtractor   )merge_dictsparse_durationparse_iso8601parse_resolutiontry_geturl_basenamec                   @   sD   e Zd ZdZdZdZddddddgZdd	 Zd
d Zdd Z	dS )MicrosoftStreamIEmicrosoftstreamzMicrosoft Streamzuhttps?://(?:web|www|msit)\.microsoftstream\.com/video/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})zhttps://web.microsoftstream.com/video/6e51d928-4f46-4f1c-b141-369925e37b62?list=user&userId=f5491e02-e8fe-4e34-b67c-ec2e79a6ecc0T)urlonly_matchingzKhttps://msit.microsoftstream.com/video/b60f5987-aabd-4e1c-a42f-c559d138f2cac           	      C   s   i }i }| j | d| d|dd|ddiddpg }|D ]'}|d	r*|d
s+q|dr2|n|}||d	 g d|d
d q||dS )N/videos/z/texttrackszDownloading subtitles JSONFapi-version1.4-private)notefatalheadersqueryvaluelanguager   autoGeneratedvtt)extr   )	subtitlesautomatic_captions)_download_jsonget
setdefaultappend)	selfapi_urlvideo_idr   r   r   text_trackstracksub_dict r'   T/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/microsoftstream.py_get_all_subtitles   s,   
z$MicrosoftStreamIE._get_all_subtitlesc                 O   s6   |  dds|  dds|  dr| j|i |S i S )NwritesubtitlesFwriteautomaticsublistsubtitles)	get_paramr)   )r!   argskwargsr'   r'   r(   extract_all_subtitles/   s   
z'MicrosoftStreamIE.extract_all_subtitlesc                    sJ  |  |}| ||}d|vr| jdd | d|d}| d|d}dd	| i}| j| d
| ||dddd}|dpA|}|d g }dD ]4t|fddt}	|	sZqK|	d}
t|	}tt	
|dt| d   }|
t| ||
 qKg }|d D ]E}|d dkr|| j|d |dddd|d q|d d kr|| j|d |d!d|d" q|d d#kr|| j|d |d$d|d% q fd&d'|D }||d( |d)t|d*d tt|d+d d,d ft|d-| |||t|d.tt|d/d d0| t|d1d tt|d2d tt|d3d t|d4S )5Nz<title>Microsoft Stream</title>cookies)methodz"AccessToken":"(.+?)"zaccess tokenz"ApiGatewayUri":"(.+?)"zapi urlAuthorizationzBearer r   z*creator,tokens,status,liveEvent,extensionsr   )z$expandr   )r   r   idr   )
extraSmallsmallmediumlargec                    s   | d   d S )NposterImager   r'   x)thumbnail_idr'   r(   <lambda>L   s    z1MicrosoftStreamIE._real_extract.<locals>.<lambda>)r4   r   =   playbackUrlsmimeTypezapplication/vnd.apple.mpegurlplaybackUrlmp4m3u8_nativehlsF)r   entry_protocolm3u8_idr   r   zapplication/dash+xmldash)mpd_idr   r   zapplication/vnd.ms-sstr+xmlmss)ism_idr   r   c                    s   g | ]	}t |d  iqS r   )r   ).0frL   r'   r(   
<listcomp>g   s    z3MicrosoftStreamIE._real_extract.<locals>.<listcomp>namedescriptionc                 S      | d d S )NcreatorrP   r'   r:   r'   r'   r(   r=   m       c                 S   rR   )NrS   mailr'   r:   r'   r'   r(   r=   n   rT   c                 S   rR   )NrS   r4   r'   r:   r'   r'   r(   r=   o   rT   )r4   titlerQ   uploaderuploader_id
thumbnailscreatedc                 S   rR   )Nmediadurationr'   r:   r'   r'   r(   r=   s   rT   z&https://web.microsoftstream.com/video/c                 S   rR   )Nmetricsviewsr'   r:   r'   r'   r(   r=   u   rT   c                 S   rR   )Nr]   likesr'   r:   r'   r'   r(   r=   v   rT   c                 S   rR   )Nr]   commentsr'   r:   r'   r'   r(   r=   w   rT   )	timestampr\   webpage_url
view_count
like_countcomment_countformats)	_match_id_download_webpageraise_login_required_html_search_regexr   r   r	   strr
   base64	b64decodelenupdater   r    extend_extract_m3u8_formats_extract_mpd_formats_extract_ism_formatsr0   r   r   int)r!   r   r#   webpageaccess_tokenr"   r   
video_datarY   thumbnail_urlthumb
thumb_namerf   playlistr'   )r   r<   r(   _real_extract6   s   

 




	zMicrosoftStreamIE._real_extractN)
__name__
__module____qualname__IE_NAMEIE_DESC
_VALID_URL_TESTSr)   r0   r|   r'   r'   r'   r(   r      s    r   )rl   commonr   utilsr   r   r   r   r	   r
   r   r'   r'   r'   r(   <module>   s     
