o
    i                     @   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/S2015E17122017mp4u   Saison 2015 Épisode 17zLa photo de famille 220100717)idexttitledescriptionupload_dateskip_downloadTz404 Not Found)url	info_dictparamsskipzhttp://ici.tou.tv/hackers)r   only_matchingz'https://ici.tou.tv/l-age-adulte/S01C501z$90505c8d-9c34-4f34-8da1-3a85bdc6d4f4c                 C   s   z!| j dd dt| jd||dd d| j ddd	d
 | _W n- tyN } z!t|jt	rI|jj
dkrI| |jj  d d }t|dd d }~ww | 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)ClientIdClientSecretEmailPasswordScopezclient-key zapplication/json;charset=utf-8)AuthorizationzContent-Type)dataheadersaccess_tokeni  MessageT)expectedzvalidation/v2/getClaimsclaims)_download_jsonjsondumps_CLIENT_KEYencode_access_tokenr   
isinstancecauser   status_parse_jsonresponsereaddecode	_call_api_claims)selfusernamepasswordeerror r9   J/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/toutv.py_perform_login(   s2   
zTouTvIE._perform_loginc                 C   s   |  |}| jd| || jdddd}| ds%|dr%| 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/web   )
client_keydeviceversion)queryallow_unplayable_formatsIsDrmz%This video is probably DRM protected.IdMediaDetailsOriginalTitleDescriptionImageUrlLengthInSecondsProgramTitleSeasonNumberSeasonTitleEpisodeNumberEpisodeTitle)
r   r   r   	thumbnaildurationseriesseason_numberseasonepisode_numberepisodeAppCoder
   )		_match_idr%   r(   	get_paramgetreport_warningr   r   _extract_info)r4   r   pathmetadatavideo_iddetailsr9   r9   r:   _real_extract=   s4   

zTouTvIE._real_extractN)
__name__
__module____qualname___NETRC_MACHINEIE_NAME
_VALID_URL_TESTSr(   r;   r`   r9   r9   r9   r:   r	      s2    	r	   )
r&   radiocanadar   networking.exceptionsr   utilsr   r   r   r	   r9   r9   r9   r:   <module>   s
    