Ë
    š„j�<  ã                   óÖ   — 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y)é    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y)Ú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                  |«      }| j                  | j                  |z   |«      }g }|d   j                  «       D ]Â  \  }}|dk(  r(|j	                  | j                  |d   |dd¬«      «       Œ3|dk(  r(|j	                  | j                  |d   |dd¬«      «       Œ`|d	k(  r'|j	                  | j                  |d   |d¬«      «       ŒŒ|j                  ||d   |j                  d
«      |j                  d«      dœ«       ŒÄ t        |di ¬«      j                  «       D ��ci c]  \  }}||j                  d«      ddœg“Œ }	}}t        |d«      D �
cg c]=  }
|
j                  d«      |
j                  d«      xs d |
j                  d«      xs d dœ‘Œ? }}
| j                  |«       |t        |d«      t        t        |d«      «      t        t        |d«      «      xs d||	|dœS c c}}w c c}
w )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)   )r/   r   )r/   ÚactiveStartDate)r/   Ú
minimumAger   )r   r   r   r   ÚformatsÚ	subtitlesr0   )Ú	_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Úmetadatar3   Úsource_typeÚsourceÚlangÚdatar4   Úthumbr0   s               úV/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/microsoftembed.pyÚ_real_extractz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Ó^Õ_à—‘Ø!,Ø! %™=Ø$Ÿj™j¨Ó8Ø#ŸZ™Z¨Ó6ñ	 õ ð	ô& ".¨h¸
ÈBÔ!O×!UÑ!UÓ!W÷	
ñ �4˜ð Ø—x‘x “Øñð ñ ð
ˆ	ñ 
ô $ HÐ.LÓMö	Oð ð —9‘9˜UÓ#Ø—Y‘Y˜wÓ'Ò/¨4Ø—i‘i Ó)Ò1¨Tó
ð Oˆ
ð Oð
 	×&Ñ& zÔ2ð Ü! (Ð,@ÓAÜ*¬<¸ÐB`Ó+aÓbÜ$¤\°(Ð<UÓ%VÓWÒ\Ð[\ØØ"Ø$ñ
ð 	
ùó
ùòOs   Ä* G.ÅAG4N)Ú__name__Ú
__module__Ú__qualname__Ú
_VALID_URLÚ_TESTSr7   rI   © ó    rH   r   r      sL   „ Øg€Jð JØ1àØFØØvØØ#Ø%ñ
ð TÐTñð €Fð W€Hó*
rP   r   c                   ó$   — e Zd Zed„ «       Zdd„Zy)ÚMicrosoftMediusBaseIEc                 óz   — i }| D ]3  }|j                  |j                  dd«      g «      j                  |«       Œ5 |S )NÚtagÚund)Ú
setdefaultÚpopr=   )Úsubtitle_listr4   Úsubs      rH   Ú_sub_to_dictz"MicrosoftMediusBaseIE._sub_to_dictP   sD   € àˆ	Ø ò 	HˆCØ× Ñ  §¡¨°Ó!6¸Ó;×BÑBÀ3ÕGð	HàÐrP   c                 óh   — | j                  |||¬«      }|D ]  }|d   dk7  sŒd|d   vsŒd|d<   Œ |S )Nr"   ÚlanguageÚengÚEnglishr(   iöÿÿÿÚlanguage_preference)r:   )r@   Úism_urlrA   r#   r3   Úfmts         rH   Ú_extract_ismz"MicrosoftMediusBaseIE._extract_ismW   sR   € Ø×+Ñ+¨G°XÀUÐ+ÓKˆØò 	1ˆCØ�:‰ %Ó'¨I¸SÀÑ=MÒ,MØ-0�Ð)Ò*ð	1ð ˆrP   N)T)rJ   rK   rL   ÚstaticmethodrZ   rb   rO   rP   rH   rR   rR   O   s   „ Øñó ðôrP   rR   c            
       ór   — 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y)Ú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:33c8e4facadc438613476eea24165f71úFre:https://mediusimg\.event\.microsoft\.com/video-\d+/thumbnail\.jpg.*zcount:30)r   r   r   Údescriptionr   r4   ©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           	      óF  — t        | j                  d|d|d ¬«      dd„ ddt        hfdt        hfd	œf«      xsT t        j                  d
|«      D �cg c]4  }|t        |«      j                  d«      d   j                  d«      d   dœ‘Œ6 c}}| j                  |«      S c c}w )Nz!const\s+captionsConfiguration\s*=r+   r,   ÚlanguageListc                 ó   — t        |d   «      S )NÚsrc©r   ©Ú_Úvs     rH   ú<lambda>z5MicrosoftMediusIE._extract_subtitle.<locals>.<lambda>‹   s   € ¬+°a¸±hÓ*?€ rP   ro   ÚsrclangÚkind)r   rT   Únamez7var\s+file\s+=\s+\{[^}]+\'(https://[^\']+\.vtt\?[^\']+)z.vttr   rr   éÿÿÿÿ)r   rT   )r	   Ú_search_jsonÚstrÚreÚfindallr   ÚsplitrZ   )r@   ÚwebpagerA   r   r+   s        rH   Ú_extract_subtitlez#MicrosoftMediusIE._extract_subtitleˆ   sÄ   € ÜØ×ÑÐBÀGÈZÐYaÐkoÐÓpØÑ?ØØ!¤C 5Ð)Ø¤# ˜ñBð óò pô  "Ÿz™zÐ*dÐfmÓnöpØð  ¬°SÓ(9×(?Ñ(?ÀÓ(GÈÑ(J×(PÑ(PÐQTÓ(UÐVXÑ(YÓZò pð 	ð × Ñ  Ó*Ð*ùòps   Á9Bc           
      ó  — | j                  |«      }| j                  d|› �|«      }|| j                  |«      | j                  |«      | j	                  | j                  d|d«      |«      | j                  |«      | j                  ||«      dœS )Nz,https://medius.microsoft.com/Embed/video-nc/z!StreamUrl\s*=\s*"([^"]+manifest)"zism url)r   r   ri   r3   r   r4   )r5   Ú_download_webpageÚ_og_search_titleÚ_og_search_descriptionrb   Ú_search_regexÚ_og_search_thumbnailr   )r@   r   rA   r~   s       rH   rI   zMicrosoftMediusIE._real_extract”   sœ   € Ø—>‘> #Ó&ˆØ×(Ñ(Ð+WÐX`ÐWaÐ)bÐdlÓmˆð Ø×*Ñ*¨7Ó3Ø×6Ñ6°wÓ?Ø×(Ñ(Ø×"Ñ"Ð#GÈÐR[Ó\Ð^fóhà×2Ñ2°7Ó;Ø×/Ñ/°¸ÓBñ
ð 	
rP   N)rJ   rK   rL   rM   rN   r   rI   rO   rP   rH   re   re   _   sœ   „ Øq€Jð bà8ØØ[ØAØbØ#ñ
ñ
ð bà8ØØ.ØAØbØ#ñ
ñ
ð fà8ØØ>ØAØXØ#ñ
ñ
ð bØñð bØñðC$€FòL
+ó
rP   re   c                   óD   — 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y)Ú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   ri   é   )r   r   Úplaylist_countz3https://learn.microsoft.com/en-us/events/build-2022z
build-2022zMicrosoft Build 2022 - Eventsz$md5:c16b43848027df837b22c6fbac7648d3éÉ   c              #   óø   K  — d}	 | j                  ||d|› �d|dœ¬«      }t        |dddt        hf«      }|D ]  }| j                  d	|› �«      –— Œ |t	        |«      z  }||j                  d
d«      k\  s|sy Œt­w)Nr   zDownloading entries zen-us)Úlocalez$skip)ÚqueryÚresults.r   z!https://learn.microsoft.com/en-usÚcount)r6   r	   rz   Ú
url_resultÚlenr>   )r@   Úurl_baserA   ÚskipÚplaylist_infoÚ	url_pathsÚurl_paths          rH   Ú_entriesz!MicrosoftLearnPlaylistIE._entries·   s«   è ø€ ØˆØØ ×/Ñ/°¸(ÐFZÐ[_ÐZ`ÐDaØ!ØñjÐ/ó ˆMô % ]°YÀÀUÌSÈEÐ4RÓSˆIØ%ò V�Ø—o‘oÐ(IÈ(ÈÐ&TÓUÓUðVà”C˜	“NÑ"ˆDØ�}×(Ñ(¨°!Ó4Ò4¹IØð ùs   ‚A8A:c                 ó$  — | j                  |«      j                  dd«      \  }}| j                  ||«      }| j                  |«      | j	                  |«      dœ}|dk(  rdnd}d|› d|› d|› �} | j
                  | j                  ||«      |fi |¤ŽS )	Nr   Útype)r   ri   ÚshowsÚepisodesÚsessionsz6https://learn.microsoft.com/api/contentbrowser/search/ú/)Ú_match_valid_urlÚgroupr�   r‚   rƒ   Úplaylist_resultr—   )r@   r   Úplaylist_idÚplaylist_typer~   ÚmetainfoÚsub_typer’   s           rH   rI   z&MicrosoftLearnPlaylistIE._real_extractÅ   s¯   € Ø%)×%:Ñ%:¸3Ó%?×%EÑ%EÀdÈFÓ%SÑ"ˆ�]Ø×(Ñ(¨¨kÓ:ˆð ×*Ñ*¨7Ó3Ø×6Ñ6°wÓ?ñ
ˆð "/°'Ò!9‘:¸zˆàKÈMÈ?ÐZ[Ð\gÐ[hÐhiÐjrÐisÐtˆØ#ˆt×#Ñ# D§M¡M°(¸KÓ$HÈ+ÑbÐYaÑbÐbrP   N)rJ   rK   rL   rM   rN   r—   rI   rO   rP   rH   r‡   r‡   £   sR   „ Øp€JàKà&Ø)ØAñ
ð
 ñð EàØ4ØAñ
ð
 ñð€Fò$ócrP   r‡   c            
       óR   — 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y)ÚMicrosoftLearnEpisodeIEzGhttps?://learn\.microsoft\.com/(?:[\w-]+/)?shows/[\w-]+/(?P<id>[^?#/]+)zŒhttps://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-5c9fa08dc94crg   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   ri   r   r   r   r4   rj   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://.+/.+\.jpgi€º¸eÚ20240130)r   r   r   ri   r   r   r   Úformatzbv[protocol=https])r   r   Úparamsc                 ó¸  — | j                  |«      }| j                  ||«      }| j                  d|dd¬«      }| j                  d|› �|«      }g }t	        |ddt
        hf«      x}r#|j                  | j                  ||d¬«      «       t	        |ddt
        hf«      x}r%|j                  | j                  ||d	d
d¬«      «       t	        |ddt
        hf«      x}	r$|j                  | j                  |	|dd¬«      «       dD ]?  }
t	        |d|
› d�t
        hf«      x}sŒ|j                  |d|
› �ddœt        |«      ¥«       ŒA t	        |ddt
        hf«      x}r|j                  |dddœ«       ||| j                  t	        |ddd„ dt        hfddœf«      «      | j                  |«      | j                  |«      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(   Úvcodecr+   c                 ó   — t        |d   «      S )Nr   rp   rq   s     rH   rt   z7MicrosoftLearnEpisodeIE._real_extract.<locals>.<lambda>  s   € ¼ÀAÀeÁHÓ8M€ rP   r\   r   )rT   r   )r   r3   r4   r   ri   Ú
createTimeÚthumbnailOtherSizes.)r   r0   )r5   r�   Ú_html_search_metar6   r	   r   r9   rb   r;   r<   r=   r   rZ   rz   r‚   rƒ   r   )r@   r   rA   r~   Úentry_idÚ
video_infor3   r`   Úhls_urlÚmpd_urlÚkeyÚ	video_urlÚ	audio_urls                rH   rI   z%MicrosoftLearnEpisodeIE._real_extractï   sU  € Ø—>‘> #Ó&ˆØ×(Ñ(¨¨hÓ7ˆà×)Ñ)¨)°W¸iÈtÐ)ÓTˆØ×(Ñ(ØFÀxÀjÐQÐS[ó]ˆ
ð ˆÜ" :°Ð?QÔT_ÐS`Ð/aÓbÐbˆ7ÐbØ�N‰N˜4×,Ñ,¨W°hÀeÐ,ÓLÔMÜ" :°Ð?TÔWbÐVcÐ/dÓeÐeˆ7ÐeØ�N‰N˜4×5Ñ5°g¸xÈÐX]ÐejÐ5ÓkÔlÜ" :°Ð?UÔXcÐWdÐ/eÓfÐfˆ7ÐfØ�N‰N˜4×4Ñ4°W¸hÈvÐ]bÐ4ÓcÔdØ,ò 	ˆCÜ(¨°mÈÀuÈOÐE\Ô_jÐ^kÐ5lÓmÐmˆyÑmØ—‘Ø$Ø#.¨s¨eÐ!4Ø$ñ ô ' yÓ1ð	 õ ð	ô % Z°-ÀÌkÈ]Ð1[Ó\Ð\ˆ9Ð\Ø�N‰NØ Ø)Ø ñô ð ØØ×*Ñ*¬<¸
Ø˜zÑ+MØ&¬¨Ð.Ø ñPðEó ,ó ð
 ×*Ñ*¨7Ó3Ø×6Ñ6°wÓ?ñ
ô ˜:Ø*¬]¨OÐ<Ø,Ð.CÀSÈ5ÔS^ÐR_ÐJ`Ðañ(ó ð
ð 	
rP   N©rJ   rK   rL   rM   rN   rI   rO   rP   rH   r¦   r¦   Ó   sk   „ Ø[€Jð ^à8ØØ\ØAØ#Ø%ØPØ#ñ	
ñð rà8ØØ9ØAØ1Ø#Ø%ñ
ð Ð1Ð2ñð€Fó4,
rP   r¦   c            	       ó2   — e Zd ZdZdddddddd	d
œdœgZd„ Zy)Ú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-environmentsrf   rg   zMRapidly code, test and ship from secure cloud developer environments - Eventsz$md5:f26c1a85d41c1cffd27a0279254a25c3iX�bÚ20220524rh   ©r   r   r   ri   r   r   r   rj   c           	      ó  — | j                  |«      }| j                  ||«      }| j                  |«      | j                  |«      t	        | j                  d|d«      «      dœ} | j                  | j                  d|dd¬«      fdt        dœ|¤ŽS )NÚ	startDate)r   ri   r   ÚexternalVideoUrlÚvideoUrlTr"   )Úurl_transparentÚie)r5   r�   r‚   rƒ   r   rÀ   r�   re   )r@   r   rA   r~   r£   s        rH   rI   z%MicrosoftLearnSessionIE._real_extract-  s¤   € Ø—>‘> #Ó&ˆØ×(Ñ(¨¨hÓ7ˆð ×*Ñ*¨7Ó3Ø×6Ñ6°wÓ?Ü& t×'=Ñ'=¸kÈ7ÐT_Ó'`Óañ
ˆð ˆt�‰Ø×"Ñ"Ð#5°wÀ
ÐRVÐ"ÓWðDà Ô%6ñDà:BñDð 	DrP   NrÈ   rO   rP   rH   rÊ   rÊ     s9   „ Ø\€Jð Jà8ØØdØAØ#Ø%Øbñ
ñð €FóDrP   rÊ   c            	       óD   — 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y)Ú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-a3527cb57554rg   zMicrosoft Build opening keynotez$md5:d38338f336ef4b6ef9ad2a7466a76655i ÅLfÚ20240521rh   rÌ   rj   z*https://build.microsoft.com/en-US/sessionsr   rœ   i¢  )r   r   Úplaylist_mincountc                 óL  ‡— | j                  |«      Š| j                  d‰d«      D �cg c]J  } | j                  |d   ft        ddœt	        |dt
        hfdt
        hfdt
        hfd	t        hfd
œ«      ¤Ž‘ŒL }}‰dk(  r| j                  |‰«      S t	        |ˆfd„d¬«      S c c}w )Nz8https://api-v2.build.microsoft.com/api/session/all/en-USzDownloading video infoÚonDemandT)rÒ   rÑ   Ú	sessionIdr   ri   ÚstartDateTime)r   r   ri   r   rœ   c                 ó   •— |d   ‰k(  S )Nr   rO   )rr   rs   rA   s     €rH   rt   z0MicrosoftBuildIE._real_extract.<locals>.<lambda>f  s   ø€ °q¸±wÀ(Ñ7J€ rP   F)Úget_all)r5   r6   r�   re   r	   rz   r   r    )r@   r   rÂ   ÚentriesrA   s       @rH   rI   zMicrosoftBuildIE._real_extractU  sÕ   ø€ Ø—>‘> #Ó&ˆð #×1Ñ1ØJÈHÐVnópö

ð ð ˆD�O‰OØ˜:Ñ&ðÜ+<ÈdñÜVbÐcmØ&¬¨Ð.Ø%¬ uÐ-Ø$1´C°5Ð#9Ø"1´M°?Ð!Cñ	pó Wóð

ˆð 

ð �zÒ!Ø×'Ñ'¨°Ó:Ð:ä Ó*JÐUZÔ[Ð[ùò

s   ¨AB!NrÈ   rO   rP   rH   rÔ   rÔ   <  sZ   „ àKØMð€Jð qà8ØØ6ØAØ#Ø%Øbñ
ñð <à�*ð
ð !ñð€Fó&\rP   rÔ   )r{   Úcommonr   Úutilsr   r   r   r	   r
   r   r   r   rR   re   r‡   r¦   rÊ   rÔ   rO   rP   rH   ú<module>rà      s~   ðÛ 	å !÷÷ ñ ô=
�}ô =
ô@˜Mô ô A
Ð-ô A
ôH-c˜}ô -cô`H
Ð3ô H
ôVD˜mô Dô<*\�}õ *\rP   