a
    hA                     @   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 ddlmZ G dd	 d	eZG d
d deZdS )    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                   @   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5749950c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   s6   t ddi\}}| j||g|R |||dd|S )NZage_confirm )ZRefererContent-Type)dataheaders)r   _download_webpage)selfr!   video_idargskwargsr*   content_type r2   I/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/cda.py_download_age_confirm_pages   s    z CDAIE._download_age_confirm_pagec           	      C   sF  d}t dd}t d}d| d| d| d| jd	< | j| j|pJi }|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i | jd| jid||dd}| j| j||d |d tj	
   d d|d  | jd< d S )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                 s   s$   | ]}t |d @ f dV  qdS )   z0>2N)byteshex).0Zbtr2   r2   r3   	<genexpr>   s   z'CDAIE._perform_login.<locals>.<genexpr>=z/oauth/tokenz
Logging in    password)Z
grant_typeloginrC   )r*   r+   queryZaccess_tokenZ
expires_in)r:   r8   )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)	r-   usernamerC   Zapp_versionZandroid_versionZphone_modelZcached_bearerZpassword_hashZ	token_resr2   r2   r3   _perform_login|   s<    


zCDAIE._perform_loginc                 C   s,   |  |}d| jv r| |S | |S d S )Nr;   )Z	_match_idrI   _api_extract_web_extract)r-   r!   r.   r2   r2   r3   _real_extract   s    


zCDAIE._real_extractc                 C   s   | j | j d| || jdd }t|ddthf}dd |d D }|d	rj|d
sj|sjtddd||d|d|dkrd n|t|d|d||d|drdnd|dd
S )N/video/)r+   videoauthorrD   c              	      sH   g | ]@   d r d    d  dt fdd  ddqS )filer   namec                      s   t  d d d S )Nri   )intr2   qualityr2   r3   <lambda>   rB   z/CDAIE._api_extract.<locals>.<listcomp>.<lambda>length)r!   format
resolutionr   filesize)rM   r   )r?   r2   rl   r3   
<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)r\   r]   rI   r   strrM   r   r	   )r-   r.   metar%   rw   r2   r2   r3   rb      s0    zCDAIE._api_extractc              
      s   ddd j d d\}}d|v 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html5re   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.]+)rv   Zrating_valuefatalr}   r&   r   )	r   r   r   r%   r   r   rw   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
| v r|  d
d} d|  S d|  d S )N)Z_XDDDZ_CDAZ_ADCZ_CXDZ_QWEZ_Q5Z_IKSDEr(   !   ~   r6   ^   z.cda.mp4)z.2cda.plz.3cda.plz.cda.plz	/upstreamz.mp4/upstreamzhttps://.mp4)r[   urllibparseunquoter   appendchrrU   )apbcfr2   r2   r3   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	|vrld
| d d S |d |di }t fdd| D   |d	r6|d	 drt|d	 d|d	< |d	 	dr|d	 
dd|d	< n |d	 ds|d	 |d	< d |d	  t d d d | D ].\}}| krVq>ddd||d|di gd}t| }jd dd d!|d"| d#d$| d#dd%}	t|	d&d'ks>t|	d(d)thfsq>|	d( d) }
t|
}|d*kr d j|
d+dd, nL|d-krJd j|
d.d/dd0 n"d |
|t|d d d q>d1 st|d1d1< d S )2Nz,player_data=(\\?["\'])(?P<player_data>.+?)\1z player_jsonFplayer_datar~   z player_datar   rf   rh   zUnable to extract  version informationrm   rt   c                 3   s   | ]\}}| kr|V  qd S )Nr2   )r?   kvZvideo_qualityr2   r3   r@   (  rB   z=CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>Zuggcrot_13zadc.mp4r   httprw   rj   )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*   r|   Zerrnoter   )resultstatusokr   respZmpdZdash)Zmpd_idr   Zm3u8r   Zhls)Zm3u8_idr   r   )_html_search_regexZ_parse_jsonrM   report_warningnextitems
startswithcodecsrZ   endswithr[   r   r
   jsondumpsrW   r\   r   r   r   extendZ_extract_mpd_formatsZ_extract_m3u8_formatsr   )pageversionZjson_strr   rf   rt   rm   Zcda_qualityr*   responseZ	video_urlr   r   r#   r-   r.   r   r3   extract_format  s    









z*CDAIE._web_extract.<locals>.extract_formatr{   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   r4   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_agerw   r%   r   infor   hrefrq   handlerr2   r   r3   rc      sn    

@
zCDAIE._web_extractN)__name__
__module____qualname__
_VALID_URLZ_NETRC_MACHINEr   r]   rI   r^   rL   float_TESTSr4   ra   rd   rb   rc   r2   r2   r2   r3   r      s   I	7r   c                   @   sX   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d ZdS )CDAFolderIE$   zAhttps?://(?: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   zFhttps://www.cda.pl/FILMY-SERIALE-ANIME-KRESKOWKI-BAJKI/folder/18493422Tr'   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-   r2   r3   extract_page_entries  s    z7CDAFolderIE._real_extract.<locals>.extract_page_entries)Z_match_valid_urlr}   r,   Zplaylist_resultr   _MAX_PAGE_SIZEr   )r-   r!   r   r   r2   r   r3   rd     s    

zCDAFolderIE._real_extractN)r   r   r   r   r   r   rd   r2   r2   r2   r3   r   p  s2   		r   )rQ   r   rO   rN   rV   rS   r   rF   r   urllib.parser   commonr   compatr   utilsr   r   r   r	   r
   r   r   r   r   r   r   Zutils.traversalr   r   r   r2   r2   r2   r3   <module>   s    4  U