
    V|hA                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r
SSKJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJr  SSKJr   " S S	\5      r " S
 S\5      rg)    N   )InfoExtractor   )
compat_ord)ExtractorErrorOnDemandPagedListdetermine_extfloat_or_noneint_or_nonemerge_dictsmultipart_encodeparse_durationtry_callurl_or_noneurljoin)traverse_objc                       \ rS rSrSrSrSrSrSS0rSr	S	r
S
SSSSSSS\SSSSS.S.SSSSSSSS\SSSS S!.S.S"S#S$SS%S&S'S(SS)S*\S+S,S-.S.S.S/S0SS1S2S3S4SS5S*\S6S7S-.S.S8S9S:./rS; rS< rS= rS> rS? rS@rgA)BCDAIE   zQhttps?://(?:(?: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   20160220iOV)r   r   r    r!   r"   uploaderr#   r$   r%   r&   r'   z"https://www.cda.pl/video/8753244c4 d8eeb83d63611289507010d3df3bb8b3	8753244c4zF[18+] Bez Filtra: Rezerwowe Psy czyli...  najwulgarniejsza polska gra?z$md5:ae80bac31bd6a9f077a6cce03c7c077ei8  zarhn eui     i(ca20211010)r   r   r    r!   r   r0   r"   r$   r%   r#   r'   r&   z#https://www.cda.pl/video/17028157b8 c1fe5ff4582bace95d4f0ce0fbd0f992
17028157b8u   STENDUPY MICHAŁ OGIŃSKIz$md5:5851f3272bfc31f762d616040a1d609ai  oginskiiI  i-tOe20231111zhttp://ebd.cda.pl/0x0/5749950cTr(   only_matchingc                 X    [        SS05      u  pVU R                  " X/UQ7UUUS.S.UD6$ )Nage_confirm )RefererContent-Type)dataheaders)r   _download_webpage)selfr(   video_idargskwargsr@   content_types          N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/cda.py_download_age_confirm_page CDAIE._download_age_confirm_pages   sO    -}b.AB%%  , 
  	    c                 z   Sn[         R                  " SS5      n[         R                  " S5      nSU SU SU S3U R                  S	'   U R                  R                  U R                  U5      =(       d    0 nUR                  S
S5      [        R                  R                  5       R                  5       S-   :  a  SUS    3U R                  S'   g [        R                  " [        R                  " SSR!                  S ["        R$                  " UR'                  5       5      R)                  5        5       5      R'                  5       ["        R*                  5      R)                  5       5      R-                  5       R/                  SS5      nU R1                  U R2                   S3S SS0 U R                  ESU R4                  0ESUUS.S9nU R                  R7                  U R                  UUS   US   [        R                  R                  5       R                  5       -   S.5        SUS    3U R                  S'   g )Nz1.2.255 build 21541      )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   s01m1Oer5IANoyBXQETzSOLWXgWs01m1Oer5bMg5xrTMMxRZ9Pi4fIPeFgIVRZ9PeXL8mPfXQETZGUAN5StRZ9Pr=   c              3   `   #    U  H$  n[        US -  45      R                  5       S v   M&     g7f)   z0>2N)byteshex).0bts     rH   	<genexpr>'CDAIE._perform_login.<locals>.<genexpr>   s4      GE b3h\*..056Es   ,.=z/oauth/tokenz
Logging inrK   password)
grant_typeloginr]   )r@   rA   queryaccess_token
expires_in)rR   rP   )random	randrangechoice_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)	rC   usernamer]   app_versionandroid_versionphone_modelcached_bearerpassword_hash	token_ress	            rH   _perform_loginCDAIE._perform_login|   s   + **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/*rK   c                     U R                  U5      nSU R                  ;   a  U R                  U5      $ U R                  U5      $ )NrS   )	_match_idrf   _api_extract_web_extract)rC   r(   rD   s      rH   _real_extractCDAIE._real_extract   s@    >>#&d///$$X..$$X..rK   c                 
  ^ U R                  U R                   SU 3XR                  S9S   n[        USS[        145      nUS    V^s/ s H`  mTR                  S5      (       d  M  TS   TR                  S5      TR                  S	5      [        U4S
 j5      TR                  S5      S.PMb     nnUR                  S5      (       a'  UR                  S5      (       d  U(       d
  [        SSS9eUUR                  S5      UR                  S5      US:X  a  S OU[        UR                  S5      5      UR                  S5      UUR                  S5      UR                  S5      (       a  SOSUR                  S5      S.
$ s  snf )N/video/)rA   videoauthorr_   	qualitiesfiler    namec                  &   > [        T S   S S 5      $ )Nr   )int)qualitys   rH   <lambda>$CDAIE._api_extract.<locals>.<lambda>   s    s76?3B+?'@rK   length)r(   format
resolutionr   filesizepremiumpremium_freez0Video requires CDA Premium - subscription neededT)expectedr!   anonimratingthumbr$   
for_adultsr3   r   views)
r   r    r!   r0   r#   r"   formatsr$   r%   
view_count)	ry   rz   rf   r   strrj   r   r   r
   )rC   rD   metar0   r   r   s       ` rH   r   CDAIE._api_extract   s   ""!!"'(4hHYHY # [[bd  x3%&@A k*C +ggkk&.A
6?kk'*!++f-@AH-
 + 	 C 88Itxx'?'? BTS S XXg&88M2 (H 4(+DHHX,>?'*,#xx551((7+
 	
Cs   
F (A	F c           
        ^ ^^^ T R                  SSS5        T R                  T R                   ST S3T5      u  p#SU;   a  T R                  S5        [        R
                  " SU5      (       a  T R                  5         S	nT R                  S
USS S9(       a  T R                  UR                  TSS9nSn/ nT R                  SUSS SS9nT R                  SUSS	SS9nTT R                  U5      T R                  U5      U[        U5      T R                  U5      US U(       a  SOSS.	mT R                  UT0 S9nS mUUU U4S jn	U	" US5        [        R                   " SU5       Hl  u  pU(       a  T R                  nOT R"                  nU" [%        T R                  U
5      TSU S3S	S 9nU(       d  T R'                  S!U S35        Md  U	" X+5        Mn     [)        TU5      $ )"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*(<button[^>]+name="[^"]*age_confirm[^"]*")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>
        r0   )r   group)zO<(?:span|meta)[^>]+itemprop=(["\'])ratingValue\1[^>]*>(?P<rating_value>[0-9.]+)zA<span[^>]+\bclass=["\']rating["\'][^>]*>(?P<rating_value>[0-9.]+)r   rating_valuefatalr   r3   r   )	r   r    r!   r0   r#   r"   r   r$   r%   c                    S H  nU R                  US5      n M     [        R                  R                  U 5      n / nU  HL  n[	        U5      nUR                  SUs=::  a  S::  a  O  O[        SUS-   S-  -   5      O
[        U5      5        MN     SR                  U5      n U R                  SS5      n S H  nU R                  US	5      n M     S
U ;   a  U R                  S
S5      n SU -   $ SU -   S-   $ )N)_XDDD_CDA_ADC_CXD_QWE_Q5_IKSDEr=   !   ~   rN   ^   z.cda.mp4)z.2cda.plz.3cda.plz.cda.plz	/upstreamz.mp4/upstreamzhttps://.mp4)rx   urllibparseunquoter   appendchrrr   )apbcfs        rH   decrypt_file(CDAIE._web_extract.<locals>.decrypt_file  s    OIIa$ P$$Q'AAqMB!NsNR1r6R-/0AO  
A		*b)A-IIa+ .aIIk?;!A~%>F**rK   c                   >^ TR                  SU U S3SSS9nU(       d  g TR                  X! S3SS9nU(       d  g UR                  S5      nU(       a  S	U;  a  TR                  S
U S35        g UR                  S5      mUR                  S0 5      n[	        U4S jUR                  5        5       T5      mUR                  S	5      (       a  US	   R                  S5      (       aO  [        R                  " US	   S5      US	'   US	   R                  S5      (       a  US	   R                  SS5      US	'   O'US	   R                  S5      (       d  T" US	   5      US	'   TS   R                  US	   T[        TS S 5      S.5        UR                  5        GH:  u  pgUT:X  a  M  SSSTXtR                  S5      UR                  S5      0 /S.n[        R                  " U5      R                  5       nTR!                  ST 3TSSS .US!U S"3S#U S"3SS$9n	[#        U	S%5      S&:w  d  [#        U	S'S([$        145      (       d  M  U	S'   S(   n
['        U
5      nUS):X  a&  TS   R)                  TR+                  U
TS*SS+95        M  US,:X  a(  TS   R)                  TR-                  U
TS-S.SS/95        GM  TS   R                  U
U[        US S 5      S.5        GM=     TS0   (       d  [/        UR                  S05      5      TS0'   g g )1Nz,player_data=(\\?["\'])(?P<player_data>.+?)\1z player_jsonFplayer_datar   z player_datar   r   r   zUnable to extract  version informationr   r   c              3   <   >#    U  H  u  pUT:X  d  M  Uv   M     g 7f)N )rX   kvvideo_qualitys      rH   rZ   =CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>(  s     !X0AQ-EW!!0As   	uggcrot_13zadc.mp4r   httpr   r   )r(   	format_idr   z2.0videoGetLinkr   tshash2)jsonrpcmethodr   paramshttps://www.cda.pl/video/zapplication/jsonXMLHttpRequest)r?   zX-Requested-Withz	Fetching z urlzFailed to fetch )rA   r@   r   errnoter   )resultstatusokr   respmpddash)mpd_idr   m3u8r   hls)m3u8_idr   r$   )_html_search_regex_parse_jsonrj   report_warningnextitems
startswithcodecsrw   endswithrx   r   r   jsondumpsrt   ry   r   r   r	   extend_extract_mpd_formats_extract_m3u8_formatsr   )pageversionjson_strr   r   r   r   cda_qualityr@   response	video_urlr   r   r   r*   rC   rD   s               @rH   extract_format*CDAIE._web_extract.<locals>.extract_format  sJ   ..?)<(] / LH **I\2% + AKOOG,EF%/##&8	AU$VW!IIi0M		+r2I !X	0A!XZghMyy  =++F33$*MM%-$JE&MV}--i88(-f(=(=i(Pfv11&99$0v$?E&M)$++ =!.)-*<=- 
 )2(9$m+#(N!#+[))D/599U\K]_a"bdzz$'..0../z:H(:,<O !7)4'@.wit<E / K !+?@DH'8Vk]2STT$X.v6	#I.%<i(//0I0I!8F% 1J 1I JF]i(//0J0J!8UE 1K 1P Q i(//(%,"-gcrl";1 5 ):@ Z((6uyy7L(M	*% )rK   r   zU<a[^>]+data-quality="[^"]+"[^>]+href="([^"]+)"[^>]+class="quality-btn"[^>]*>([0-9]+p)zDownloading r   r   zUnable to download )_set_cookie_download_webpage_handle	_BASE_URLraise_login_requiredresearchraise_geo_restrictedr   rI   r(   _search_regex_og_search_title_og_search_descriptionr
   _og_search_thumbnail_search_json_ldfindallrB   r   r   r   )rC   rD   webpageurlhneed_confirm_ager   r0   r#   infor   hrefr   handlerr   r*   s   ``           @@rH   r   CDAIE._web_extract   s7   <955~~ghZv6B @7J%%&VW99FPP%%' ""#P#*,Dd # T55()9 6 ;G#%% ' j$j	 & B
 ++ST[]emr  , " **7366w? +N;227;/Q

	 ##GXr#B	+">	N >	N@ 	w	* "

h!D  9900-xzl*>?uNG  ##&9*EY$Z[7/#!& 9d++rK   r   N)__name__
__module____qualname____firstlineno__
_VALID_URL_NETRC_MACHINEr  rz   rf   r{   ri   float_TESTSrI   r   r   r   r   __static_attributes__r   rK   rH   r   r      s6   eJN$I(M3L j M 21EA1#%#
" 218A1"#%#
$ 41]A!1##%
	( 510A!1##%
	& 0IGFR5Sn/
>S,rK   r   c                   ^    \ rS rSrSrSrSSSS.SS	.S
SSS.SS	.SSSS.SS	.SSS./rS rSrg)CDAFolderIEip  $   zAhttps?://(?:www\.)?cda\.pl/(?P<channel>[\w-]+)/folder/(?P<id>\d+)z,https://www.cda.pl/domino264/folder/3118838531188385zSERIA DRUGA)r   r       )r(   r*   playlist_mincountz3https://www.cda.pl/smiechawaTV/folder/2664592/vfilm2664592z VideoDowcipy - wszystkie odcinkiG   z8https://www.cda.pl/DeliciousBeauty/folder/19129979/vfilm19129979u   TESTY KOSMETYKÓW   zFhttps://www.cda.pl/FILMY-SERIALE-ANIME-KRESKOWKI-BAJKI/folder/18493422Tr9   c                    ^ ^^ T R                  U5      R                  SS5      u  mmT R                  UT5      nUUU 4S jnT R                  [	        UT R
                  5      TT R                  U5      5      $ )Nr   channelc           	   3      >#    TR                  ST ST SU S-    3TSU S-    3SS9n[        R                  " SU5      nU H  nTR                  S	U 3[        U5      v   M!     g 7f)
Nzhttps://www.cda.pl/z/folder/z/vfilm/r   zDownloading page i  )expected_statusz <a[^>]+href="/video/([0-9a-z]+)"r   )rB   r  r  
url_resultr   )r   r  r   rD   r(  	folder_idrC   s       rH   extract_page_entries7CDAFolderIE._real_extract.<locals>.extract_page_entries  s     ,,%gYhykPQ
SU^#D1H:. - EG JJBGLE!oo(A(&LeU]^^ "s   A"A%)_match_valid_urlr   rB   playlist_resultr   _MAX_PAGE_SIZEr  )rC   r(   r  r-  r(  r,  s   `   @@rH   r   CDAFolderIE._real_extract  ss    !2237==dIN	7((i8	_ ##2D4G4GHt,,W57 	7rK   r   N)	r  r  r  r  r1  r  r  r   r  r   rK   rH   r  r  p  sw    NUJ B & "$	
 I; "$	
 N , "%	
 \!
1F:7rK   r  )rn   r   rl   rk   rs   rp   r   rc   r  urllib.parser   commonr   compatr   utilsr   r   r	   r
   r   r   r   r   r   r   r   utils.traversalr   r   r  r   rK   rH   <module>r8     sZ           	  !     +P,M P,f
/7- /7rK   