
    VGhA                         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	Z
ddlmZ ddl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 ddlmZ  G d d	e      Z G d
 de      Zy)    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                       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
ddddd dd!d"d#dd$d%d&d'dd(d)e
d*d+d,dd-d.d/dd0d1d2d3dd4d)e
d5d6d,dd7d8d9gZd: Zd; Zd< Zd= Zd> Zy?)@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   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   r/   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                 \    t        ddi      \  }} | j                  ||g||||dd|S )Nage_confirm )RefererContent-Type)dataheaders)r   _download_webpage)selfr'   video_idargskwargsr?   content_types          ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/cda.py_download_age_confirm_pagez CDAIE._download_age_confirm_pages   sU    -}b.ABl%t%%  , 
  	    c                 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 )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   Z   K   | ]#  }t        |d z  f      j                         d % yw)   z0>2N)byteshex).0bts     rG   	<genexpr>z'CDAIE._perform_login.<locals>.<genexpr>   s6      G b3h\*..056 Gs   )+=z/oauth/tokenz
Logging inrI   password)
grant_typeloginrZ   )r?   r@   queryaccess_token
expires_in)rP   rN   )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)	rB   usernamerZ   app_versionandroid_versionphone_modelcached_bearerpassword_hash	token_ress	            rG   _perform_loginz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/*rI   c                     | j                  |      }d| j                  v r| j                  |      S | j                  |      S )NrQ   )	_match_idrc   _api_extract_web_extract)rB   r'   rC   s      rG   _real_extractzCDAIE._real_extract   s@    >>#&d///$$X..$$X..rI   c                    | j                  | j                   d| || j                        d   }t        |ddt        hf      }|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@   videoauthorr\   	qualitiesfiler   namec                  &    t         d   d d       S )Nr   )int)qualitys   rG   <lambda>z$CDAIE._api_extract.<locals>.<lambda>   s    s76?3B+?'@ rI   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$   
view_count)	rv   rw   rc   r   strrg   r   r   r
   )rB   rC   metar/   r   r   s       ` rG   r   zCDAIE._api_extract   sr   ""!!"'(4hHYHY # [[bd  x3%&@A 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                  |j                  d      }d}g } j                  d|dd d      } j                  d|dd	d      } j                  |       j                  |      |t        |       j                  |      |d |rdndd	 j                  |i       }d  fd}	 |	|d       t	        j                   d|      D ]e  \  }
}|r j                  }n j"                  } |t%         j                  |
      d| dd	       }|s j'                  d!| d       ] |	||       g 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*(<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>
        r/   )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   r2   r   )	r   r   r    r/   r"   r!   r   r#   r$   c                    dD ]  }| j                  |d      }  t        j                  j                  |       } 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_IKSDEr<   !   ~   rL   ^   z.cda.mp4)z.2cda.plz.3cda.plz.cda.plz	/upstreamz.mp4/upstreamzhttps://.mp4)ru   urllibparseunquoter   appendchrro   )apbcfs        rG   decrypt_filez(CDAIE._web_extract.<locals>.decrypt_file  s    O %IIa$%$$Q'AA PqMB!NsNR1r6R-/0AOP 
A		*b)A- ,IIa+,aIIk?;!A~%>F**rI   c                    j                  d| | ddd      }|sy j                  || dd      }|sy |j                  d      }|rd	|vrj                  d
| d       y |j                  d      |j                  di       }t	        fd|j                         D              |j                  d	      r|d	   j                  d      rIt        j                  |d	   d      |d	<   |d	   j                  d      r;|d	   j                  dd      |d	<   n"|d	   j                  d      s |d	         |d	<   d   j                  |d	   t        d d       d       |j                         D ]6  \  }}|k(  rddd||j                  d      |j                  d      i gd}t        j                  |      j                         }j!                  d ddd |d!| d"d#| d"d$      }	t#        |	d%      d&k7  st#        |	d'd(t$        hf      s|	d'   d(   }
t'        |
      }|d)k(  r(d   j)                  j+                  |
d*d+             |d,k(  r*d   j)                  j-                  |
d-d.d/             d   j                  |
|t        |d d       d       9 d0   st/        |j                  d0            d0<   y y )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   4   K   | ]  \  }}|k(  s|  y w)N )rV   kvvideo_qualitys      rG   rX   z=CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>(  s     !X1Q-EW!!Xs   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 )r@   r?   r   errnoter   )resultstatusokr   respmpddash)mpd_idr   m3u8r   hls)m3u8_idr   r#   )_html_search_regex_parse_jsonrg   report_warningnextitems
startswithcodecsrt   endswithru   r   r   jsondumpsrq   rv   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)   rB   rC   s               @rG   extract_formatz*CDAIE._web_extract.<locals>.extract_format  sE   ..?)<(] / LH **WI\2% + AKOOG,EF%/##&8	AU$VW!IIi0M		+r2I !X	0A!XZghMyy =++F3$*MM%-$JE&MV}--i8(-f(=(=i(Pfv11&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$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	*% )rI   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   rH   r'   _search_regex_og_search_title_og_search_descriptionr
   _og_search_thumbnail_search_json_ldfindallrA   r   r   r   )rB   rC   webpageurlhneed_confirm_ager   r/   r"   infor   hrefr   handlerr   r)   s   ``           @@rG   r   zCDAIE._web_extract   s9   <955~~ghZv6B @7J%%&VW99F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@ 	w	* "

h! 	0D*  9900-xzl*>?uNG  ##&9*EY$Z[7J/#	0& 9d++rI   N)__name__
__module____qualname__
_VALID_URL_NETRC_MACHINEr   rw   rc   rx   rf   float_TESTSrH   r   r   r   r   r   rI   rG   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,rI   r   c                   V    e Zd ZdZdZddddddd	d
dddddddddddddgZd Zy)CDAFolderIE$   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/18493422Tr8   c                       j                  |      j                  dd      \   j                  |      } fd} j                  t	        | j
                         j                  |            S )Nr   channelc           	   3      K   j                  d d d| dz    d| dz    d      }t        j                  d|      }|D ]  }j                  d	| t        |         y w)
Nzhttps://www.cda.pl/z/folder/z/vfilm/r   zDownloading page i  )expected_statusz <a[^>]+href="/video/([0-9a-z]+)"r   )rA   r   r  
url_resultr   )r   r  r   rC   r  	folder_idrB   s       rG   extract_page_entriesz7CDAFolderIE._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   rA   playlist_resultr   _MAX_PAGE_SIZEr   )rB   r'   r  r   r  r  s   `   @@rG   r   zCDAFolderIE._real_extract  ss    !2237==dIN	7((i8	_ ##2D4G4GHt,,W57 	7rI   N)r	  r
  r  r#  r  r  r   r   rI   rG   r  r  p  sw    NUJ B & "$	
 I; "$	
 N , "%	
 \!
1F:7rI   r  )rk   r   ri   rh   rp   rm   r   r`   r   urllib.parser   commonr   compatr   utilsr   r   r	   r
   r   r   r   r   r   r   r   utils.traversalr   r   r  r   rI   rG   <module>r)     sZ           	  !     +P,M P,f
/7- /7rI   