
    V|h<                         S SK r SSKJr  SSKJrJrJrJrJrJ	r	J
r
   " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    N   )InfoExtractor   )int_or_noneparse_iso8601parse_resolutiontraverse_objunified_timestampurl_basenameurl_or_nonec            
       D    \ rS rSrSrSSSSSSS	S
SS.S/S./rSrS rSrg)MicrosoftEmbedIE   zShttps?://(?: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           
         U R                  U5      nU R                  U R                  U-   U5      n/ nUS   R                  5        H  u  pVUS:X  a&  UR	                  U R                  US   USSS95        M1  US:X  a&  UR	                  U R                  US   USSS95        M]  US	:X  a%  UR	                  U R                  US   USS95        M  UR                  UUS   UR                  S
5      UR                  S5      S.5        M     [        US0 S9R                  5        VVs0 s H  u  pxUUR                  S5      SS./_M     n	nn[        US5       V
s/ s HH  n
U
R                  S5      U
R                  S5      =(       d    S U
R                  S5      =(       d    S S.PMJ     nn
U R                  U5        U[        US5      [        [        US5      5      [        [        US5      5      =(       d    SUU	US.$ s  snnf s  sn
f )Nstreamssmooth_Streamingr   mssFfatalapple_HTTP_Live_Streamingr   	mPEG_DASHheightPixelswidthPixels)	format_idr   heightwidthcaptionsdefaultvtt)r   r   )snippet
thumbnails.r+   r*   )r   r+   r*   )r0   r   )r0   activeStartDate)r0   
minimumAger   )r   r   r   r   formats	subtitlesr1   )	_match_id_download_json_API_URLitemsextend_extract_ism_formats_extract_m3u8_formats_extract_mpd_formatsappendgetr	   _remove_duplicate_formatsr
   r   )selfr   video_idmetadatar4   source_typesourcelangdatar5   thumbr1   s               Y/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/microsoftembed.py_real_extractMicrosoftEmbedIE._real_extract"   s&   >>#&&&t}}x'?J#+I#6#<#<#>K00t88RW_d8ef ;;t99&-SX`e9fg+t88X]8^_!,!%=$jj8#ZZ6	   $?& ".h
B!O!U!U!W	
 "X:4 xx   "X	 	 
 $H.LM	O Ne 99U#YYw'/4ii)1T
 N	 	 O
 	&&z2 !(,@A*<B`+ab$\(<U%VW\[\"$
 	

Os   %"G=AH N)	__name__
__module____qualname____firstlineno__
_VALID_URL_TESTSr8   rJ   __static_attributes__rL       rI   r   r      sL    gJ J1Fv#%
 TT F WH*
rT   r   c                   .    \ rS rSr\S 5       rSS jrSrg)MicrosoftMediusBaseIEO   c                 ~    0 nU  H4  nUR                  UR                  SS5      / 5      R                  U5        M6     U$ )Ntagund)
setdefaultpopr>   )subtitle_listr5   subs      rI   _sub_to_dict"MicrosoftMediusBaseIE._sub_to_dictP   s=    	 C  !6;BB3G !rT   c                 n    U R                  XUS9nU H  nUS   S:w  d  M  SUS   ;  d  M  SUS'   M      U$ )Nr#   languageengEnglishr)   ilanguage_preference)r;   )rA   ism_urlrB   r$   r4   fmts         rI   _extract_ism"MicrosoftMediusBaseIE._extract_ismW   sK    ++GU+KC:%'IS=M,M-0)*  rT   rL   N)T)rM   rN   rO   rP   staticmethodr_   rh   rS   rL   rT   rI   rV   rV   O   s     rT   rV   c            
       z    \ rS rSrSrSSSSSSS	S
.S.SSSSSSSS
.S.SSSSSSSS
.S.SSS.SSS./rS rS rSrg)MicrosoftMediusIE_   z]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   r5   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           
      R   [        U R                  SUSUS S9SS SS[        14S[        14S	.45      =(       dX    [        R                  " S
U5       Vs/ s H5  nU[        U5      R                  S5      S   R                  S5      S   S.PM7     snnU R                  U5      $ s  snf )Nz!const\s+captionsConfiguration\s*=r,   r-   languageListc                     [        US   5      $ )Nsrcr   _vs     rI   <lambda>5MicrosoftMediusIE._extract_subtitle.<locals>.<lambda>   s    +ah*?rT   rw   srclangkind)r   rY   namez7var\s+file\s+=\s+\{[^}]+\'(https://[^\']+\.vtt\?[^\']+)z.vttr   rz   )r   rY   )r	   _search_jsonstrrefindallr   splitr_   )rA   webpagerB   r   r,   s        rI   _extract_subtitle#MicrosoftMediusIE._extract_subtitle   s    BGZYakop?!C5)#B  p  "zz*dfmnpn  S(9(?(?(G(J(P(PQT(UVX(YZnp 	   **ps   <B$c           
         U R                  U5      nU R                  SU 3U5      nUU R                  U5      U R                  U5      U R	                  U R                  SUS5      U5      U R                  U5      U R                  X25      S.$ )Nz,https://medius.microsoft.com/Embed/video-nc/z!StreamUrl\s*=\s*"([^"]+manifest)"zism url)r   r   rq   r4   r   r5   )r6   _download_webpage_og_search_title_og_search_descriptionrh   _search_regex_og_search_thumbnailr   )rA   r   rB   r   s       rI   rJ   MicrosoftMediusIE._real_extract   s    >>#&((+WX`Wa)bdlm **7366w?((""#GR[\^fh227;//B
 	
rT   rL   N)	rM   rN   rO   rP   rQ   rR   r   rJ   rS   rL   rT   rI   rl   rl   _   s    qJ b8[Ab#

 b8.Ab#

 f8>AX#

 b bC$FL
+
rT   rl   c                   L    \ rS rSrSrSSSSS.SS	.S
SSSS.SS	./rS rS rSrg)MicrosoftLearnPlaylistIE   z\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   rq      )r   r   playlist_countz3https://learn.microsoft.com/en-us/events/build-2022z
build-2022zMicrosoft Build 2022 - Eventsz$md5:c16b43848027df837b22c6fbac7648d3   c              #      #    Sn U R                  XSU 3SUS.S9n[        USSS[        145      nU H  nU R                  S	U 35      v   M     U[	        U5      -  nX4R                  S
S5      :  d  U(       d  g Mx  7f)Nr   zDownloading entries zen-us)localez$skip)queryresults.r   z!https://learn.microsoft.com/en-uscount)r7   r	   r   
url_resultlenr?   )rA   url_baserB   skipplaylist_info	url_pathsurl_paths          rI   _entries!MicrosoftLearnPlaylistIE._entries   s      //FZ[_Z`Da!j/ M %]YUSE4RSI%oo(I(&TUU &C	N"D((!44I s   A<A>c                     U R                  U5      R                  SS5      u  p#U R                  X5      nU R                  U5      U R	                  U5      S.nUS:X  a  SOSnSU SU SU 3nU R
                  " U R                  Xr5      U40 UD6$ )	Nr   type)r   rq   showsepisodessessionsz6https://learn.microsoft.com/api/contentbrowser/search//)_match_valid_urlgroupr   r   r   playlist_resultr   )rA   r   playlist_idplaylist_typer   metainfosub_typer   s           rI   rJ   &MicrosoftLearnPlaylistIE._real_extract   s    %)%:%:3%?%E%EdF%S"((: **7366w?
 "/'!9:zKM?Z[\g[hhijrist##DMM($H+bYabbrT   rL   N)	rM   rN   rO   rP   rQ   rR   r   rJ   rS   rL   rT   rI   r   r      sR    pJK&)A

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

 F$crT   r   c            
       Z    \ rS rSrSrSSSSSSS	S
SS.S.SSSSSSSSS.SS0S./rS rSrg)MicrosoftLearnEpisodeIE   zGhttps?://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-5c9fa08dc94cro   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   rq   r   r   r   r5   rr   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   rq   r   r   r   formatzbv[protocol=https])r   r   paramsc                    U R                  U5      nU R                  X5      nU R                  SUSSS9nU R                  SU 3U5      n/ n[	        USS[
        145      =n(       a  UR                  U R                  XrSS95        [	        USS[
        145      =n(       a!  UR                  U R                  XS	S
SS95        [	        USS[
        145      =n	(       a   UR                  U R                  XSSS95        S HF  n
[	        USU
 S3[
        145      =n(       d  M#  UR                  USU
 3SS.[        U5      E5        MH     [	        USS[
        145      =n(       a  UR                  USSS.5        UUU R                  [	        USSS S[        14SS.45      5      U R                  U5      U R                  U5      S.[	        US[         14SSSS[
        104S .5      E$ )!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)   vcodecr,   c                     [        US   5      $ )Nr   rx   ry   s     rI   r|   7MicrosoftLearnEpisodeIE._real_extract.<locals>.<lambda>  s    AeH8MrT   rb   r   )rY   r   )r   r4   r5   r   rq   
createTimethumbnailOtherSizes.)r   r1   )r6   r   _html_search_metar7   r	   r   r:   rh   r<   r=   r>   r   r_   r   r   r   r   )rA   r   rB   r   entry_id
video_infor4   rf   hls_urlmpd_urlkey	video_url	audio_urls                rI   rJ   %MicrosoftLearnEpisodeIE._real_extract   sH   >>#&((7)))Wit)T((FxjQS[]
 ":?QT_S`/abb7bNN4,,We,LM":?TWbVc/dee7eNN455gX]ej5kl":?UXcWd/eff7fNN444Wv]b4cd,C(muOE\_j^k5lmmym$#.se!4$  'y1	   - %Z-k]1[\\9\NN )   **<
z+M&. PE , 
 **7366w?
 :*]O<,.CS5S^R_J`a( 
 	
rT   rL   NrM   rN   rO   rP   rQ   rR   rJ   rS   rL   rT   rI   r   r      sk    [J ^8\A#%P#	
 r89A1#%
 12F4,
rT   r   c            	       :    \ rS rSrSrSSSSSSS	S
S.S./rS rSrg)MicrosoftLearnSessionIEi  zHhttps?://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-environmentsrn   ro   zMRapidly code, test and ship from secure cloud developer environments - Eventsz$md5:f26c1a85d41c1cffd27a0279254a25c3iXb20220524rp   r   r   r   rq   r   r   r   rr   c           	         U R                  U5      nU R                  X5      nU R                  U5      U R                  U5      [	        U R                  SUS5      5      S.nU R                  " U R                  SUSSS94S[        S.UD6$ )N	startDate)r   rq   r   externalVideoUrlvideoUrlTr#   )url_transparentie)r6   r   r   r   r   r   r   rl   )rA   r   rB   r   r   s        rI   rJ   %MicrosoftLearnSessionIE._real_extract-  s    >>#&((7 **7366w?&t'='=k7T_'`a
 ""#5w
RV"WD %6D:BD 	DrT   rL   Nr   rL   rT   rI   r   r     s9    \J J8dA#%b
 FDrT   r   c            	       L    \ rS rSrSS/rSSSSSS	S
SS.S.SSS0SS./rS rSrg)MicrosoftBuildIEi<  z@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-a3527cb57554ro   zMicrosoft Build opening keynotez$md5:d38338f336ef4b6ef9ad2a7466a76655i Lf20240521rp   r   rr   z*https://build.microsoft.com/en-US/sessionsr   r   i  )r   r   playlist_mincountc                 P  ^ U R                  U5      mU R                  STS5       Vs/ s HK  nU R                  " US   4[        SS.[	        US[
        14S[
        14S[
        14S	[        14S
.5      D6PMM     nnTS:X  a  U R                  UT5      $ [	        UU4S jSS9$ s  snf )Nz8https://api-v2.build.microsoft.com/api/session/all/en-USzDownloading video infoonDemandT)r   r   	sessionIdr   rq   startDateTime)r   r   rq   r   r   c                    > US   T:H  $ )Nr   rL   )rz   r{   rB   s     rI   r|   0MicrosoftBuildIE._real_extract.<locals>.<lambda>f  s    qw(7JrT   F)get_all)r6   r7   r   rl   r	   r   r   r   )rA   r   r   entriesrB   s       @rI   rJ   MicrosoftBuildIE._real_extractU  s    >>#& #11JHVnp

p
 OO:&+<dVbcm&.%u-$1C5#9"1M?!C	p Wp 	 

 z!''::*JUZ[[

s   AB#rL   Nr   rL   rT   rI   r   r   <  sZ    KMJ q86A#%b
 <*
 !F&\rT   r   )r   commonr   utilsr   r   r   r	   r
   r   r   r   rV   rl   r   r   r   r   rL   rT   rI   <module>r      s~    	 !  =
} =
@M  A
- A
H-c} -c`H
3 H
VDm D<*\} *\rT   