
    Ği<                        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
  G d de          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    N   )InfoExtractor   )int_or_noneparse_iso8601parse_resolutiontraverse_objunified_timestampurl_basenameurl_or_nonec            
       >    e Zd ZdZdddddddd	d
ddgdgZdZd ZdS )MicrosoftEmbedIEzShttps?://(?:www\.)?microsoft\.com/(?:[^/]+/)?videoplayer/embed/(?P<id>[a-z0-9A-Z]+)z8https://www.microsoft.com/en-us/videoplayer/embed/RWL07e eb0ae9007f9b305f9acd0a03e74cb1a9RWL07ez/Microsoft for Public Health and Social Servicesmp4z[http://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RWL7Ju?ver=cae5r   iL!Aa20210914)idtitleext	thumbnail	age_limit	timestampupload_datez3Failed to parse XML: syntax error: line 1, column 0)urlmd5	info_dictexpected_warningszEhttps://prod-video-cms-rt-microsoft-com.akamaized.net/vhs/api/videos/c           	         |                      |          }|                     | j        |z   |          }g }|d                                         D ]\  }}|dk    r3|                    |                     |d         |dd                     >|dk    r3|                    |                     |d         |dd                     w|d	k    r2|                    |                     |d         |d                     |                    ||d         |	                    d
          |	                    d          d           d t          |di                                           D             }d t          |d          D             }|                     |           |t          |d          t          t          |d                    t          t          |d                    pd|||dS )Nstreamssmooth_Streamingr   mssFfatalapple_HTTP_Live_Streamingr   	mPEG_DASHheightPixelswidthPixels)	format_idr   heightwidthc                 H    i | ]\  }}||                     d           ddg S )r   vtt)r   r   get).0langdatas      dC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/microsoftembed.py
<dictcomp>z2MicrosoftEmbedIE._real_extract.<locals>.<dictcomp>6   sM     
 
 
 4 xx  
 
 
    captionsdefaultc                     g | ]E}|                     d           |                     d          pd|                     d          pddFS )r   r*   Nr)   )r   r*   r)   r-   )r/   thumbs     r2   
<listcomp>z2MicrosoftEmbedIE._real_extract.<locals>.<listcomp>=   sn     O O O  99U##YYw''/4ii))1T
 
 O O Or4   )snippet
thumbnails.)r;   r   )r;   activeStartDate)r;   
minimumAger   )r   r   r   r   formats	subtitlesr<   )	_match_id_download_json_API_URLitemsextend_extract_ism_formats_extract_m3u8_formats_extract_mpd_formatsappendr.   r	   _remove_duplicate_formatsr
   r   )	selfr   video_idmetadatar?   source_typesourcer@   r<   s	            r2   _real_extractzMicrosoftEmbedIE._real_extract"   s:   >>#&&&&t}x'?JJ#+I#6#<#<#>#> 	 	K000t88RW_d8eeffff ;;;t99&-SX`e9ffgggg++t88X]8^^____!,!%=$jj88#ZZ66	       
 
 ".h
B!O!O!O!U!U!W!W	
 
 
	O O $H.LMM	O O O

 	&&z222 !(,@AA*<B`+a+abb$\(<U%V%VWW\[\"$
 
 	
r4   N)__name__
__module____qualname__
_VALID_URL_TESTSrC   rP    r4   r2   r   r      sr        gJ J1Fv#%
 
 TT  F WH*
 *
 *
 *
 *
r4   r   c                   ,    e Zd Zed             ZddZdS )MicrosoftMediusBaseIEc                     i }| D ]?}|                     |                    dd          g                               |           @|S )Ntagund)
setdefaultpoprI   )subtitle_listr@   subs      r2   _sub_to_dictz"MicrosoftMediusBaseIE._sub_to_dictP   sS    	  	H 	HC  !6!6;;BB3GGGGr4   Tc                 v    |                      |||          }|D ]}|d         dk    rd|d         vrd|d<   |S )Nr"   languageengEnglishr(   ilanguage_preference)rF   )rK   ism_urlrL   r#   r?   fmts         r2   _extract_ismz"MicrosoftMediusBaseIE._extract_ismW   sZ    ++GXU+KK 	1 	1C:%''IS=M,M,M-0)*r4   N)T)rQ   rR   rS   staticmethodr`   rh   rV   r4   r2   rX   rX   O   sA          \     r4   rX   c            
       t    e Zd Zd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ddddgZd Zd ZdS )MicrosoftMediusIEz]https?://medius\.microsoft\.com/Embed/(?:Video\?id=|video-nc/|VideoDetails/)(?P<id>[\da-f-]+)zPhttps://medius.microsoft.com/Embed/video-nc/9640d86c-f513-4889-959e-5dace86e7d2b$9640d86c-f513-4889-959e-5dace86e7d2bismvzDRapidly code, test and ship from secure cloud developer environmentsz$md5:33c8e4facadc438613476eea24165f71Fre:https://mediusimg\.event\.microsoft\.com/video-\d+/thumbnail\.jpg.*zcount:30)r   r   r   descriptionr   r@   r   r   zPhttps://medius.microsoft.com/Embed/video-nc/81215af5-c813-4dcd-aede-94f4e1a7daa3z$81215af5-c813-4dcd-aede-94f4e1a7daa3zMicrosoft Build openingz$md5:43455096141077a1f23144cab8cec1cbzcount:31zThttps://medius.microsoft.com/Embed/VideoDetails/78493569-9b3b-4a85-a409-ee76e789e25cz$78493569-9b3b-4a85-a409-ee76e789e25cz' Anomaly Detection & Root cause at Edgez$md5:f8f1ad93d7918649bfb97fa081b03b83z<re:https://mediusdownload.event.microsoft.com/asset.*\.jpg.*zcount:17zPhttps://medius.microsoft.com/Embed/Video?id=0dc69bda-079b-4070-a7db-a8da1a06a9c7T)r   only_matchingzPhttps://medius.microsoft.com/Embed/video-nc/fe823a91-959c-465b-96d4-8f4db624f72cc           	          t          |                     d|d|d           dd ddt          hfdt          hfd	f          pd
 t          j        d|          D             }|                     |          S )Nz!const\s+captionsConfiguration\s*=r5   r6   languageListc                 ,    t          |d                   S )Nsrcr   _vs     r2   <lambda>z5MicrosoftMediusIE._extract_subtitle.<locals>.<lambda>   s    +ah*?*? r4   ru   srclangkind)r   rZ   namec                     g | ]F}|t          |                              d           d                             d          d         dGS )z.vttr   rx   )r   rZ   )r   split)r/   r   s     r2   r:   z7MicrosoftMediusIE._extract_subtitle.<locals>.<listcomp>   sf     p p p  S(9(9(?(?(G(G(J(P(PQT(U(UVX(YZZ p p pr4   z7var\s+file\s+=\s+\{[^}]+\'(https://[^\']+\.vtt\?[^\']+))r	   _search_jsonstrrefindallr`   )rK   webpagerL   r5   s       r2   _extract_subtitlez#MicrosoftMediusIE._extract_subtitle   s    BGZYakopp??!C5)#B B   pp p!z*dfmnnp p p 	   ***r4   c           
      \   |                      |          }|                     d| |          }||                     |          |                     |          |                     |                     d|d          |          |                     |          |                     ||          dS )Nz,https://medius.microsoft.com/Embed/video-nc/z!StreamUrl\s*=\s*"([^"]+manifest)"zism url)r   r   ro   r?   r   r@   )rA   _download_webpage_og_search_title_og_search_descriptionrh   _search_regex_og_search_thumbnailr   )rK   r   rL   r   s       r2   rP   zMicrosoftMediusIE._real_extract   s    >>#&&(()bX`)b)bdlmm **73366w??((""#GR[\\^fh h227;;//BB
 
 	
r4   N)rQ   rR   rS   rT   rU   r   rP   rV   r4   r2   rk   rk   _   s        qJ b8[Ab#
 

 
 b8.Ab#
 

 
 f8>AX#
 

 
 b  b C$FL
+ 
+ 
+
 
 
 
 
r4   rk   c                   F    e Zd ZdZdddddddd	d
dddddgZd Zd ZdS )MicrosoftLearnPlaylistIEz\https?://learn\.microsoft\.com/(?:[\w-]+/)?(?P<type>shows|events)/(?P<id>[\w-]+)/?(?:[?#]|$)z:https://learn.microsoft.com/en-us/shows/bash-for-beginnerszbash-for-beginnerszBash for Beginnersz$md5:16a91c07222117d1e00912f0dbc02c2c)r   r   ro      )r   r   playlist_countz3https://learn.microsoft.com/en-us/events/build-2022z
build-2022zMicrosoft Build 2022 - Eventsz$md5:c16b43848027df837b22c6fbac7648d3   c              #     K   d}	 |                      ||d| d|d          }t          |ddd	t          hf          }|D ]}|                     d
|           V  |t	          |          z  }||                    dd          k    s|sd S )Nr   TzDownloading entries zen-us)localez$skip)queryresults.r   z!https://learn.microsoft.com/en-uscount)rB   r	   r   
url_resultlenr.   )rK   url_baserL   skipplaylist_info	url_pathsurl_paths          r2   _entriesz!MicrosoftLearnPlaylistIE._entries   s      
	 //(Da[_DaDa!j j/  M %]YUSE4RSSI% V Voo&T(&T&TUUUUUUC	NN"D}((!4444I4
	r4   c                 L   |                      |                              dd          \  }}|                     ||          }|                     |          |                     |          d}|dk    rdnd}d| d| d| } | j        |                     ||          |fi |S )	Nr   type)r   ro   showsepisodessessionsz6https://learn.microsoft.com/api/contentbrowser/search//)_match_valid_urlgroupr   r   r   playlist_resultr   )rK   r   playlist_idplaylist_typer   metainfosub_typer   s           r2   rP   z&MicrosoftLearnPlaylistIE._real_extract   s    %)%:%:3%?%?%E%EdF%S%S"]((k:: **73366w??
 
 "/'!9!9::ztMtt\gttjrtt#t#DMM(K$H$H+bbYabbbr4   N)rQ   rR   rS   rT   rU   r   rP   rV   r4   r2   r   r      s        pJK&)A
 

   E4A
 

  F$  c c c c cr4   r   c            
       T    e Zd ZdZdddddddd	d
dddddddddddddidgZd ZdS )MicrosoftLearnEpisodeIEzGhttps?://learn\.microsoft\.com/(?:[\w-]+/)?shows/[\w-]+/(?P<id>[^?#/]+)zhttps://learn.microsoft.com/en-us/shows/bash-for-beginners/what-is-the-difference-between-a-terminal-and-a-shell-2-of-20-bash-for-beginners/z$d44e1a03-a0e5-45c2-9496-5c9fa08dc94crm   zEWhat is the Difference Between a Terminal and a Shell? (Part 2 of 20)z$md5:7bbbfb593d21c2cf2babc3715ade6b88i[c20230214z4re:https://learn\.microsoft\.com/video/media/.+\.pngzcount:14)r   r   r   ro   r   r   r   r@   rp   z`https://learn.microsoft.com/en-gb/shows/on-demand-instructor-led-training-series/az-900-module-1z$4fe10f7c-d83c-463b-ac0e-c30a8195e01br   z"AZ-900 Cloud fundamentals (1 of 6)z$md5:3c2212ce865e9142f402c766441bd5c9zre:https://.+/.+\.jpgie20240130)r   r   r   ro   r   r   r   formatzbv[protocol=https])r   r   paramsc                 z   |                      |          }|                     ||          }|                     d|dd          }|                     d| |          }g }t	          |ddt
          hf          x}r+|                    |                     ||d                     t	          |ddt
          hf          x}r-|                    |                     ||d	d
d                     t	          |ddt
          hf          x}	r,|                    | 	                    |	|dd                     dD ]K}
t	          |d|
 dt
          hf          x}r+|
                    |d|
 ddt          |                     Lt	          |ddt
          hf          x}r|
                    |ddd           |||                     t	          |ddd dt          hfddf                    |                     |          |                     |          dt	          |dt           hfddddt
          hifd           S )!NentryIdTr"   z8https://learn.microsoft.com/api/video/public/v1/entries/publicVideoadaptiveVideoUrlFadaptiveVideoHLSUrlr   hls)m3u8_idr#   adaptiveVideoDashUrldash)mpd_idr#   )lowmediumhighQualityVideoUrlzvideo-http-none)r   r(   acodecaudioUrlz
audio-http)r   r(   vcodecr5   c                 ,    t          |d                   S )Nr   rv   rw   s     r2   rz   z7MicrosoftLearnEpisodeIE._real_extract.<locals>.<lambda>  s    AeH8M8M r4   rb   r   )rZ   r   )r   r?   r@   r   ro   
createTimethumbnailOtherSizes.)r   r<   )rA   r   _html_search_metarB   r	   r   rE   rh   rG   rH   rI   r   r`   r   r   r   r   )rK   r   rL   r   entry_id
video_infor?   rf   hls_urlmpd_urlkey	video_url	audio_urls                r2   rP   z%MicrosoftLearnEpisodeIE._real_extract   s   >>#&&((h77)))Wit)TT((QxQQS[] ]
 ":?QT_S`/abbb7 	NNN4,,Whe,LLMMM":?TWbVc/deee7 	mNN455gxX]ej5kklll":?UXcWd/efff7 	eNN444Whv]b4ccddd, 	 	C(mE\E\E\_j^k5lmmmy $!4s!4!4$    'y11	     %Z-k]1[\\\9 	NN )      **<
z+M+M&. P PE , ,  
 **73366w??
 
 :*]O<,.CS5S^R_J`a( (  
 	
r4   NrQ   rR   rS   rT   rU   rP   rV   r4   r2   r   r      s        [J ^8\A#%P#	
 	
  r89A1#%
 
 12 F4,
 ,
 ,
 ,
 ,
r4   r   c            	       4    e Zd ZdZdddddddd	d
dgZd ZdS )MicrosoftLearnSessionIEzHhttps?://learn\.microsoft\.com/(?:[\w-]+/)?events/[\w-]+/(?P<id>[^?#/]+)zxhttps://learn.microsoft.com/en-us/events/build-2022/ts01-rapidly-code-test-ship-from-secure-cloud-developer-environmentsrl   rm   zMRapidly code, test and ship from secure cloud developer environments - Eventsz$md5:f26c1a85d41c1cffd27a0279254a25c3iXb20220524rn   r   r   r   ro   r   r   r   rp   c           	      N   |                      |          }|                     ||          }|                     |          |                     |          t	          |                     d|d                    d} | j        |                     d|dd          fdt          d|S )N	startDate)r   ro   r   externalVideoUrlvideoUrlTr"   )url_transparentie)rA   r   r   r   r   r   r   rk   )rK   r   rL   r   r   s        r2   rP   z%MicrosoftLearnSessionIE._real_extract-  s    >>#&&((h77 **73366w??&t'='=k7T_'`'`aa
 
 t""#5w
RV"WWD %6D D:BD D 	Dr4   Nr   rV   r4   r2   r   r     sc        \J J8dA#%b
 
  FD D D D Dr4   r   c            	       F    e Zd ZddgZddddddd	d
dddddiddgZd ZdS )MicrosoftBuildIEz@https?://build\.microsoft\.com/[\w-]+/sessions/(?P<id>[\da-f-]+)zBhttps?://build\.microsoft\.com/[\w-]+/(?P<id>sessions)/?(?:[?#]|$)z_https://build.microsoft.com/en-US/sessions/b49feb31-afcd-4217-a538-d3ca1d171198?source=sessionsz$aee55fb5-fcf9-4b38-b764-a3527cb57554rm   zMicrosoft Build opening keynotez$md5:d38338f336ef4b6ef9ad2a7466a76655i Lf20240521rn   r   rp   z*https://build.microsoft.com/en-US/sessionsr   r   i  )r   r   playlist_mincountc                                            |           fd                     dd          D             }dk    r                     |          S t          |fdd          S )Nc                     g | ]Q} j         |d          ft          ddt          |dt          hfdt          hfdt          hfdt          hfd          RS )onDemandT)r   r   	sessionIdr   ro   startDateTime)r   r   ro   r   )r   rk   r	   r   r   )r/   r   rK   s     r2   r:   z2MicrosoftBuildIE._real_extract.<locals>.<listcomp>X  s     

 

 

  DO:&+<d Vbcm&.%u-$1C5#9"1M?!C	p p W W 

 

 

r4   z8https://api-v2.build.microsoft.com/api/session/all/en-USzDownloading video infor   c                     |d         k    S )Nr   rV   )rx   ry   rL   s     r2   rz   z0MicrosoftBuildIE._real_extract.<locals>.<lambda>f  s    qw(7J r4   F)get_all)rA   rB   r   r	   )rK   r   entriesrL   s   `  @r2   rP   zMicrosoftBuildIE._real_extractU  s    >>#&&

 

 

 

 #11JHVnp p

 

 

 z!!'':::*J*J*J*JUZ[[[[r4   Nr   rV   r4   r2   r   r   <  s        KMJ q86A#%b
 
  <*
 ! F&\ \ \ \ \r4   r   )r   commonr   utilsr   r   r   r	   r
   r   r   r   rX   rk   r   r   r   r   rV   r4   r2   <module>r      s   				 ! ! ! ! ! !                 =
 =
 =
 =
 =
} =
 =
 =
@    M    A
 A
 A
 A
 A
- A
 A
 A
H-c -c -c -c -c} -c -c -c`H
 H
 H
 H
 H
3 H
 H
 H
VD D D D Dm D D D<*\ *\ *\ *\ *\} *\ *\ *\ *\ *\r4   