o
    i3B                     @   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d:d8d9gZd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdES )FCDAIEzWhttps?://(?:(?:(?:www|m)\.)?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_matchingz https://m.cda.pl/video/617297677c                 O   s6   t ddi\}}| j||g|R |||dd|S )Nage_confirm )RefererContent-Type)dataheaders)r   _download_webpage)selfr%   video_idargskwargsr<   content_type rD   H/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/cda.py_download_age_confirm_pagev   s   z CDAIE._download_age_confirm_pagec           	      C   sF  d}t dd}t d}d| d| d| d| jd	< | j| j|p%i }|d
dtj	
  d krAd|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   s01m1Oer5IANoyBXQETzSOLWXgWs01m1Oer5bMg5xrTMMxRZ9Pi4fIPeFgIVRZ9PeXL8mPfXQETZGUAN5StRZ9Pr9   c                 s   s&    | ]}t |d @ f dV  qdS )   z0>2N)byteshex).0btrD   rD   rE   	<genexpr>   s    z'CDAIE._perform_login.<locals>.<genexpr>=z/oauth/tokenz
Logging in    password)
grant_typeloginrV   )r<   r=   queryaccess_token
expires_in)rL   rJ   )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?   usernamerV   app_versionandroid_versionphone_modelcached_bearerpassword_hash	token_resrD   rD   rE   _perform_login   sB   

zCDAIE._perform_loginc                 C   s(   |  |}d| jv r| |S | |S )NrM   )	_match_idr_   _api_extract_web_extract)r?   r%   r@   rD   rD   rE   _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	r5|d
s5|s5tddd||d|d|dkrDd n|t|d|d||d|dr[dnd|dd
S )N/video/)r=   videoauthorrX   c              	      sH   g | ]    d r d    d  dt fdd  ddqS )filer   namec                      s   t  d d d S )Nr   )intrD   qualityrD   rE   <lambda>   s    z/CDAIE._api_extract.<locals>.<listcomp>.<lambda>length)r%   format
resolutionr   filesize)rc   r   )rQ   rD   r   rE   
<listcomp>   s    

z&CDAIE._api_extract.<locals>.<listcomp>	qualitiespremiumpremium_freez0Video requires CDA Premium - subscription neededT)expectedr   r   anonimratingthumbr!   
for_adultsr0   r   views)
r   r   r   r-   r    r   formatsr!   r"   
view_count)rr   rs   r_   r   strrc   r   r	   )r?   r@   metar-   r   rD   rD   rE   r      s0   zCDAIE._api_extractc              
      s   ddd j d d\}}d|v rd td|r)  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 |rldndd	j|i d}dd   fdd}	|	|d td|D ].\}
}|rj}nj}|tj|
d | d!d	d"}|sd#| d! q|	|| qt|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   r0   r   )	r   r   r   r-   r    r   r   r!   r"   c                 S   s   dD ]}|  |d} qtj| } g }| D ]#}t|}|d|  kr'dkr3n n
td|d d  nt| qd|} |  dd} dD ]}|  |d	} qFd
| v r]|  d
d} d|  S d|  d S )N)_XDDD_CDA_ADC_CXD_QWE_Q5_IKSDEr9   !   ~   rH   ^   z.cda.mp4)z.2cda.plz.3cda.plz.cda.plz	/upstreamz.mp4/upstreamzhttps://.mp4)rq   urllibparseunquoter   appendchrrk   )apbcfrD   rD   rE   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}|r+d	|vr6d
| d d S |d |di }t fdd| D   |d	r|d	 drwt|d	 d|d	< |d	 	drv|d	 
dd|d	< n|d	 ds|d	 |d	< d |d	  t d d d | D ]\}}| krqddd||d|di gd}t| }jd dd d!|d"| d#d$| d#dd%}	t|	d&d'kst|	d(d)thfsq|	d( d) }
t|
}|d*krd j|
d+dd, q|d-krd j|
d.d/dd0 qd |
|t|d d d qd1 s?t|d1d1< d S d S )2Nz,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   s     | ]\}}| kr|V  qd S )NrD   )rQ   kvvideo_qualityrD   rE   rS   +  s    z=CDAIE._web_extract.<locals>.extract_format.<locals>.<genexpr>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_jsonrc   report_warningnextitems
startswithcodecsrp   endswithrq   r   r
   jsondumpsrm   rr   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?   r@   r   rE   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 )_set_cookie_download_webpage_handle	_BASE_URLraise_login_requiredresearchraise_geo_restrictedr   rF   r%   _search_regex_og_search_title_og_search_descriptionr	   _og_search_thumbnail_search_json_ldfindallr>   r   r   r   )r?   r@   webpageurlhneed_confirm_ager   r-   r    infor   hrefr   handlerrD   r   rE   r      sn   


@
zCDAIE._web_extractN)__name__
__module____qualname__
_VALID_URL_NETRC_MACHINEr   rs   r_   rt   rb   float_TESTSrF   r}   r   r   r   rD   rD   rD   rE   r      s    L	7r   c                   @   s`   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dddgZdd ZdS )CDAFolderIE$   zGhttps?://(?:(?:www|m)\.)?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/18493422Tr6   z1https://m.cda.pl/smiechawaTV/folder/2664592/vfilmc                    sN    |dd\ |} fdd}t|j|S )Nr   channelc                 3   sd    j d  d d| d  d| d  dd}td|}|D ]}d	| t|V  q"d S )
Nzhttps://www.cda.pl/z/folder/z/vfilm/r   zDownloading page i  )expected_statusz <a[^>]+href="/video/([0-9a-z]+)"r   )r>   r   r   
url_resultr   )r   r   r   r@   r  	folder_idr?   rD   rE   extract_page_entries  s   z7CDAFolderIE._real_extract.<locals>.extract_page_entries)_match_valid_urlr   r>   playlist_resultr   _MAX_PAGE_SIZEr   )r?   r%   r   r  rD   r  rE   r     s   

zCDAFolderIE._real_extractN)r  r  r  r  r  r  r   rD   rD   rD   rE   r  s  s:    r  )rg   r   re   rd   rl   ri   r   r\   r   urllib.parser   commonr   compatr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r  rD   rD   rD   rE   <module>   s"    4  X