U
    ga                     @   s@   d dl ZddlmZ ddlmZmZmZmZ G dd deZ	dS )    N   )InfoExtractor   )ExtractorErrorrandom_uuidv4unified_timestampurlencode_postdatac                	   @   s   e Zd ZdZdddddddd	d
ddidddddddddddiddgZdZd\ZZdZdZ	dZ
ddddZdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*
TennisTVIEz:https?://(?:www\.)?tennistv\.com/videos/(?P<id>[-a-z0-9]+)z@https://www.tennistv.com/videos/indian-wells-2018-verdasco-fritzz indian-wells-2018-verdasco-fritzZmp4z Fernando Verdasco v Taylor Fritzz%re:^After his stunning victory.{174}$zKhttps://atp-prod.akamaized.net/api/images/v1/images/112831/landscape/1242/0i%ZZ20180314)idexttitledescription	thumbnail	timestampZupload_dateZskip_downloadTz3Requires email and password of a subscribed account)urlZ	info_dictparamsskipzChttps://www.tennistv.com/videos/2650480/best-matches-of-2022-part-5Z2650480zBest Matches of 2022 - Part 5z$md5:36dec3bfae7ed74bd79e48045b17264czrhttps://open.http.mp.streamamg.com/p/3001482/sp/300148200/thumbnail/entry_id/0_myef18pd/version/100001/height/1920)r
   r   r   r   r   Zm3u8Ztennistv)NNi- zhttps://open.http.mp.streamamg.com/p/{partner}/sp/{partner}00/playManifest/entryId/{entry}/format/applehttp/protocol/https/a.m3u8?ks={session}zEhttps://sso.tennistv.com/auth/realms/TennisTV/protocol/openid-connectzhttps://www.tennistv.comhttps://www.tennistv.com/z!application/x-www-form-urlencoded)originZrefererzcontent-Typec                 C   s   | j | j dd dddddddd	}| d
|d}| j |d dd| jt||ddd}d|krltddd| j| j dd d| jddt dddt ddd}| d t	j
|jd d dddd d S )Nz/authzDownloading login pagetennis-tv-webzhttps://tennistv.comfragmentcodeZopenid)	client_idredirect_uriresponse_moderesponse_typescope)queryz3action=["\']([^"\']+?)["\']\s+method=["\']post["\']zlogin POST urlzSending login datazUnable to send login datazLog In)usernamepasswordZsubmitActionheadersdataz'Your username or password was incorrectTexpectedz
Logging inzEhttps://www.tennistv.com/resources/v1.1.10/html/silent-check-sso.htmlnone)r   r   stater   r   r   nonceprompt)r!   r   Zauthorization_code)r   
grant_typer   r   )_download_webpage_AUTH_BASE_URL_html_search_regex_HEADERSr   r   Z_request_webpager   	get_tokenurllibparseparse_qsr   )selfr   r   Z
login_pageZpost_urlZ	temp_pagehandle r5   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/tennistv.py_perform_login5   s^    
  
    
   zTennisTVIE._perform_loginc                 C   sL   | j | j d|dd| jt|d}|dp2| j| _|dpD| j| _d S )Nz/tokenzFetching tokenszUnable to fetch tokensr    access_tokenrefresh_token)_download_jsonr,   r.   r   getr8   r9   )r3   video_idpayloadresr5   r5   r6   r/   _   s    
    zTennisTVIE.get_tokenc                 C   sT   | j r| jrd S | d}|dr.|ds6|   |d j|d j | _ | _d S )Nr   r8   r9   )r8   r9   Z_get_cookiesr;   Zraise_login_requiredvalue)r3   cookiesr5   r5   r6   _real_initializeg   s    
zTennisTVIE._real_initializec                 C   s$   | j d| j d| |dd| jdS )NzOhttps://atppayments.streamamg.com/api/v1/session/ksession/?lang=en&apijwttoken=z	&entryId=zDownloading ksession tokenz!Failed to download ksession token)r!   )r:   r8   r.   )r3   r<   entryidr5   r5   r6   _download_session_jsonp   s       z!TennisTVIE._download_session_jsonc           	      C   sV  |  |}| ||}| d|d}| ||}|d}|d kr~| |d| jdd | ||d}|d kr~tddd	|d
r| |d
  | 	| j
j| j||d|\}}|| d|| jd| d|dddd| j d| j d| dt| jd|ddd| jd|dddp d | jd|dddp6d | jd|dddpLd ||d
S )Nzdata-entry-id=["\']([^"\']+)ZentryIDZKSessionr9   r   )r*   r9   r   z0Failed to get KSession, possibly a premium videoTr#   ZErrorMessage)Zpartnerentrysession 9<span itemprop="description" content=["\']([^"\']+)["\']>r   F)fatalz%https://open.http.mp.streamamg.com/p/z/sp/z00/thumbnail/entry_id/z/version/100001/height/1920z8<span itemprop="uploadDate" content=["\']([^"\']+)["\']>zupload timezdata-series\s*?=\s*?"(.*?)"seriesz$data-tournament-city\s*?=\s*?"(.*?)"seasonzdata-round\s*?=\s*?"(.*?)"round)
r
   r   r   r   r   rI   rJ   Zepisodeformats	subtitles)rG   )Z	_match_idr+   Z_search_regexrC   r;   r/   r9   r   Zreport_warningZ#_extract_m3u8_formats_and_subtitles_FORMAT_URLformat_PARTNER_IDZ_generic_titler-   Z_og_regexesr   )	r3   r   r<   ZwebpagerB   Zsession_jsonZ	k_sessionrL   rM   r5   r5   r6   _real_extractu   sR    


 
     zTennisTVIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSZ_NETRC_MACHINEr8   r9   rP   rN   r,   r.   r7   r/   rA   rC   rQ   r5   r5   r5   r6   r	      sP   
 *	r	   )
urllib.parser0   commonr   utilsr   r   r   r   r	   r5   r5   r5   r6   <module>   s   