
    V|hE                     n    S SK r S SKrS SKrSSKJ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g)	    N   )InfoExtractor   )	HTTPError)ExtractorErrorint_or_noneparse_resolutiontraverse_objtry_geturl_or_noneurljoinc            
           \ rS rSrSrSrSrSSSSS	S
SS.SS0S.SSSSSSSS.SS0S.SSSSSSSS.SS0S.SSS.SSS.S SS.S!SS./rS"S#S$S%S&.rS' r	S( r
S)rg*)+MGTVIE   zChttps?://(?: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                 V   U R                  U5      n[        R                  " S[        R                  " 5        S[        [        R                  " 5       5       3R                  5       5      S S S2   n U R                  SUUUSS.U R                  5       S9S   nU R                  SUUUS   S   USSS.U R                  5       S9S   n[-        USS[.        14SS9n/ n	[1        [-        USS 45      5       GH  u  p[-        USSS[2        S9n[-        U R4                  XR'                  S5      S :X  a  S!OS"45      n[-        U R                  [7        XS#   5      USS$U=(       d    U 3S%9S&[.        145      nU(       d  M  [9        UR'                  S'5      =(       d    U R;                  S(US)S S*95      nU	R=                  [3        U=(       d    U
5      US+UUR'                  S,5      UR'                  S-5      S..[?        U5      ES/S0U0US1.E5        GM     UU	S2.[-        US&S3[2        R@                  14S4[2        14S5[8        14S6[.        14S7.45      ES8U RC                  X(5      0E$ ! [         a  n[        UR                  [        5      (       a  UR                  R                  S	:X  a}  U R                  UR                  R                   R#                  5       R%                  5       S 5      nUR'                  S
5      S:X  a  U R)                  U R*                  S9  [        US   SS9ee S nAff = f)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-   r8   r.   r/   srcstream_domain.F)get_allstreamc                     US   $ )Nr    )_vs     O/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/mgtv.py<lambda>&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   rP   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;   r\   idxr=   stream_name
resolution
format_urlrP   s                   rB   _real_extractMGTVIE._real_extractM   sq   >>#&&&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bKC&vv~y`cdK%!!Kjj6IV6SYZ#[]J%d&9&9e}5xu9*:S9TU ': 'W +')J fjj7 A4;M;M
E4 <N <A BCNN _! **]3 **]3 #:. *s!  +  c8 

 8f!CII;/ &'+7%}5	/ & 

 //H

 
	
]  	!''9--!''..C2G(()9)9)>)>)@)G)G)I4P99V$---8K8K-L$U5\DAA	s   2'I" "
L(,B7L##L(c                    U R                  SU 3USS9=(       d    0 n0 n[        US 5      =(       d    /  H  nUR                  S5      nU(       d  M  UR                  S5      =(       d    SnU R                  U U 3USSUR                  S	5       S
U S3S9=(       d    0 n[        UR                  S5      5      nU(       d  M  UR	                  UR                  5       / 5      R                  UUR                  S	5      SS.5        M     U$ )Nz/https://pcweb.api.mgtv.com/video/title?videoId=F)rL   c                     U S   S   $ )Nr2   r   r?   )xs    rB   rC   'MGTVIE._get_subtitles.<locals>.<lambda>   s    1V9W+=rE   r   captionSimpleNameenzDownload subtitle for locale rF   z ()rK   rN   srt)r   rF   r   )rh   r   rq   r   
setdefaultlowerrx   )	r{   r.   domainrN   r_   suburl_sublocalesub_urls	            rB   _get_subtitlesMGTVIE._get_subtitles   s#   ""%TU]T^#_#+5 # : @=? 		4!=>D"DCggenGWW019TF%%	&:HE-J377SY?J[[]^d]eef+g & i oln !#''&/2G  4;;=  E rE   r?   N)__name__
__module____qualname____firstlineno__
_VALID_URLIE_DESCIE_NAME_TESTSrv   r   r   __static_attributes__r?   rE   rB   r   r      s    WJGG ?-A1
 #F+ ; MA0
 #F+ :,A0
 #F+ ; Z ; :U-F` &%&(	LC
JrE   r   )ra   rf   rc   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r?   rE   rB   <module>r      s1       ! -  S] SrE   