U
    g                     @   sH   d dl Z ddlmZ ddlmZ ddlmZmZmZ G dd deZ	dS )	    N   )RadioCanadaIE   )	HTTPError)ExtractorErrorint_or_nonemerge_dictsc                   @   s\   e Zd ZdZdZdZdddddd	d
ddiddddddddgZdZdd Zdd Z	dS )TouTvIEtoutvztou.tvzChttps?://ici\.tou\.tv/(?P<id>[a-zA-Z0-9_-]+(?:/S[0-9]+[EC][0-9]+)?)z.http://ici.tou.tv/garfield-tout-court/S2015E17Z122017Zmp4u   Saison 2015 Épisode 17zLa photo de famille 2Z20100717)idexttitledescriptionZupload_dateZskip_downloadTz404 Not Found)urlZ	info_dictparamsskipzhttp://ici.tou.tv/hackers)r   Zonly_matchingz'https://ici.tou.tv/l-age-adulte/S01C501z$90505c8d-9c34-4f34-8da1-3a85bdc6d4f4c                 C   s   zB| j dd dt| jd||dd d| j ddd	d
 | _W nd tk
r } zFt|jt	r|jj
dkr| |jj  d d }t|dd W 5 d }~X Y nX | dd | _d S )Nz?https://services.radio-canada.ca/toutv/profiling/accounts/loginz
Logging inz$34026772-244b-49b6-8b06-317b30ac9a20zid.write media-validation.read)ZClientIdZClientSecretZEmailZPasswordZScopezclient-key zapplication/json;charset=utf-8)AuthorizationzContent-Type)dataheadersZaccess_tokeni  MessageT)expectedzvalidation/v2/getClaimsZclaims)_download_jsonjsondumps_CLIENT_KEYencodeZ_access_tokenr   
isinstancecauser   statusZ_parse_jsonresponsereaddecodeZ	_call_apiZ_claims)selfusernamepasswordeerror r'   :/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/toutv.py_perform_login(   s0      

zTouTvIE._perform_loginc                 C   s   |  |}| jd| || jdddd}| dsJ|drJ| d| |d	 }|d
 }t||d|d|dt|d|dt|d|dt|d|dd
| |dd|S )Nz4https://services.radio-canada.ca/toutv/presentation/Zweb   )Z
client_keyZdeviceversion)queryZallow_unplayable_formatsZIsDrmz%This video is probably DRM protected.ZIdMediaZDetailsZOriginalTitleDescriptionZImageUrlZLengthInSecondsZProgramTitleZSeasonNumberZSeasonTitleZEpisodeNumberZEpisodeTitle)
r   r   r   Z	thumbnaildurationZseriesZseason_numberZseasonZepisode_numberZepisodeZAppCoder
   )	Z	_match_idr   r   	get_paramgetZreport_warningr   r   Z_extract_info)r"   r   pathmetadataZvideo_iddetailsr'   r'   r(   _real_extract=   s6    
 zTouTvIE._real_extractN)
__name__
__module____qualname__Z_NETRC_MACHINEZIE_NAMEZ
_VALID_URLZ_TESTSr   r)   r4   r'   r'   r'   r(   r	      s2   	 r	   )
r   Zradiocanadar   Znetworking.exceptionsr   utilsr   r   r   r	   r'   r'   r'   r(   <module>   s   