
    VGhE                     n    d dl Z d dlZd dlZddlm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y)	    N   )InfoExtractor   )	HTTPError)ExtractorErrorint_or_noneparse_resolutiontraverse_objtry_geturl_or_noneurljoinc            
           e Zd ZdZdZdZdddddd	d
dddidddddddddddidddddddddddiddddddddddd ddgZd!d"d#d$d%Zd& Zd' Z	y())MGTVIEzChttps?://(?:w(?:ww)?\.)?mgtv\.com/[bv]/(?:[^/]+/)*(?P<id>\d+)\.htmlu   芒果TVMangoTVz-http://www.mgtv.com/v/1/290525/f/3116640.html3116640mp4u   我是歌手 第四季u$   我是歌手第四季双年巅峰会i%  zre:^https?://.*\.jpg$)idexttitledescriptionduration	thumbnailskip_downloadm3u8)url	info_dictparamsz)https://w.mgtv.com/b/427837/15588271.html15588271uu   春日迟迟再出发 沉浸版第1期：陆莹结婚半年查出肾炎被离婚 吴雅婷把一半票根退给前夫z$md5:a7a05a05b1aa87bd50cae619b19bbca6zre:^https?://.+\.jpgi  )r   r   r   r   r   r   z(https://w.mgtv.com/b/333652/7329822.html7329822u   拜托，请你爱我z$md5:cd81be6499bafe32e4d143abd822bf9ci`
  z)https://w.mgtv.com/b/427837/15591647.htmlT)r   only_matchingzHhttps://w.mgtv.com/b/388252/15634192.html?fpa=33318&fpos=4&lastp=ch_homez)http://www.mgtv.com/b/301817/3826653.htmlz(https://w.mgtv.com/b/301817/3826653.html)480p854x480)540p960x540)720p1280x720)1080p	1920x1080)u   标清u   高清u   超清u   蓝光c                 H   | j                  |      }t        j                  dt        j                          dt        t        j                                j                               d d d   }	 | j                  d|||dd| j                               d   }| j                  d|||d   d   |ddd| j                               d   }t-        |ddt.        hfd      }g }	t1        t-        |dd f            D ]  \  }
}t-        |dddt2              }t-        | j4                  ||j'                  d      d k(  rd!nd"f      }t-        | j                  t7        ||d#         |dd$|xs | %      d&t.        hf      }|st9        |j'                  d'      xs | j;                  d(|d)d *            }|	j=                  t3        |xs |
      |d+||j'                  d,      |j'                  d-      d.t?        |      d/d0|i|d1        ||	d2t-        |d&d3t2        j@                  hfd4t2        hfd5t8        hfd6t.        hfd7f      d8| jC                  ||      iS # t        $ r}t        |j                  t              r|j                  j                  d	k(  r| j                  |j                  j                   j#                         j%                         d       }|j'                  d
      dk(  r| j)                  | j*                         t        |d   d       d }~ww xY w)9Nzdid=z|pno=1030|ver=0.3.0301|clit=z'https://pcweb.api.mgtv.com/player/videopch5)tk2video_idtype)queryheadersdatai  codeiE  )	countriesmsgT)expectedz+https://pcweb.api.mgtv.com/player/getSourceatcpm2	intelmgtv)r,   r7   r-   r.   srcstream_domain.F)get_allstreamc                     |d   S )Nr    )_vs     ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/mgtv.py<lambda>z&MGTVIE._real_extract.<locals>.<lambda>k   s    WXY^W_     namestandardNamebarName)expected_typescalez16:9r   r   r   z"Downloading video info for format fatalnoteinfofilebitratez_(\d+)_mp4/tbr)defaultr   videoFormataudioFormat)	format_idr   r   rN   vcodecacodecm3u8_nativeReferer)protocolhttp_headersformat_note)r   formatsr   descr   thumb)r   r   r   r   	subtitles)"	_match_idbase64urlsafe_b64encodeuuiduuid4inttimeencode_download_jsongeo_verification_headersr   
isinstancecauser   status_parse_jsonresponsereaddecodegetraise_geo_restricted_GEO_COUNTRIESr
   r   	enumeratestr_RESOLUTIONSr   r   _search_regexappendr	   stripextract_subtitles)selfr   r-   r,   api_dataeerrorstream_datar:   rZ   idxr<   stream_name
resolution
format_urlrN   s                   rA   _real_extractzMGTVIE._real_extractM   sz   >>#&&&4::<. <S=M<NOVVXZZ^\^Z^`	**98 ("L  88: + <
 =CDH ))98u-$"L 446 * 8 9?@ %[?C+2Wafg$\+J_?`%ab 	KC&vv~y`cdK%!!Kfjj6IV6SYZ#[]J%d&9&9ve}5xu9*:S9TU ': 'W +')J fjj7 A4;M;M
E4 <N <A BCNN _! **]3 **]3 #:. *s!  + 	8 

 8f!CII;/ &'+7%}5	/ & 

 //-H

 
	
]  	!''9-!''..C2G(()9)9)>)>)@)G)G)I4P99V$---8K8K-L$U5\DAA	s   /*I 	L!&B6LL!c                    | j                  d| |d      xs i }i }t        |d       xs g D ]  }|j                  d      }|s|j                  d      xs d}| j                  | | |dd|j                  d	       d
| d      xs i }t        |j                  d            }|s||j	                  |j                         g       j                  ||j                  d	      dd        |S )Nz/https://pcweb.api.mgtv.com/video/title?videoId=F)rJ   c                     | d   d   S )Nr1   r   r>   )xs    rA   rB   z'MGTVIE._get_subtitles.<locals>.<lambda>   s    1V9W+= rC   r   captionSimpleNameenzDownload subtitle for locale rD   z ()rI   rL   srt)r   rD   r   )rf   r   ro   r   
setdefaultlowerrv   )	ry   r-   domainrL   r]   suburl_sublocalesub_urls	            rA   _get_subtitleszMGTVIE._get_subtitles   s$   ""%TU]T^#_#+5 # : @=? 		4!=>D" 	CggenGWW019TF%%	&:HE-J377SY?J[[]^d]eef+g & i oln !#''&/2G  4;;= 	 rC   N)
__name__
__module____qualname__
_VALID_URLIE_DESCIE_NAME_TESTSrt   r   r   r>   rC   rA   r   r      s    WJGG ?-A1
 #F+ ; MA0
 #F+ :,A0
 #F+ ; Z ; :U-F` &%&(	LC
JrC   r   )r_   rd   ra   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r>   rC   rA   <module>r      s1       ! -  S] SrC   