U
    $Pf                     @   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)urlZ	info_dictz)http://www.mgtv.com/b/301817/3826653.htmlT)r   Z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  )Z	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)ZnoteZfilebitratez_(\d+)_mp4/tbr)defaultr   Zm3u8_nativeZReferername)Z	format_idr   r   r    protocolZhttp_headersZformat_notedescr   Zthumb)r   r   formatsr   r   r   )Z	_match_idbase64urlsafe_b64encoder   uuidZuuid4encodetimeZ_download_jsonZgeo_verification_headersr   
isinstancecauser   r   Z_parse_jsonreaddecodegetZraise_geo_restrictedZ_GEO_COUNTRIESstrip	enumerater	   Z_search_regexappendZ_sort_formats)selfr   r   r   Zapi_dataeerrorr   r   Zstream_datar   r%   idxr   Zstream_pathZformat_dataZ
format_urlr     r7   =/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/mgtv.py_real_extract)   s    
,  

 
    
zMGTVIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZIE_DESCZ_TESTSr9   r7   r7   r7   r8   r
      s&   r
   )
__future__r   r&   r*   r(   commonr   compatr   r   utilsr   r	   r
   r7   r7   r7   r8   <module>   s   