U
    g&                     @   s   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 G dd deZG d	d
 d
eZG dd deZG dd deZdS )    N   )InfoExtractor   )HEADRequest)
UserNotLivedetermine_extfloat_or_noneint_or_nonemerge_dictsparse_iso8601str_or_nonetraverse_objunified_timestampurl_or_nonec                   @   s"   e Zd Zdd Zdi fddZdS )
KickBaseIEc                 C   sX   | j tdd dddd | dd}|s6| d |rNd|j |jd	ni t_d S )
Nzhttps://kick.com/zSetting up sessionFT)fatalimpersonatez
XSRF-TOKENz&kick.com did not set XSRF-TOKEN cookiezBearer )AuthorizationzX-XSRF-TOKEN)Z_request_webpager   Z_get_cookiesgetZwrite_debugvaluer   _API_HEADERS)selfZ
xsrf_token r   9/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/kick.py_real_initialize   s"        

zKickBaseIE._real_initializezDownloading API JSONc                 K   s*   | j d| |f|t|| jdd|S )Nzhttps://kick.com/api/T)noteheadersr   )Z_download_jsonr
   r   )r   pathZ
display_idr   r   kwargsr   r   r   	_call_api   s     
 zKickBaseIE._call_apiN)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c                       sn   e Zd ZdZdZdddeeedeeddd	d
deededddiddddgZe	 fddZ
dd Z  ZS )KickIEz	kick:livezZhttps?://(?:www\.)?kick\.com/(?!(?:video|categories|search|auth)(?:[/?#]|$))(?P<id>[\w-]+)zhttps://kick.com/buddhaz92722911-nopixel-40mp4zre:https?://.+\.jpgZbuddhaZ32807ZBuddhaZ33057is_live   )idexttitledescription	timestamp	thumbnail
categoriesupload_datechannel
channel_iduploaderuploader_idZlive_statusconcurrent_view_countrelease_timestamp	age_limitZrelease_dateskip_download
livestreamurl	info_dictparamszhttps://kick.com/xqcT)r9   Zonly_matchingc                    s$   t |st|rdS t |S )NF)	KickVODIEsuitable
KickClipIEsuper)clsr9   	__class__r   r   r=   D   s    zKickIE.suitablec                 C   s   |  |}| d| |}t|dtds4t|d|d| j|d |dddd	t|dd
thfddthfddthfdththt	fdtht	fdththt	fddt
hfddt
hfdddthfdddthfddthfddthdd hfdS )Nzv2/channels/r7   )Zexpected_type)video_idTZplayback_urlr$   )Zlive)r/   r%   formatsslugsession_titleuserbio)r'   )r7   r0   )name)rG   username)user_id)rG   r'   
created_at
start_timer,   r9   Zrecent_categories.rI   Zviewer_count	is_maturec                 S   s   | rdS dS Nr&   r   r   xr   r   r   <lambda>^       z&KickIE._real_extract.<locals>.<lambda>)r'   r)   r*   r0   r1   r2   r+   r4   r,   r-   r3   r5   )	_match_idr   r   dictr   _extract_m3u8_formatsstrintr   anyr   r   r	   bool)r   r9   r/   responser   r   r   _real_extractH   s.    








zKickIE._real_extract)r    r!   r"   IE_NAME
_VALID_URLrW   rX   list_TESTSclassmethodr=   r\   __classcell__r   r   rA   r   r#   %   s<   r#   c                   @   sR   e Zd ZdZdZddddddd	d
ddddddedgddddidgZdd ZdS )r<   zkick:vodz[https?://(?:www\.)?kick\.com/[\w-]+/videos/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})z@https://kick.com/xqc/videos/8dd97a8d-e17f-48fb-8bc3-565f88dbc9eaZ 3870f94153e40e7121a6e46c068b70cbz$8dd97a8d-e17f-48fb-8bc3-565f88dbc9ear$   uj   18+ #ad 🛑LIVE🛑CLICK🛑DRAMA🛑NEWS🛑STUFF🛑REACT🛑GET IN HHERE🛑BOP BOP🛑WEEEE WOOOO🛑zETHE BEST AT ABSOLUTELY EVERYTHING. THE JUICER. LEADER OF THE JUICERS.ZxqcZ668ZxQcZ676Z20240909iofg    @zre:^https?://.*\.jpgJust Chattingr   )r'   r(   r)   r*   r/   r0   r1   r2   r.   r+   durationr,   
view_countr-   r5   r6   m3u8)r9   md5r:   r;   c                 C   s   |  |}| d| |}|| |d |ddt|ddthtfdddd	thfddd
thfdddththfddddthfdddththfdthfddt	j
tddhfddthfddddthfdthfddthdd hfdS )Nz	v1/video/sourcer$   r'   rD   r7   )rF   rE   r/   rG   rH   rE   r'   rJ   rK   rL   rd   i  )Zscaler,   r-   .rI   viewsrN   c                 S   s   | rdS dS rO   r   rP   r   r   r   rR      rS   z)KickVODIE._real_extract.<locals>.<lambda>)r)   r*   r/   r0   r1   r2   r+   rd   r,   r-   re   r5   )rT   r   rV   r   rW   rY   rX   r   r   	functoolspartialr   r   r	   rZ   )r   r9   rC   r[   r   r   r   r\   }   s(    

zKickVODIE._real_extractNr    r!   r"   r]   r^   rX   r`   r\   r   r   r   r   r<   c   s.   r<   c                   @   s   e Zd ZdZdZddddddd	d
ddddeedgddddidddddddddddddeed gd!d"ddidd#d$dd%d&d'd(d)d*d+d,d-eed.gd!d/ddidgZd0d1 Zd2S )3r>   z
kick:clipszVhttps?://(?:www\.)?kick\.com/[\w-]+(?:/clips/|/?\?(?:[^#]+&)?clip=)(?P<id>clip_[\w-]+)z;https://kick.com/mxddy?clip=clip_01GYXVB5Y8PWAPWCWMSBCFB05XZclip_01GYXVB5Y8PWAPWCWMSBCFB05Xr$   zMaddy detains Abd D:ZmxddyZ133789Z
AbdCreatesZ3309077zre:^https?://.*\.jpeg#   i-HdZ20230426ZVALORANTr&   )r'   r(   r)   r/   r0   r1   r2   r,   rd   r+   r.   re   
like_countr-   r5   r6   rf   r8   z=https://kick.com/destiny?clip=clip_01H9SKET879NE7N9RJRRDS98J3Zclip_01H9SKET879NE7N9RJRRDS98J3zW jewsZdestinyZ1772249Zpunished_furryZ2027722g     H@Z20230908i$dzMhttps://clips.kick.com/clips/j3/clip_01H9SKET879NE7N9RJRRDS98J3/thumbnail.pngrc   r   )r'   r)   r(   r/   r0   r1   r2   rd   r.   r+   r,   re   ro   r-   r5   z=https://kick.com/spreen/clips/clip_01J8RGZRKHXHXXKJEHGRM932A5Zclip_01J8RGZRKHXHXXKJEHGRM932A5ZKLJASLDJKLJKASDLJKDASZspreenZ5312671ZAnormalBarraBajaZ26518262g     E@Z20240927i3fzNhttps://clips.kick.com/clips/f2/clip_01J8RGZRKHXHXXKJEHGRM932A5/thumbnail.webpZ	Minecraft)r'   r(   r)   r/   r0   r1   r2   rd   r.   r+   r,   re   ro   r-   r5   c                 C   s   |  |}| d| d|d }|d }t|dkrF| ||d}n
d|ig}||dt|d	thfd
dthfd
dththfddthfddththfdthfdt	hfddtht
fdthfdthfdthfdthdd hfdS )Nz	v2/clips/z/playclipclip_urlrf   r$   r9   ri   r)   r/   rE   r'   ZcreatorrJ   Zthumbnail_urlrd   categoryrI   rL   rj   ZlikesrN   c                 S   s   | rdS dS rO   r   rP   r   r   r   rR      rS   z*KickClipIE._real_extract.<locals>.<lambda>)r)   r/   r0   r1   r2   r,   rd   r-   r+   re   ro   r5   )rT   r   r   rV   r   rW   rX   r   r   r   allr   r	   rZ   )r   r9   Zclip_idrp   rq   rD   r   r   r   r\      s0    



zKickClipIE._real_extractNrm   r   r   r   r   r>      sz   >r>   )rk   commonr   Z
networkingr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r#   r<   r>   r   r   r   r   <module>   s   0>2