U
    c                     @   sd   d dl mZ d dlZd dlZd dlZddlmZ ddlmZm	Z	 ddl
mZmZ G dd	 d	eZdS )
    )unicode_literalsN   )InfoExtractor   )compat_HTTPError
compat_str)ExtractorErrorint_or_nonec                   @   sF   e Zd ZdZdZddddddd	d
dddddddgZdd ZdS )MGTVIEzDhttps?://(?:w(?:ww)?\.)?mgtv\.com/(v|b)/(?:[^/]+/)*(?P<id>\d+)\.htmlu   芒果TVz-http://www.mgtv.com/v/1/290525/f/3116640.htmlZ3116640mp4u   我是歌手 第四季u$   我是歌手第四季双年巅峰会i%  zre:^https?://.*\.jpg$)idexttitledescriptionduration	thumbnail)url	info_dictz)http://www.mgtv.com/b/301817/3826653.htmlT)r   only_matchingz(https://w.mgtv.com/b/301817/3826653.htmlc                 C   s  |  |}tdtt  t f d d d }z$| jd|||d| 	 dd }W n~ t
k
r } z`t|jtr|jjdkr| |j  d }|dd	kr| j| jd
 t
|d dd W 5 d }~X Y nX |d }|d  }| jd||d d ||d| 	 dd }	|	d d }
g }t|	d D ]\}}|d}|sPq4| j|
| |d| d}|d}|s|q4t|dp| jd|dd d}|t|p||d|dd |i|d!d" q4| | ||||d#t|d$|d%d&S )'Ns$   did=%s|pno=1030|ver=0.3.0301|clit=%dz'https://pcweb.api.mgtv.com/player/video)tk2video_id)queryheadersdatai  codeiE  )	countriesmsgT)expectedinfor   z+https://pcweb.api.mgtv.com/player/getSourceZatcpm2)r    r   r   stream_domainr   streamr   z"Download video info for format #%d)noteZfilebitratez_(\d+)_mp4/tbr)defaultr   m3u8_nativeReferername)	format_idr   r   r$   protocolhttp_headersformat_notedescr   thumb)r   r   formatsr   r   r   )	_match_idbase64urlsafe_b64encoder   uuiduuid4encodetime_download_jsongeo_verification_headersr   
isinstancecauser   r   _parse_jsonreaddecodegetraise_geo_restricted_GEO_COUNTRIESstrip	enumerater	   _search_regexappend_sort_formats)selfr   r   r   api_dataeerrorr   r   stream_datar!   r/   idxr"   stream_pathformat_data
format_urlr$    rO   ?/mnt/sdb2/vscode/python/youtube-dl/youtube_dl/extractor/mgtv.py_real_extract)   s    
,  

 
    
zMGTVIE._real_extractN)__name__
__module____qualname__
_VALID_URLIE_DESC_TESTSrQ   rO   rO   rO   rP   r
      s&   r
   )
__future__r   r1   r6   r3   commonr   compatr   r   utilsr   r	   r
   rO   rO   rO   rP   <module>   s   