a
    h5                     @   s   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 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)ExtractorErrorUnsupportedErrordetermine_extint_or_noneparse_resolutionstr_or_nonetraverse_objunified_timestampurl_basenameurl_or_noneurljoinc                   @   s8   e Zd ZdZdZddiZdd Zddd	ZdddZd
S )TrillerBaseIEZtrillerzhttps://social.triller.co/v1.5ZOriginzhttps://triller.coc                 C   s   | j drd S i | j ddi}t| j| j dd ddd|tjd|id	d
 dd}|rjtddd| j| j dd ddd|tj||dd	d
 dpi }|ds|ddkrtdddtdd|d  | j d< d S )NAuthorizationzContent-Typezapplication/jsonz/api/user/is-valid-usernamezChecking usernameFi  username),:)
separators)notefatalZexpected_statusheadersdatastatusz!Unable to login: Invalid usernameTexpectedz
/user/authz
Logging in)r   password
auth_tokenerrori  z#Unable to login: Incorrect passwordzUnable to loginBearer )	_API_HEADERSgetr   _download_json_API_BASE_URLjsondumpsencoder   )selfr   r   r   Z
user_checklogin r+   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/triller.py_perform_login   s8    
zTrillerBaseIE._perform_login   c              
   c   sn   | j | j d| d|dd| jd|idp,i }|ds<d S t|ddd	thfd
dddthfdfE d H  d S )N/api/videos/z/comments_v2FzDownloading comments API JSONlimit)r   r   r   querycomments.idbody)authorr   )r5   user_id	timestamp)r3   textr5   Z	author_idr7   )r$   r%   r"   r#   r   r   r   )r)   video_idr0   Zcomment_infor+   r+   r,   _get_comments6   s     

zTrillerBaseIE._get_commentsNc                    s   t |d }|p|d}t|d ddd hfddrB| jdd	d
 dd }g }t|ddkr~|| j|d |dddd t|ddd fD ]D}|i ||d t|d|dt	|ddd qt|ddt
d}	|	r|i ||	ddit|dd d!d"t	d t
|d#}
|
r>|||
 t|d$t	hf}||| pjt|d%d&thftd'| d(|d'| t tj||| ||d)t|d*d+d hfd*d%d, fd-dffd.fd/t
hfd0thfd1t	hfd2t	hfd3t	hfd4d5d6
ddS )7Nr3   Z
video_uuid)transcoded_url	video_url
stream_url	audio_urlc                 S   s   t d| S )Nz/copyright/)researchxr+   r+   r,   <lambda>K       z1TrillerBaseIE._parse_video_info.<locals>.<lambda>Fget_all9This video has been removed due to licensing restrictionsTr   c                 S   s   | t | t| dd dS )N.r   )urlextZ	format_id)r   r   split)rI   r+   r+   r,   format_infoN   s    z4TrillerBaseIE._parse_video_info.<locals>.format_infor;   Zm3u8mp4Zhls)Zm3u8_idr   Z	video_setc                 S   s   t |d S )NrI   )r   _vr+   r+   r,   rC   [   rD   rI   
resolutioncodecZbitratei  )vcodecZvbrr<   r=   )expected_typerS   Zh264widthheightfilesize)rU   rV   rW   r>   comment_countuserr6   zhttps://triller.co/@z/video/)r3   
display_iduploaderuploader_idZwebpage_urluploader_urlZextractor_keyZ	extractorformatsrX   Z__post_extractordescriptionc                 S   s   |  ddS )Nz
 )replacerA   r+   r+   r,   rC      rD   Zusersc                    s   t |d  kS )Nr6   )strrN   r6   r+   r,   rC      rD   nameZthumbnail_urlr7   durationZ
play_countZlikes_countZsong_artistZ
song_title)
titler_   creator	thumbnailr7   re   
view_count
like_countartisttrack)rb   r#   r   Zraise_no_formatsr   extendZ_extract_m3u8_formatsappendr
   r	   r   r   r   	TrillerIEZie_keyZIE_NAMEZextract_commentsr   )r)   
video_infor   r6   rZ   r9   rL   r^   videor<   r>   rX   r+   rc   r,   _parse_video_infoE   s    


zTrillerBaseIE._parse_video_info)r.   )N)	__name__
__module____qualname__Z_NETRC_MACHINEr%   r"   r-   r:   rr   r+   r+   r+   r,   r      s   
r   c                   @   s   e Zd ZdZddddddddd	d
dddeed
ddedddddddddddddddddeeddd ed!d"d#d$d%dd&d'dd(dd	d
d)d*d+eed,d,ded!d"gZd-d. Zd/S )0ro   z(?x)
            https?://(?:www\.)?triller\.co/
            @(?P<username>[\w.]+)/video/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})
        zKhttps://triller.co/@theestallion/video/2358fcd7-3df2-4c77-84c8-1d091610a6cfZ 228662d783923b60d78395fedddc0a20Z71595734rM   z$md5:9a2bf9435c5c4292678996a464669416.re:^https://uploads\.cdn\.triller\.co/.+\.jpg$theestallion18992236zMegan Thee StallioniηbZ20220815/   ZHer https://triller.co/@theestallion)r3   rJ   rf   rh   r_   r[   r\   rg   r7   upload_datere   ri   rj   rk   rl   r]   rX   rG   )rI   md5	info_dictskipzLhttps://triller.co/@charlidamelio/video/46c6fcfa-aa9e-4503-a50c-68444f44cddcZ 874055f462af5b0699b9dbb527a505a0Z71621339z$md5:4c91ea82760fe0fffb71b8c3aa7295fcz$46c6fcfa-aa9e-4503-a50c-68444f44cddccharlidamelio1875551zcharli damelioicbZ20220817   ZDixiezSomeone to Blame!https://triller.co/@charlidamelior3   rJ   rf   rZ   rh   r_   r[   r\   rg   r7   r{   re   ri   rj   rk   rl   r]   rX   rI   r|   r}   zKhttps://triller.co/@theestallion/video/07f35f38-1f51-48e2-8c5f-f7a8e829988fZ af7b3553e4b8bfca507636471ee2eb41Z71837829uV   UNGRATEFUL VIDEO OUT NOW 👏🏾👏🏾👏🏾 💙💙 link my bio  #womeninhiphopz$07f35f38-1f51-48e2-8c5f-f7a8e829988fuW   UNGRATEFUL VIDEO OUT NOW 👏🏾👏🏾👏🏾 💙💙 link my bio
 #womeninhiphopicZ20220906   Unknownc                 C   sL   |  |dd\}}| j| j d| || jdd d }| ||d |S )Nr   r3   r/   )r   videosr   )Z_match_valid_urlgroupr$   r%   r"   rr   )r)   rI   r   rZ   rp   r+   r+   r,   _real_extract   s    zTrillerIE._real_extractNrs   rt   ru   
_VALID_URLint_TESTSr   r+   r+   r+   r,   ro      s   Gro   c                   @   sR   e Zd ZdZdddddddd	d
dddddgZdd ZdddZdd ZdS )TrillerUserIEz:https?://(?:www\.)?triller\.co/@(?P<id>[\w.]+)/?(?:$|[#?])rz      rx   rw   rv   )r3   rf   rh   )rI   Zplaylist_mincountr}   r      r   r   c              	   C   s\   | j dsX| j| j dd dd| j dddd}|d	sDtd
d|d	  | j d< d S )Nr   z/user/create_guestzCreating guest sessionrD   ZWeb )platformZapp_version)r   r   r   r1   r   z7Unable to fetch required auth token for user extractionr!   )r"   r#   r$   r%   r   )r)   Zguestr+   r+   r,   _real_initialize   s    
zTrillerUserIE._real_initialize   c                 c   s   d|i}t dD ]h}| j| j d| d|d| | j|d}t|dD ]}| |||V  qJt|d|d	< |d	 s q|qd S )
Nr0   r   z/api/users/z/videosz!Downloading user video list page )r   r   r1   )r   .)r   r7   Zbefore_time)	itertoolscountr$   r%   r"   r   rr   )r)   r   r6   r0   r1   pager   rq   r+   r+   r,   _entries  s    
zTrillerUserIE._entriesc                 C   s   |  |}t| j| j d| |d| jddthfp8i }|dr`|ddvr`tdd	d
n t|dthfddrtdd	d
t	|d}|std| j
| |||||ddS )Nz/api/users/by_username/zDownloading user info)r   r   rY   privateZfollowed_by_me)TtruezThis user profile is privateTr   )Zblocked_by_userZblocking_userFrE   z"The author of the video is blockedr6   zUnable to extract user IDZ
avatar_url)rh   )	_match_idr   r$   r%   r"   dictr#   r   boolr   Zplaylist_resultr   )r)   rI   r   Z	user_infor6   r+   r+   r,   r     s&    
zTrillerUserIE._real_extractN)r   )rs   rt   ru   r   r   r   r   r   r+   r+   r+   r,   r      s&   	
r   c                   @   sL   e Zd ZdZddddddddd	d
ddddeedddeddgZdd ZdS )TrillerShortIEz#https?://v\.triller\.co/(?P<id>\w+)zhttps://v.triller.co/WWZNWkZ 5eb8dc2c971bd8cd794ec9e8d5e9d101Z66210052rM   z$md5:2dfc89d154cd91a4a18cd9582ba03e16z$f4480e1f-fb4e-45b9-a44c-9e6c679ce7ebrv   ZstatefairentZ	487545193u   Official Summer Fair of LAi"aZ20210822   r   z https://triller.co/@statefairentr   r   c                 C   s4   |  t|| |j}| |r*t|| |S )N)Z_request_webpager   r   rI   Zsuitabler   Z
url_result)r)   rI   Zreal_urlr+   r+   r,   r   E  s    
zTrillerShortIE._real_extractNr   r+   r+   r+   r,   r   *  s0   r   )r   r&   r?   commonr   Z
networkingr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   ro   r   r   r+   r+   r+   r,   <module>   s   4zVD