
    yf86                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZ  G d de
      Zy)	    N   )InfoExtractor   )
compat_ordcompat_urllib_parse_unquote)ExtractorErrorfloat_or_noneint_or_nonemerge_dictsmultipart_encodeparse_durationrandom_birthdaytraverse_objtry_calltry_geturljoinc                       e Zd ZdZdZdZdZddiZdZdZ	d	d
dddddde
ddddddddddddddee
ddd
ddd dd!d"d#d$dd%d&ee
d'd(d)d*d+gZd, Zd- Zd. Zd/ Zd0 Zy1)2CDAIEzQhttps?://(?:(?:www\.)?cda\.pl/video|ebd\.cda\.pl/[0-9]+x[0-9]+)/(?P<id>[0-9a-z]+)cdaplzhttps://www.cda.plzhttps://api.cda.plAcceptzapplication/vnd.cda.public+jsonzBasic YzU3YzBlZDUtYTIzOC00MWQwLWI2NjQtNmZmMWMxY2Y2YzVlOklBTm95QlhRRVR6U09MV1hnV3MwMW0xT2VyNWJNZzV4clRNTXhpNGZJUGVGZ0lWUlo5UGVYTDhtUGZaR1U1U3Qz
cda-bearerz http://www.cda.pl/video/5749950c 6f844bf51b15f31fae165365707ae9705749950cmp4i  u.   Oto dlaczego przed zakrętem należy zwolnić.z$md5:269ccd135d550da90d1662651fcb9772zre:^https?://.*\.jpg$'   r   20160221iV)idextheighttitledescription	thumbnailaverage_ratingduration	age_limitupload_date	timestamp)urlmd5	info_dictz http://www.cda.pl/video/57413289 a88828770a8310fc00be6c95faf7f4d557413289u!   Lądowanie na lotnisku na Maderzez$md5:60d76b71186dcce4e0ba6d4bbdb13e1acrash404   )
r   r   r   r    r!   uploader
view_countr"   r#   r$   z!http://www.cda.pl/video/1273454c4	1273454c4zBronson (2008) napisy HD 1080pz$md5:1b6cb18508daf2dc4e0fa4db77fec24ci8  boniek61i     )r   r   r   r    r   r.   r!   r#   r$   r/   r"   )r'   r)   zhttp://ebd.cda.pl/0x0/5749950cT)r'   only_matchingc                     t        ddd      }|j                  |d|d       t        |      \  }} | j                  t	        |d      |g||||dd|S )	Nrokmiesiacdzienvideo)returnmodule	module_idz/a/validatebirth)RefererContent-Type)dataheaders)r   updater   _download_webpager   )selfr'   video_idargskwargs	form_datar>   content_types           6/usr/lib/python3/dist-packages/yt_dlp/extractor/cda.py_download_age_confirm_pagez CDAIE._download_age_confirm_page\   s{    #E9g>	C7RS-i8l%t%%C+,h9= , 
  	    c                    t        j                  d      }t        j                  dd      }t        j                  d      }d| d| d| d| j                  d	<   | j                  j                  | j                  |      xs i }|j                  d
d      t        j                  j                         j                         dz   kD  rd|d    | j                  d<   y t        j                  t        j                  ddj!                  d t#        j$                  |j'                               j)                         D              j'                         t"        j*                        j)                               j-                         j/                  dd      }| j1                  | j2                   dd ddi | j                  d| j4                  id||d      }| j                  j7                  | j                  ||d   |d   t        j                  j                         j                         z   d       d|d    | j                  d<   y )N)z1.2.88 build 15306z1.2.174 build 18469      )zASUS ZenFone 8zMotorola edge 20 5GzMotorola edge 30 neo 5GzMotorola moto g22zOnePlus Nord 2T 5Gu   Samsung Galaxy A32 SM‑A325FzSamsung Galaxy M13zSamsung Galaxy S20 FE 5Gz
Xiaomi 11TzXiaomi POCO M4 ProzXiaomi Redmi 10zXiaomi Redmi 10CzXiaomi Redmi 9C NFCzXiaomi Redmi Note 10 ProzXiaomi Redmi Note 11 ProzXiaomi Redmi Note 11zXiaomi Redmi Note 11S 5GzXiaomi Redmi Note 11Sz	realme 10zrealme 9 Pro+z	vivo Y33szpl.cda 1.0 (version z
; Android z; )z
User-Agentvalid_untilr      zBearer tokenAuthorizationsW   s01m1Oer5IANoyBXQETzSOLWXgWs01m1Oer5bMg5xrTMMxRZ9Pi4fIPeFgIVRZ9PeXL8mPfXQETZGUAN5StRZ9P c              3   Z   K   | ]#  }t        |d z  f      j                         d % yw)   z0>2N)byteshex).0bts     rH   	<genexpr>z'CDAIE._perform_login.<locals>.<genexpr>   s6      G b3h\*..056 Gs   )+=z/oauth/tokenz
Logging inrJ   password)
grant_typeloginr\   )r>   r?   queryaccess_token
expires_in)rQ   rO   )randomchoice	randrange_API_HEADERScacheload_BEARER_CACHEgetdtdatetimenowr&   base64urlsafe_b64encodehmacnewjoinhashlibr(   encodedigestsha256decodereplace_download_json_BASE_API_URL_LOGIN_REQUEST_AUTHstore)	rB   usernamer\   app_versionandroid_versionphone_modelcached_bearerpassword_hash	token_ress	            rH   _perform_loginzCDAIE._perform_loging   s   mm %
  !**1b1mm %
 2 -AZXgWhhjkvjwwx*y,'

(:(:HEK]A.1B1L1L1NQR1RR3:=;Q:R1SDo.00fGG G%kk(//*;<CCEG GGMvxNN	2 #FH	& '-fhwwsB/?	 	 ''!!",/|#Tt((T/4;S;ST(!) ( 	 	

++X~.$\2R[[__5F5P5P5RR8
 	 07y7P6Q-R/*rJ   c                     | j                  |      }d| j                  v r| j                  |      S | j                  ||      S )NrR   )	_match_idre   _api_extract_web_extract)rB   r'   rC   s      rH   _real_extractzCDAIE._real_extract   sB    >>#&d///$$X..$$Xs33rJ   c                    | j                  | j                   d| || j                        d   }t        |dd      }|d   D cg c]W  j	                  d      rDd   j	                  d      j	                  d	      t        fd
      j	                  d      dY }}|j	                  d      r |j	                  d      s|st        dd      ||j	                  d      |j	                  d      |dk(  rd n|t        |j	                  d            |j	                  d      ||j	                  d      |j	                  d      rdnd|j	                  d      d
S c c}w )N/video/)r?   r8   authorr^   	qualitiesfiler   namec                  &    t         d   d d       S )Nr   )int)qualitys   rH   <lambda>z$CDAIE._api_extract.<locals>.<lambda>   s    s76?3B+?'@ rJ   length)r'   format
resolutionr   filesizepremiumpremium_freez0Video requires CDA Premium - subscription neededT)expectedr    anonimratingthumbr#   
for_adultsr2   r   views)
r   r   r    r.   r"   r!   formatsr#   r$   r/   )rx   ry   re   r   ri   r   r   r	   )rB   rC   metar.   r   r   s       ` rH   r   zCDAIE._api_extract   sk   ""!!"'(4hHYHY # [[bd  h8 k*C gkk&.A 6?kk'*!++f-@AH-
 C C 88Itxx'? BTS S XXg&88M2 (H 4(+DHHX,>?'*,#xx51((7+
 	
Cs   AE c                      j                  ddd        j                   j                   d d      }d|v r j                  d       t	        j
                  d|      r j                          d	} j                  d
|dd       r j                  |d      }d}g } j                  d|dd d      } j                  d|dd       } j                  d|dd	d      } j                  |       j                  |      |t        |      t        |       j                  |      |d |rdndd
 j                  |i       }	d  fd}
 |
|d       t	        j                   d|      D ]c  \  }}|r j                  }n j                  } |t#         j                  |      d |z  d	!      }|s j%                  d"|z         [ |
||       e t'        |	      S )#Nzcda.plz
cda.playerhtml5r   z/vfilmu2   Ten film jest dostępny dla użytkowników premiumz.This video is only available for premium usersu.   niedostępn[ey] w(?:&nbsp;|\s+)Twoim kraju\s*<Fz/(<form[^>]+action="[^"]*/a/validatebirth[^"]*")zbirthday validate form)defaultzConfirming age)noteTz(?x)
            <(span|meta)[^>]+itemprop=(["\'])author\2[^>]*>
            (?:<\1[^>]*>[^<]*</\1>|(?!</\1>)(?:.|\n))*?
            <(span|meta)[^>]+itemprop=(["\'])name\4[^>]*>(?P<uploader>[^<]+)</\3>
        r.   )r   groupu   Odsłony:(?:\s|&nbsp;)*([0-9]+)r/   )zO<(?:span|meta)[^>]+itemprop=(["\'])ratingValue\1[^>]*>(?P<rating_value>[0-9.]+)zA<span[^>]+\bclass=["\']rating["\'][^>]*>(?P<rating_value>[0-9.]+)r   rating_valuefatalr   r2   r   )
r   r   r    r.   r/   r"   r!   r   r#   r$   c                    dD ]  }| j                  |d      }  t        |       } g }| D ]I  }t        |      }|j                  d|cxk  rdk  rn nt	        d|dz   dz  z         n
t	        |             K dj                  |      } | j                  dd      } dD ]  }| j                  |d	      }  d
| v r| j                  d
d      } d| z   S d| z   dz   S )N)_XDDD_CDA_ADC_CXD_QWE_Q5_IKSDErS   !   ~   rM   ^   z.cda.mp4)z.2cda.plz.3cda.plz.cda.plz	/upstreamz.mp4/upstreamzhttps://.mp4)rw   r   r   appendchrrq   )apbcfs        rH   decrypt_filez(CDAIE._web_extract.<locals>.decrypt_file   s    O %IIa$%+A.AA PqMB!NsNR1r6R-/0AOP 
A		*b)A- ,IIa+,aIIk?;!A~%>F**rJ   c                   
 j                  d| d|z  dd      }|sy j                  |d|z  d      }|sy |j                  d      }|rd	|vrj                  d
|z         y |d	   j	                  d      rIt        j                  |d	   d      |d	<   |d	   j                  d      r;|d	   j                  dd      |d	<   n"|d	   j	                  d      s |d	         |d	<   |j                  d      
|j                  di       }t        
fd|j                         D        
      
d   j                  |d	   
t        
d d       d       |j                         D ]  \  }}|
k(  rddd||j                  d      |j                  d      i gd}t        j                  |      j                  d      }j!                  d ddd |d!| d"d#| d"d$      }	t#        |	d%       d&k(  st#        |	d'       }	d   j                  |	|t        |d d       d        d(   st%        |j                  d(            d(<   y y ))Nz,player_data=(\\?["\'])(?P<player_data>.+?)\1z%s player_jsonFplayer_datar   z%s player_datar   r8   r   z(Unable to extract %s version informationuggcrot_13zadc.mp4r   httpr   r   c              3   4   K   | ]  \  }}|k(  s|  y w)N )rX   kvvideo_qualitys      rH   rZ   z=CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>   s     !X1Q-EW!!Xs   r   r   )r'   	format_idr   z2.0videoGetLinkr   tshash2)jsonrpcmethodr   paramszutf-8zhttps://www.cda.pl/video/zapplication/jsonXMLHttpRequest)r=   zX-Requested-Withz	Fetching z urlzFailed to fetch )r?   r>   r   errnoter   c                     | d   d   S )Nresultstatusr   xs    rH   r   z<CDAIE._web_extract.<locals>.extract_format.<locals>.<lambda>2  s    (H0E rJ   okc                     | d   d   S )Nr   respr   r   s    rH   r   z<CDAIE._web_extract.<locals>.extract_format.<locals>.<lambda>3  s    Qx[=P rJ   r#   )_html_search_regex_parse_jsonri   report_warning
startswithcodecsrv   endswithrw   nextitemsr   r
   jsondumpsrs   rx   r   r   )pageversionjson_strr   r8   r   r   cda_qualityr>   	video_urlr   r   r)   rB   rC   s             @rH   extract_formatz*CDAIE._web_extract.<locals>.extract_format
  s   ..? 7*%} / NH ***W4E + CKOOG,EF%/##$NQX$XYV}''/ &eFmX Ff=)))4$)&M$9$9)V$LE&M6]--f5 ,U6] ;f!IIi0M		+r2I !X	0A!XZghMi ''V}*%mCR&89) 
 )2(9 $m+#(N!#+[%))D/599U\K]_a"bdzz$'..w7 ///z:H(:,<O !7)4'@.wit<E 0 K	 9&EF$N '	3P QIi(//(%,"-gcrl";1 ( Z((6uyy7L(M	*% )rJ   r   zU<a[^>]+data-quality="[^"]+"[^>]+href="([^"]+)"[^>]+class="quality-btn"[^>]*>([0-9]+p)z"Downloading %s version informationr   z)Unable to download %s version information)_set_cookierA   	_BASE_URLraise_login_requiredresearchraise_geo_restrictedr   rI   _search_regex_og_search_title_og_search_descriptionr
   r	   _og_search_thumbnail_search_json_ldfindallr   r   r   )rB   rC   r'   webpageneed_confirm_ager   r.   r/   r"   infor   hrefr   handlerr   r)   s   ``            @@rH   r   zCDAIE._web_extract   sQ   <9((~~ghZv6B @7J%%&VW99FP%%' ""#U#*,Dd # T55X$4 6 6G#%% ' j$j	 & B
 ''.$ ( (
 ++ST[]emr  , " **7366w? %j1+N;227;/Q
	 ##GXr#B	+"1	Nf 	w	* "

h! 	0D*  9900-x4zAPG  ##$OR\$\]7J/#	0& 9d++rJ   N)__name__
__module____qualname__
_VALID_URL_NETRC_MACHINEr   ry   re   rz   rh   floatr   _TESTSrI   r   r   r   r   r   rJ   rH   r   r      s    eJN$I(M3L j M 21EA1#%#
" 218A1"#
" 35A"1#
" 0_2Fh	8St4
>J,rJ   r   )rm   r   rk   rj   rr   ro   r   rb   r   commonr   compatr   r   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   rJ   rH   <module>r     sE           	 ! <   w,M w,rJ   