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   )int_or_none
js_to_jsonparse_durationtraverse_objtry_geturljoinc                   @   sD  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e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+ed,dd
ddd-d.id/d0d1d2d3d1d2d4d1d2g	Zd5d6d
d7d8d9d:d;d!d<d=gZd>d? Z	e
d@dA ZdBdC ZdQdGedHedIefdJdKZdRdGedHedIefdMdNZdOdP ZdDS )S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mp4z/re:https?://[\w-]+\.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tDoFkZD3T1Lw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   durationzInvalid URLzahttps://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HVvPMzyzcanale all newsskip_downloadm3u8)r   r   paramsz-https://webtools.msvdn.net/embed/MfuWmzL2lGkAT)r   only_matchingzIhttps://859c1818ed614cc5b0047439470927b0.msvdn.net/amp_embed/tDoFkZD3T1LwzHhttps://859c1818ed614cc5b0047439470927b0.msvdn.net/content/tDoFkZD3T1Lw#z[https://www.lacplay.it/video/in-evidenza_728/lac-storie-p-250-i-santi-pietro-e-paolo_77297/u7kiX5DUaHYrzI Santi Pietro e Paoloz$md5:ff6be24916ba6b9ae990bf5f3df4911eg     @zre:https?://.+z
06/07/2025)r   r   r   r   r    r   tagsr   )r   r   c              
   c   sN    |D ]!}| d}dt |tt|d| dd| d| dV  qd S )N	contentIDr   )r    totalSecondsr   https://z/embed/)_typeie_keyr   r    r   r   )getr   r-   r   r   )selfhostplaylist_contententry
content_id r4   R/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/mainstreaming.py_playlist_entriesu   s   

z!MainStreamingIE._playlist_entriesc                 C   s(   |  dsd|  dsdnd |  } | S )Nwebtools.-r   )
startswith)r0   r4   r4   r5   _get_webtools_host   s   
z"MainStreamingIE._get_webtools_hostc                 C   s   |    d| | S )Nz//)http_schemer;   )r/   r0   r4   r4   r5   _get_webtools_base_url   s   z&MainStreamingIE._get_webtools_base_urlNDownloading API JSONFr0   pathitem_idc                 C   s   |  |d| ||||S )Nz/api/v2/)_call_webtools_apir/   r0   r?   r@   querynotefatalr4   r4   r5   	_call_api   s   zMainStreamingIE._call_apiDownloading webtools API JSONc                 C   s    | j t| ||||||dS )N)rC   rD   rE   )_download_jsonr
   r=   rB   r4   r4   r5   rA      s   z"MainStreamingIE._call_webtools_apic                 C   sz  |  | \}}t| j|d| |dddd }|s:| ||}| j| jd|ddtjd	|t	d
dp5i }|d }|
dp@|}|
dpG|}|
d}t|ddtd}d}	|
dra| | |
d}
|
rp| d|
  t|
d}d }g }i }|dkrt|dtd}d| d|d  d| d|rdnd  }d!}	| j|d"| |d#dpi }|
d$d
u r| jd%|
d& d'd( d)}	n4|d*kr| | ||
d+|||S |d,krd| d-| d}||d. d/d0d1 n| d2|  |r| j|d3 |d
d4\}}| j|d5 |d
d4\}}| ||}|||  |||||	t|
d6|
d7|t| |d8| d9d:	S );Nzcontent/z!Downloading content info API JSON)rD   c                 S   s   | d S )NplayerContentInfor4   )xr4   r4   r5   <lambda>   s    z/MainStreamingIE._real_extract.<locals>.<lambda>zconfig\s*=\s*({.+?})\s*;zmainstreaming player configz{})defaultflagsF)transform_sourcerE   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_idrE   zmanifest.mpdr    r(   zimage/z/poster)	r   r   r   formatsr   r    r(   	subtitlesr   )_match_valid_urlgroupsr	   rF   _download_webpage_parse_json_search_regexreDOTALLr   r.   r   str
report_drmreport_warningr   boolraise_no_formatsplaylist_resultr6   append#_extract_m3u8_formats_and_subtitles"_extract_mpd_formats_and_subtitles_merge_subtitlesextendr   r
   r=   )r/   r   r0   rd   content_infowebpageplayer_configr   r   r   alternative_content_idcontent_typeformat_base_urlre   rf   dvr_enabled	heartbeatm3u8_formats	m3u8_subsmpd_formatsmpd_subsr4   r4   r5   _real_extract   s   



(



zMainStreamingIE._real_extract)Nr>   F)NrG   F)__name__
__module____qualname__
_VALID_URL_EMBED_REGEXIE_DESCrn   _TESTS_WEBPAGE_TESTSr6   staticmethodr;   r=   rF   rA   r   r4   r4   r4   r5   r      s    	
		U
r   )rl   commonr   utilsr   r   r   r   r	   r
   r   r4   r4   r4   r5   <module>   s     
