
    VGha                     F    d dl ZddlmZ ddlmZmZmZmZ  G d de      Z	y)    N   )InfoExtractor   )ExtractorErrorrandom_uuidv4unified_timestampurlencode_postdatac            	           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 Zd  Zd! Zd" Zd# Zy$)%
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                    | j                  | j                   dd ddddddd	      }| j                  d
|d      }| j                  |d dd| j                  t	        ||dd            }d|v rt        dd      | j                  | j                   dd d| j                  ddt               dddt               dd      }| j                  d t        j                  j                  |j                        d   d   dddd       y )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handles          b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/tennistv.py_perform_loginzTennisTVIE._perform_login5   sB   ++""#5)41I, 6!+!'! , 
 **+acmo  A**d02MMM(:$$ (< ) + 	 5	A !JUYZZ&&""#5)4t}}, g&!+!'!& 	 '  	tLL))&**5f=bA.(c	
 	    c           
         | j                  | j                   d|dd| j                  t        |            }|j	                  d      xs | j
                  | _        |j	                  d      xs | j                  | _        y )Nz/tokenzFetching tokenszUnable to fetch tokensr.   access_tokenrefresh_token)_download_jsonr;   r=   r	   getrL   rM   )rC   video_idpayloadress       rH   r?   zTennisTVIE.get_token_   sz    !!""#6*H6G$dmmBTU\B] " _  GGN3Ht7H7H WW_5K9K9KrJ   c                    | j                   r| j                  ry | j                  d      }|j                  d      r|j                  d      s| j	                          |d   j
                  |d   j
                  c| _         | _        y )Nr   rL   rM   )rL   rM   _get_cookiesrO   raise_login_requiredvalue)rC   cookiess     rH   _real_initializezTennisTVIE._real_initializeg   ss    !3!3##$?@{{>*'++o2N%%'070G0M0MwWfOgOmOm-4-rJ   c                 b    | j                  d| j                   d| |dd| j                        S )NzOhttps://atppayments.streamamg.com/api/v1/session/ksession/?lang=en&apijwttoken=z	&entryId=zDownloading ksession tokenz!Failed to download ksession token)r/   )rN   rL   r=   )rC   rP   entryids      rH   _download_session_jsonz!TennisTVIE._download_session_jsonp   sT    ""]^b^o^o]ppy  {B  zC  D24Waeanan # p 	prJ   c                    | j                  |      }| j                  ||      }| j                  d|d      }| j                  ||      }|j	                  d      }|P| j                  |d| j                  dd       | j                  ||      j	                  d      }|t        dd	      |j	                  d
      r| j                  |d
          | j                  | j                  j                  | j                  ||      |      \  }}|| j                  d|      | j                  dg| j                  d      |dd      d| j                   d| j                   d| dt!        | j                  d|dd            | j                  d|dd      xs d | j                  d|dd      xs d | j                  d|dd      xs d ||d
S )Nzdata-entry-id=["\']([^"\']+)entryIDKSessionrM   r!   )r9   rM   r%   z0Failed to get KSession, possibly a premium videoTr1   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   re   rf   episodeformats	subtitles)	_match_idr:   _search_regexr[   rO   r?   rM   r   report_warning#_extract_m3u8_formats_and_subtitles_FORMAT_URLformat_PARTNER_ID_generic_titler<   _og_regexesr   )	rC   r   rP   webpagerZ   session_json	k_sessionri   rj   s	            rH   _real_extractzTennisTVIE._real_extractu   s/   >>#&((h7$$%DgyY228WE $$Z0	NN8-!%!3!3,& 
 33HgFJJ:VI $%WbfggN+^ <=!EE##D,<,<GU^#_aik ((W522MpPTP`P`anPope 3 5 AAQAQ@RRVW[WgWgVhh~  @G  H  Hc  d*4+B+BKWVckp ,C ,r s--.LgW_gl-muqu--.UW^`hpu-v~z~../LgW^fk.ltpt"
 	
rJ   N)__name__
__module____qualname__
_VALID_URL_TESTS_NETRC_MACHINErL   rM   rq   ro   r;   r=   rI   r?   rX   r[   rw    rJ   rH   r   r      s    NJQ47Bf#%
 T
 F  U4A N
 #F+EF6  N",L-K cK\N,.;H(TLnp
&
rJ   r   )
urllib.parser@   commonr   utilsr   r   r   r	   r   r~   rJ   rH   <module>r      s#     ! O
 O
rJ   