U
    g>                     @   s   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 G dd deZG d	d
 d
eZdS )    N   )InfoExtractor   )
compat_ord)ExtractorErrorOnDemandPagedListfloat_or_noneint_or_nonemerge_dictsmultipart_encodeparse_durationtraverse_objtry_calltry_geturljoinc                   @   s   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:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDS )ECDAIEzQhttps?://(?:(?:www\.)?cda\.pl/video|ebd\.cda\.pl/[0-9]+x[0-9]+)/(?P<id>[0-9a-z]+)Zcdaplzhttps://www.cda.plzhttps://api.cda.plAcceptzapplication/vnd.cda.public+jsonzBasic YzU3YzBlZDUtYTIzOC00MWQwLWI2NjQtNmZmMWMxY2Y2YzVlOklBTm95QlhRRVR6U09MV1hnV3MwMW0xT2VyNWJNZzV4clRNTXhpNGZJUGVGZ0lWUlo5UGVYTDhtUGZaR1U1U3Qz
cda-bearerz http://www.cda.pl/video/5749950cZ 6f844bf51b15f31fae165365707ae970Z5749950cZmp4i  u.   Oto dlaczego przed zakrętem należy zwolnić.z$md5:269ccd135d550da90d1662651fcb9772zre:^https?://.*\.jpg$'   r   Z20160221iV)idextheighttitledescription	thumbnailaverage_ratingduration	age_limitupload_date	timestamp)urlmd5	info_dictz http://www.cda.pl/video/57413289Z a88828770a8310fc00be6c95faf7f4d5Z57413289u!   Lądowanie na lotnisku na Maderzez$md5:60d76b71186dcce4e0ba6d4bbdb13e1aZcrash404   Z20160220iOV)r   r   r   r   r   uploaderr   r   r   r   r   z"https://www.cda.pl/video/8753244c4Z d8eeb83d63611289507010d3df3bb8b3Z	8753244c4zF[18+] Bez Filtra: Rezerwowe Psy czyli...  najwulgarniejsza polska gra?z$md5:ae80bac31bd6a9f077a6cce03c7c077ei8  zarhn eui     i(caZ20211010)r   r   r   r   r   r#   r   r   r   r   r   r   z#https://www.cda.pl/video/17028157b8Z c1fe5ff4582bace95d4f0ce0fbd0f992Z
17028157b8u   STENDUPY MICHAŁ OGIŃSKIz$md5:5851f3272bfc31f762d616040a1d609ai  ZoginskiiI  i-tOeZ20231111zhttp://ebd.cda.pl/0x0/5749950cT)r   Zonly_matchingc                 O   s4   t ddi\}}| j||f||||dd|S )NZage_confirm )ZRefererContent-Type)dataheaders)r   _download_webpage)selfr   video_idargskwargsr'   content_type r/   8/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/cda.py_download_age_confirm_pager   s     z CDAIE._download_age_confirm_pagec           	      C   sH  t d}t dd}t d}d| d| d| d| jd	< | j| j|pPi }|d
dtj	
  d krd|d  | jd< d S ttdddd t|  D  tj  dd}| j| j dd dd| jd| jid||dd}| j| j||d |d tj	
   d d|d  | jd< d S )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   s01m1Oer5IANoyBXQETzSOLWXgWs01m1Oer5bMg5xrTMMxRZ9Pi4fIPeFgIVRZ9PeXL8mPfXQETZGUAN5StRZ9Pr%   c                 s   s$   | ]}t |d @ f dV  qdS )   z0>2N)byteshex).0Zbtr/   r/   r0   	<genexpr>   s   z'CDAIE._perform_login.<locals>.<genexpr>=z/oauth/tokenz
Logging in    password)Z
grant_typeloginr@   )r'   r(   queryZaccess_tokenZ
expires_in)r7   r5   )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)	r*   usernamer@   Zapp_versionZandroid_versionZphone_modelZcached_bearerZpassword_hashZ	token_resr/   r/   r0   _perform_login{   sD    



 
   zCDAIE._perform_loginc                 C   s,   |  |}d| jkr| |S | |S d S )Nr8   )Z	_match_idrF   _api_extract_web_extract)r*   r   r+   r/   r/   r0   _real_extract   s    


zCDAIE._real_extractc                 C   s   | j | j d| || jdd }t|dd}dd |d D }|d	rd|d
sd|sdtddd||d|d|dkrd n|t|d|d||d|drdnd|dd
S )N/video/)r(   videoauthorrA   c              	      sH   g | ]@   d r d    d  dt fdd  ddqS )filer   namec                      s   t  d d d S )Nrf   )intr/   qualityr/   r0   <lambda>   r?   z/CDAIE._api_extract.<locals>.<listcomp>.<lambda>length)r   format
resolutionr   filesize)rJ   r   )r<   r/   ri   r0   
<listcomp>   s    
z&CDAIE._api_extract.<locals>.<listcomp>	qualitiesZpremiumZpremium_freez0Video requires CDA Premium - subscription neededT)expectedr   r   ZanonimratingZthumbr   Z
for_adultsr$   r   Zviews)
r   r   r   r#   r   r   formatsr   r   Z
view_count)rY   rZ   rF   r   rJ   r   r   )r*   r+   metar#   rt   r/   r/   r0   r_      s6       zCDAIE._api_extractc              
      s   ddd j d d\}}d|kr>d td|rR  d	}jd
|dd dr~j|j	dd}d}g }j
d|dd dd}j
d|dd	dd}|||t|||d |rdndd	j|i d}dd   fdd}	|	|d td|D ]d\}
}|r6j}nj}|tj|
d | d!d	d"}|sxd#| d! q |	|| q t|S )$Nzcda.plz
cda.playerhtml5rb   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#   )rw   group)zO<(?:span|meta)[^>]+itemprop=(["\'])ratingValue\1[^>]*>(?P<rating_value>[0-9.]+)zA<span[^>]+\bclass=["\']rating["\'][^>]*>(?P<rating_value>[0-9.]+)rs   Zrating_valuefatalry   r$   r   )	r   r   r   r#   r   r   rt   r   r   c                 S   s   dD ]}|  |d} qtj| } g }| D ]F}t|}|d|  krNdkrfn ntd|d d  nt| q*d|} |  dd} dD ]}|  |d	} qd
| kr|  d
d} d|  S d|  d S )N)Z_XDDDZ_CDAZ_ADCZ_CXDZ_QWEZ_Q5Z_IKSDEr%   !   ~   r3   ^   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fr/   r/   r0   decrypt_file	  s    <
z(CDAIE._web_extract.<locals>.decrypt_filec           
   
      s  j d| | dddd}|s"d S j|| ddd}|s@d S |d}|rVd	|krld
| d d S |d	 drt|d	 d|d	< |d	 dr|d	 dd|d	< n|d	 dsЈ|d	 |d	< |d |di }t	 fdd|
 D   d |d	  t d d d |
 D ]\}}| krFq0ddd||d|di gd}t| }jd dd d!|d"| d#d$| d#dd%}	t|	d&d' d(kr0t|	d)d' }	d |	|t|d d d q0d* st|d*d*< d S )+Nz,player_data=(\\?["\'])(?P<player_data>.+?)\1z player_jsonFplayer_datarz   z player_datar{   rc   re   zUnable to extract  version informationZuggcrot_13zadc.mp4r   httprj   rq   c                 3   s   | ]\}}| kr|V  qd S )Nr/   )r<   kvZvideo_qualityr/   r0   r=   0  s      z=CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>rt   rg   )r   Z	format_idr   z2.0ZvideoGetLinkr   tsZhash2)Zjsonrpcmethodr   paramshttps://www.cda.pl/video/zapplication/jsonZXMLHttpRequest)r&   zX-Requested-Withz	Fetching z urlzFailed to fetch )r(   r'   rx   Zerrnoter{   c                 S   s   | d d S )Nresultstatusr/   xr/   r/   r0   rk   B  r?   z<CDAIE._web_extract.<locals>.extract_format.<locals>.<lambda>okc                 S   s   | d d S )Nr   respr/   r   r/   r/   r0   rk   C  r?   r   )_html_search_regexZ_parse_jsonrJ   report_warning
startswithcodecsrW   endswithrX   nextitemsr   r	   jsondumpsrT   rY   r   r   )
pageversionZjson_strr   rc   rq   rj   Zcda_qualityr'   Z	video_urlr   r!   r*   r+   r   r0   extract_format  sz         


  

 
z*CDAIE._web_extract.<locals>.extract_formatrw   zU<a[^>]+data-quality="[^"]+"[^>]+href="([^"]+)"[^>]+class="quality-btn"[^>]*>([0-9]+p)zDownloading r   r   zUnable to download )Z_set_cookieZ_download_webpage_handle	_BASE_URLZraise_login_requiredresearchZraise_geo_restrictedr   r1   r   Z_search_regex_og_search_titleZ_og_search_descriptionr   Z_og_search_thumbnailZ_search_json_ldfindallr)   r   r   r
   )r*   r+   webpageZurlhZneed_confirm_agert   r#   r   infor   hrefrn   handlerr/   r   r0   r`      s     
         
3

 
 zCDAIE._web_extractN)__name__
__module____qualname__
_VALID_URLZ_NETRC_MACHINEr   rZ   rF   r[   rI   float_TESTSr1   r^   ra   r_   r`   r/   r/   r/   r0   r      s    I	:r   c                   @   sP   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gZdd ZdS )CDAFolderIE$   z>https?://(?:www\.)?cda\.pl/(?P<channel>\w+)/folder/(?P<id>\d+)z,https://www.cda.pl/domino264/folder/31188385Z31188385zSERIA DRUGA)r   r      )r   r!   Zplaylist_mincountz3https://www.cda.pl/smiechawaTV/folder/2664592/vfilmZ2664592z VideoDowcipy - wszystkie odcinkiG   z8https://www.cda.pl/DeliciousBeauty/folder/19129979/vfilmZ19129979u   TESTY KOSMETYKÓW   c                    sN    |dd\ |} fdd}t|j|S )Nr   channelc                 3   sb   j d  d d| d  d| d  dd}td|}|D ]}d	| t|V  qBd S )
Nzhttps://www.cda.pl/z/folder/z/vfilm/r   zDownloading page i  )Zexpected_statusz <a[^>]+href="/video/([0-9a-z]+)"r   )r)   r   r   Z
url_resultr   )r   r   r   r+   r   Z	folder_idr*   r/   r0   extract_page_entries  s      z7CDAFolderIE._real_extract.<locals>.extract_page_entries)Z_match_valid_urlry   r)   Zplaylist_resultr   _MAX_PAGE_SIZEr   )r*   r   r   r   r/   r   r0   ra     s    
 zCDAFolderIE._real_extractN)r   r   r   r   r   r   ra   r/   r/   r/   r0   r   e  s,   		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   r   r   r/   r/   r/   r0   <module>   s   4  K