a
    h#)                     @   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/Zsession_tokenvalueAuthorizationzBearer )r   Z_get_cookiesurllibparseunquote)selftoken r   J/mnt/pikpak/tmp/myenv/lib/python3.9/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headersZimpersonate)Z_download_jsonr   )r   pathZ
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                       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_idlive_statusconcurrent_view_countrelease_timestamp	age_limitZrelease_dateskip_download
livestreamurl	info_dictparamszhttps://kick.com/xqcT)r:   Zonly_matchingc                    s$   t |st|rdS t |S )NF)	KickVODIEsuitable
KickClipIEsuper)clsr:   	__class__r   r   r>   ?   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/r8   )expected_type)video_idTZplayback_urlr$   )live)r/   r%   formatsslugsession_titleuserbio)r'   )r8   r0   )name)rJ   username)user_id)rJ   r'   
created_at
start_timer,   r:   Zrecent_categories.rL   Zviewer_count	is_maturec                 S   s   | rdS dS Nr&   r   r   xr   r   r   <lambda>Y       z&KickIE._real_extract.<locals>.<lambda>)r'   r)   r*   r0   r1   r2   r+   r5   r,   r-   r4   r6   )	_match_idr   r   dictr   _extract_m3u8_formatsstrintr
   anyr   r   r   bool)r   r:   r/   responser   r   r   _real_extractC   s.    








zKickIE._real_extract)r   r   r    IE_NAME
_VALID_URLrZ   r[   list_TESTSclassmethodr>   r_   __classcell__r   r   rB   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 )&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/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.ZxQcZ676ZxqcZ668r&   g    @zre:^https?://.*\.jpgZDeadlockihZ20250825)r'   r(   r)   r*   r1   r2   r/   r0   
view_countr6   durationr,   r-   r+   r.   r7   m3u8r9   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:080bc713eac0321a7b376a1b53816d1bZA_Log_BurnerZ65114691za-log-burnerZ63967687zOther, Watch Partyr%   )r'   r(   r)   r*   r1   r2   r/   r0   rf   r6   r,   r-   r+   r.   r3   rF   )r:   r;   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'   rG   r8   )rI   rH   r/   rJ   rK   rH   r'   rM   rN   rO   rg   i  )Zscaler,   r-   .rL   viewsrQ   c                 S   s   | rdS dS rR   r   rS   r   r   r   rU      rV   z)KickVODIE._real_extract.<locals>.<lambda>r%   )r)   r*   r/   r0   r1   r2   r+   rg   r,   r-   rf   r6   r%   )rW   r   rY   r   rZ   r\   r[   r
   r	   r   r   r   r]   )r   r:   rE   r^   r   r   r   r_      s*    


zKickVODIE._real_extractN)	r   r   r    r`   ra   r[   rZ   rc   r_   r   r   r   r   r=   ^   sT   ,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,   rg   r+   r.   rf   
like_countr-   r6   r7   rh   r9   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.pngzJust Chattingr   )r'   r)   r(   r/   r0   r1   r2   rg   r.   r+   r,   rf   rn   r-   r6   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   rg   r.   r+   r,   rf   rn   r-   r6   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_urlrh   r$   r:   rk   r)   r/   rH   r'   ZcreatorrM   Zthumbnail_urlrg   categoryrL   rO   rl   ZlikesrQ   c                 S   s   | rdS dS rR   r   rS   r   r   r   rU      rV   z*KickClipIE._real_extract.<locals>.<lambda>)r)   r/   r0   r1   r2   r,   rg   r-   r+   rf   rn   r6   )rW   r   r   rY   r   rZ   r[   r
   r   r   allr	   r   r]   )r   r:   Zclip_idro   rp   rG   r   r   r   r_      s0    



zKickClipIE._real_extractN)r   r   r    r`   ra   r[   rc   r_   r   r   r   r   r?      sz   >r?   )r!   urllib.parser   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r#   r=   r?   r   r   r   r   <module>   s   ,>H