
    VGh!$                     N    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e      Z
y)    N   )InfoExtractor   )int_or_none
js_to_jsonparse_durationtraverse_objtry_geturljoinc                      e Zd ZdZde dgZdZddddd	d
ddddg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"dd*d$d%d+d,d-d.dd
ddd/d0id1d2d0d3d4d0d3d5d0d3g	Zd6 Zed7        Z	d8 Z
d@d:ed;ed<efd=ZdAd:ed;ed<efd>Zd? Zy9)BMainStreamingIEzchttps?://(?:webtools-?)?(?P<host>[A-Za-z0-9-]*\.msvdn\.net)/(?:embed|amp_embed|content)/(?P<id>\w+)z<iframe[^>]+?src=["\']?(?P<url>z)["\']?zMainStreaming PlayerzNhttps://webtools-e18da6642b684f8aa9ae449862783a56.msvdn.net/embed/53EN6GxbWaJC53EN6GxbWaJCz!Diretta homepage 2021-12-31 12:00 was_livemp4z5re:https?://[A-Za-z0-9-]*\.msvdn.net/image/\w+/poster)idtitledescriptionlive_statusext	thumbnailz-Ignoring alternative content ID: WDAF1KOWUpH3z)MainStreaming said: Live event is OFFLINEzlive stream offline)url	info_dictexpected_warningsskipzNhttps://webtools-e18da6642b684f8aa9ae449862783a56.msvdn.net/embed/WDAF1KOWUpH3WDAF1KOWUpH3zPlaylist homepage)r   r   r   )r   r   playlist_mincountzNhttps://webtools-859c1818ed614cc5b0047439470927b0.msvdn.net/embed/tDoFkZD3T1LwtDoFkZD3T1Lwz1re:Class CNBC Live \d{4}-\d{2}-\d{2} \d{2}:\d{2}$is_live)r   r   r   r   r   zlive stream)r   r   r   z]https://webtools-f5842579ff984c1c98d63b8d789673eb.msvdn.net/embed/EUlZfGWkGpOd?autoPlay=falseEUlZfGWkGpOdzLa Settimana z03 Ottobre ore 02:00not_livei  )r   r   r   r   r   r   duration)r   r   zahttps://f5842579ff984c1c98d63b8d789673eb.msvdn.net/embed/MfuWmzL2lGkA?autoplay=false&T=1635860445MfuWmzL2lGkAz
TG Mattinaz06 Ottobre ore 08:00gQ@zIhttps://webtools-f5842579ff984c1c98d63b8d789673eb.msvdn.net/embed/HVvPMzyHVvPMzyz5re:^Diretta LaC News24 \d{4}-\d{2}-\d{2} \d{2}:\d{2}$zcanale all newsskip_downloadT)r   r   paramsz-https://webtools.msvdn.net/embed/MfuWmzL2lGkA)r   only_matchingzIhttps://859c1818ed614cc5b0047439470927b0.msvdn.net/amp_embed/tDoFkZD3T1LwzHhttps://859c1818ed614cc5b0047439470927b0.msvdn.net/content/tDoFkZD3T1Lw#c           
   #      K   |D ]X  }|j                  d      }dt        j                         |t        t	        |d            |j                  d      d| d| d Z y w)N	contentIDr   )r"   totalSecondsr   https://z/embed/)_typeie_keyr   r"   r   r   )getr   r-   r   r	   )selfhostplaylist_contententry
content_ids        g/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/mainstreaming.py_playlist_entriesz!MainStreamingIE._playlist_entriesi   sk     % 		E;/J)002 'U<X(YZ7+!$wzl; 		s   AA!c                 ^    | j                  d      sd| j                  d      sdndz   | z   } | S )Nwebtools.-r   )
startswith)r0   s    r4   _get_webtools_hostz"MainStreamingIE._get_webtools_hostu   s/    z*DOOC,@bIDPD    c                 J    | j                          d| j                  |       S )Nz//)http_schemer;   )r/   r0   s     r4   _get_webtools_base_urlz&MainStreamingIE._get_webtools_base_url{   s)    ""$%R(?(?(E'FGGr<   Nr0   pathitem_idc                 4    | j                  |d|z   ||||      S )Nz/api/v2/)_call_webtools_apir/   r0   r@   rA   querynotefatals          r4   	_call_apizMainStreamingIE._call_api~   s$    &&tZ$->PTV[\\r<   c                 `    | j                  t        | j                  |      |      ||||      S )N)rE   rF   rG   )_download_jsonr   r?   rD   s          r4   rC   z"MainStreamingIE._call_webtools_api   s;    ""D//5t<gUY]ej # l 	lr<   c                    | j                  |      j                         \  }}t        | j                  |d| |d      d       }|sV| j	                  ||      }| j                  | j                  d|ddt        j                        |t        d	
      xs i }|d   }|j                  d      xs |}|j                  d      xs |}|j                  d      }t        |ddt              }d}	|j                  d      r| j                  |       |j                  d      }
|
r| j                  d|
        t        |j                  d            }d }g }i }|dk(  rt        |dt               }d| d|d    d| d|rdnd }d }	| j                  |d!| |d"      xs i }|j                  d#      d	u r| j#                  d$|j                  d%       d&'       d(}	ns|d)k(  r3| j%                  | j'                  ||j                  d*            |||      S |d+k(  r"d| d,| d}|j)                  |d-z  d.d/d0       n| j#                  d1|        |rZ| j+                  |d2z  |d	3      \  }}| j-                  |d4z  |d	3      \  }}| j/                  ||      }|j1                  ||z          |||||	t3        |j                  d5            |j                  d6      |t5        | j7                  |      d7| d8      d9	S ):Nzcontent/z!Downloading content info API JSON)rF   c                     | d   S )NplayerContentInfo )xs    r4   <lambda>z/MainStreamingIE._real_extract.<locals>.<lambda>   s    lm  oB  mC r<   zconfig\s*=\s*({.+?})\s*;zmainstreaming player configz{})defaultflagsF)transform_sourcerG   contentInfor0   r)   r   longDescriptionshortDescription)expected_typer!   
drmEnabledalternativeContentIDz!Ignoring alternative content ID: contentType   )playerSettings
dvrEnabledr+   z/live/liveSourceID/z/%sz?DVRr   r   z
heartbeat/zChecking stream statusheartBeatUpzMainStreaming said: responseMessageT)expectedr      playlistContents
   z/vod/zoriginal.mp4originalr   )r   format_notequalityzUnknown content type zplaylist.m3u8)video_idrG   zmanifest.mpdr"   tagszimage/z/poster)	r   r   r   formatsr   r"   rj   	subtitlesr   )_match_valid_urlgroupsr
   rH   _download_webpage_parse_json_search_regexreDOTALLr   r.   r	   str
report_drmreport_warningr   boolraise_no_formatsplaylist_resultr5   append#_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitles_merge_subtitlesextendr   r   r?   )r/   r   r0   ri   content_infowebpageplayer_configr   r   r   alternative_content_idcontent_typeformat_base_urlrk   rl   dvr_enabled	heartbeatm3u8_formats	m3u8_subsmpd_formatsmpd_subss                        r4   _real_extractzMainStreamingIE._real_extract   s   ..s3::<hNN
+X<_  a cCD ,,S(;G ,,""/:W 		 # 3 :U	 - D J HJ	 
 )7L'/4##K0<H  )"<1BDVfij L)OOH%!-!1!12H!I!"CDZC[ \]"<#3#3M#BC	2&|5UeijK (f\.5Q4RRST\S]]`kvag|~`  AO#Ktz(-DhUmntrtI}}]+u4%%(<Y]]K\=]<^&_jn%o( R''&&t\-=-=>P-QRT\^cepr r R (eH:SAO NN?^#CT^klmn!!$9,"HI&*&N&N/1HE 'O 'S#L)$($K$K.085 %L %R!K --iBINN<+56 &&&|'7'7
'CD $$V," !<!<T!BfXJV]D^_

 
	
r<   )NzDownloading API JSONF)NzDownloading webtools API JSONF)__name__
__module____qualname__
_VALID_URL_EMBED_REGEXIE_DESC_TESTSr5   staticmethodr;   r?   rt   rH   rC   r   rN   r<   r4   r   r      s   wJ6zl'JKL$G
 d$<!)U @;" *	
$ d$, "#
 d$M(U "
 s$(5)U 
 w$%5)U"
 _Q0(U  
  C!

 _!
 ^!
aTFl
  
H]c ] ]s ]ls l# l l
J
r<   r   )rr   commonr   utilsr   r   r   r	   r
   r   r   rN   r<   r4   <module>r      s#    	 ! C
m C
r<   