o
    ia                     @   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-fritz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%Z20180314)idexttitledescription	thumbnail	timestampupload_dateskip_downloadTz3Requires email and password of a subscribed account)url	info_dictparamsskipzChttps://www.tennistv.com/videos/2650480/best-matches-of-2022-part-5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   m3u8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)origin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|v r6t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code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password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'   authorization_code)r    
grant_typer"   r#   )_download_webpage_AUTH_BASE_URL_html_search_regex_HEADERSr   r   _request_webpager   	get_tokenurllibparseparse_qsr   )selfr(   r)   
login_pagepost_url	temp_pagehandle rE   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/tennistv.py_perform_login5   sL   
zTennisTVIE._perform_loginc                 C   sL   | j | j d|dd| jt|d}|dp| j| _|dp"| j| _d S )Nz/tokenzFetching tokenszUnable to fetch tokensr+   access_tokenrefresh_token)_download_jsonr8   r:   r   getrH   rI   )r@   video_idpayloadresrE   rE   rF   r<   _   s   zTennisTVIE.get_tokenc                 C   sT   | j r| jrd S | d}|dr|ds|   |d j|d j| _ | _d S )Nr   rH   rI   )rH   rI   _get_cookiesrK   raise_login_requiredvalue)r@   cookiesrE   rE   rF   _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,   )rJ   rH   r:   )r@   rL   entryidrE   rE   rF   _download_session_jsonp   s   
z!TennisTVIE._download_session_jsonc           	      C   sT  |  |}| ||}| d|d}| ||}|d}|d u r?| |d| jdd | ||d}|d u r?tddd	|d
rK| |d
  | 	| j
j| j||d|\}}|| d|| jdg| dR |dddd| j d| j d| dt| jd|ddd| jd|dddpd | jd|dddpd | jd|dddpd ||d
S )Nzdata-entry-id=["\']([^"\']+)entryIDKSessionrI   r   )r6   rI   r"   z0Failed to get KSession, possibly a premium videoTr.   ErrorMessage)partnerentrysession z9<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   r^   r_   episodeformats	subtitles)	_match_idr7   _search_regexrU   rK   r<   rI   r   report_warning#_extract_m3u8_formats_and_subtitles_FORMAT_URLformat_PARTNER_ID_generic_titler9   _og_regexesr   )	r@   r   rL   webpagerT   session_json	k_sessionrb   rc   rE   rE   rF   _real_extractu   sF   



zTennisTVIE._real_extractN)__name__
__module____qualname__
_VALID_URL_TESTS_NETRC_MACHINErH   rI   rj   rh   r8   r:   rG   r<   rS   rU   rp   rE   rE   rE   rF   r	      sP    
*	r	   )
urllib.parser=   commonr   utilsr   r   r   r   r	   rE   rE   rE   rF   <module>   s    