o
    i#)                     @   s   d dl Z d dl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 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   )	UserNotLivedetermine_extfloat_or_noneint_or_noneparse_iso8601str_or_nonetraverse_objunified_timestampurl_or_nonec                   @   s(   e Zd Zejdd Zdi fddZdS )
KickBaseIEc                 C   s2   t | dddtjjhf}|rdd| iS i S )Nzhttps://kick.com/session_tokenvalueAuthorizationzBearer )r   _get_cookiesurllibparseunquote)selftoken r   I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/kick.py_api_headers   s
   zKickBaseIE._api_headerszDownloading API JSONc                 K   s,   | j d| |f|i | j|dd|S )Nzhttps://kick.com/api/T)noteheadersimpersonate)_download_jsonr   )r   path
display_idr   r   kwargsr   r   r   	_call_api   s   
zKickBaseIE._call_apiN)__name__
__module____qualname__	functoolscached_propertyr   r"   r   r   r   r   r      s    
r   c                       s   e Zd ZdZdZdi ddddded	ed
edddededddddddddddededdde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/buddhaidz92722911-nopixel-40extmp4titledescription	timestamp	thumbnailzre:https?://.+\.jpg
categoriesupload_datechannelbuddha
channel_id32807uploaderBuddhauploader_id33057live_statusis_liveconcurrent_view_countrelease_timestamp	age_limit   release_dateskip_download
livestreamurl	info_dictparamszhttps://kick.com/xqcT)rD   only_matchingc                    s$   t |s
t|rdS t |S )NF)	KickVODIEsuitable
KickClipIEsuper)clsrD   	__class__r   r   rI   ?   s   $zKickIE.suitablec                 C   s   |  |}| d| |}t|dtdst|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/rB   )expected_type)video_idTplayback_urlr+   )live)r2   r;   formatsslugsession_titleuserbio)r)   )rB   r4   )name)rV   username)user_id)rV   r)   
created_at
start_timer/   rD   recent_categories.rX   viewer_count	is_maturec                 S      | rdS dS Nr?   r   r   xr   r   r   <lambda>Y       z&KickIE._real_extract.<locals>.<lambda>)r)   r,   r-   r4   r6   r8   r.   r=   r/   r0   r<   r>   )	_match_idr"   r   dictr   _extract_m3u8_formatsstrintr
   anyr   r   r   bool)r   rD   r2   responser   r   r   _real_extractC   s.   








zKickIE._real_extract)r#   r$   r%   IE_NAME
_VALID_URLri   rj   list_TESTSclassmethodrI   rn   __classcell__r   r   rM   r   r(       s`    	
r(   c                   @   s|   e Zd ZdZdZddddddd	d
deddddgdddddiddddddddddedddgeedd d!d"gZd#d$ Zd%S )&rH   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/5c697a87-afce-4256-b01f-3c8fe71ef5cbz$5c697a87-afce-4256-b01f-3c8fe71ef5cbr+   u   🐗LIVE🐗CLICK🐗HERE🐗DRAMA🐗ALL DAY🐗NEWS🐗VIDEOS🐗CLIPS🐗GAMES🐗STUFF🐗WOW🐗IM HERE🐗LETS GO🐗COOL🐗VERY NICE🐗zETHE BEST AT ABSOLUTELY EVERYTHING. THE JUICER. LEADER OF THE JUICERS.xQc676xqc668r?   g    @zre:^https?://.*\.jpgDeadlockih20250825)r)   r*   r,   r-   r6   r8   r2   r4   
view_countr>   durationr/   r0   r.   r1   rA   m3u8rC   zIhttps://kick.com/a-log-burner/videos/5230df84-ea38-46e1-be4f-f5949ae55641z$5230df84-ea38-46e1-be4f-f5949ae55641u;   re:😴 Cozy Fireplace ASMR 🔥 | Relax, Focus, Sleep 💤z$md5:080bc713eac0321a7b376a1b53816d1bA_Log_Burner65114691za-log-burner63967687zOther, Watch Partyr;   )r)   r*   r,   r-   r6   r8   r2   r4   r{   r>   r/   r0   r.   r1   r:   rR   )rD   rE   skipc                 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	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dthfdS )Nz	v1/video/sourcer+   r)   rS   rB   )rU   rT   r2   rV   rW   rT   r)   rY   rZ   r[   r|   i  )scaler/   r0   .rX   viewsr_   c                 S   r`   ra   r   rb   r   r   r   rd      re   z)KickVODIE._real_extract.<locals>.<lambda>r;   )r,   r-   r2   r4   r6   r8   r.   r|   r/   r0   r{   r>   r;   )rf   r"   rh   r   ri   rk   rj   r
   r	   r   r   r   rl   )r   rD   rP   rm   r   r   r   rn      s*   


zKickVODIE._real_extractN)	r#   r$   r%   ro   rp   rj   ri   rr   rn   r   r   r   r   rH   ^   sV    ,rH   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 )3rJ   z
kick:clipszVhttps?://(?:www\.)?kick\.com/[\w-]+(?:/clips/|/?\?(?:[^#]+&)?clip=)(?P<id>clip_[\w-]+)z;https://kick.com/mxddy?clip=clip_01GYXVB5Y8PWAPWCWMSBCFB05Xclip_01GYXVB5Y8PWAPWCWMSBCFB05Xr+   zMaddy detains Abd D:mxddy133789
AbdCreates3309077zre:^https?://.*\.jpeg#   i-Hd20230426VALORANTr?   )r)   r*   r,   r2   r4   r6   r8   r/   r|   r.   r1   r{   
like_countr0   r>   rA   r}   rC   z=https://kick.com/destiny?clip=clip_01H9SKET879NE7N9RJRRDS98J3clip_01H9SKET879NE7N9RJRRDS98J3zW jewsdestiny1772249punished_furry2027722g     H@20230908i$dzMhttps://clips.kick.com/clips/j3/clip_01H9SKET879NE7N9RJRRDS98J3/thumbnail.pngzJust Chattingr   )r)   r,   r*   r2   r4   r6   r8   r|   r1   r.   r/   r{   r   r0   r>   z=https://kick.com/spreen/clips/clip_01J8RGZRKHXHXXKJEHGRM932A5clip_01J8RGZRKHXHXXKJEHGRM932A5KLJASLDJKLJKASDLJKDASspreen5312671AnormalBarraBaja26518262g     E@20240927i3fzNhttps://clips.kick.com/clips/f2/clip_01J8RGZRKHXHXXKJEHGRM932A5/thumbnail.webp	Minecraft)r)   r*   r,   r2   r4   r6   r8   r|   r1   r.   r/   r{   r   r0   r>   c                 C   s   |  |}| d| d|d }|d }t|dkr#| ||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_urlr}   r+   rD   r   r,   r2   rT   r)   creatorrY   thumbnail_urlr|   categoryrX   r[   r   likesr_   c                 S   r`   ra   r   rb   r   r   r   rd      re   z*KickClipIE._real_extract.<locals>.<lambda>)r,   r2   r4   r6   r8   r/   r|   r0   r.   r{   r   r>   )rf   r"   r   rh   r   ri   rj   r
   r   r   allr	   r   rl   )r   rD   clip_idr   r   rS   r   r   r   rn      s0   



zKickClipIE._real_extractN)r#   r$   r%   ro   rp   rj   rr   rn   r   r   r   r   rJ      s|    >rJ   )r&   urllib.parser   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r(   rH   rJ   r   r   r   r   <module>   s    ,>H