o
    i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 )TrillerBaseIEtrillerzhttps://social.triller.co/v1.5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}|r5tddd| j| j dd ddd|tj||dd	d
 dpPi }|dsg|ddkrct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fatal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   
user_checklogin r/   L/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/triller.py_perform_login   s:   
zTrillerBaseIE._perform_login   c              
   c   sp    | 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   )r9   user_id	timestamp)r7   textr9   	author_idr;   )r'   r(   r%   r&   r   r   r   )r,   video_idr4   comment_infor/   r/   r0   _get_comments6   s"   

zTrillerBaseIE._get_commentsNc                    s  t |d }|p|d}t|d ddd hfddr!| jdd	d
 dd }g }t|ddkr?|| j|d |dddd t|ddd fD ]"}|i ||d t|d|dt	|ddd qHt|ddt
d}	|	r|i ||	ddit|dd d!d"t	d t
|d#}
|
r|||
 t|d$t	hf}||| pt|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 )7Nr7   
video_uuid)transcoded_url	video_url
stream_url	audio_urlc                 S   s   t d| S )Nz/copyright/)researchxr/   r/   r0   <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ext	format_id)r   r   split)rP   r/   r/   r0   format_infoN   s   z4TrillerBaseIE._parse_video_info.<locals>.format_inforB   m3u8mp4hls)m3u8_idr   	video_setc                 S   s   t |d S )NrP   )r   _vr/   r/   r0   rJ   [   rK   rP   
resolutioncodecbitratei  )vcodecvbrrC   rD   )expected_typer`   h264widthheightfilesize)rd   re   rf   rE   comment_countuserr:   zhttps://triller.co/@z/video/)r7   
display_iduploaderuploader_idwebpage_urluploader_urlextractor_key	extractorformatsrg   __post_extractordescriptionc                 S   s   |  ddS )Nz
 )replacerH   r/   r/   r0   rJ      rK   usersc                    s   t |d  kS )Nr:   )strrZ   r:   r/   r0   rJ      s    namethumbnail_urlr;   duration
play_countlikes_countsong_artist
song_title)
titlerr   creator	thumbnailr;   rz   
view_count
like_countartisttrack)rv   r&   r   raise_no_formatsr   extend_extract_m3u8_formatsappendr
   r	   r   r   r   	TrillerIEie_keyIE_NAMEextract_commentsr   )r,   
video_infor   r:   ri   r>   rT   rp   videorC   rE   rg   r/   rw   r0   _parse_video_infoE   s   


zTrillerBaseIE._parse_video_info)r2   N)	__name__
__module____qualname___NETRC_MACHINEr(   r%   r1   r@   r   r/   r/   r/   r0   r      s    
r   c                   @   s~  e Zd ZdZddi dddddd	d
ddd	dddddddddddddededdddddd ed!d"d#d$i dd%dddd&d'd(d
ddd&dd)dd*dd+dd,dd-dd.dededd/dd0dd1d eid2d3d4i dd5dddd6d'd7d
ddd8dddddddd9dd:dd;dededd<dd<ddd eid2gZd=d> Zd?S )@r   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-1d091610a6cf 228662d783923b60d78395fedddc0a20r7   71595734rQ   rV   r   z$md5:9a2bf9435c5c4292678996a464669416r   .re:^https://uploads\.cdn\.triller\.co/.+\.jpg$rr   rj   theestallionrk   18992236r   zMegan Thee Stallionr;   iηbupload_date20220815rz   /   r   r   r   r   Herrm    https://triller.co/@theestallionrg   rN   )rP   md5	info_dictskipzLhttps://triller.co/@charlidamelio/video/46c6fcfa-aa9e-4503-a50c-68444f44cddc 874055f462af5b0699b9dbb527a505a071621339z$md5:4c91ea82760fe0fffb71b8c3aa7295fcri   z$46c6fcfa-aa9e-4503-a50c-68444f44cddccharlidamelio1875551zcharli damelioicb20220817   DixiezSomeone to Blame!https://triller.co/@charlidameliorP   r   r   zKhttps://triller.co/@theestallion/video/07f35f38-1f51-48e2-8c5f-f7a8e829988f af7b3553e4b8bfca507636471ee2eb4171837829uV   UNGRATEFUL VIDEO OUT NOW 👏🏾👏🏾👏🏾 💙💙 link my bio  #womeninhiphopz$07f35f38-1f51-48e2-8c5f-f7a8e829988fuW   UNGRATEFUL VIDEO OUT NOW 👏🏾👏🏾👏🏾 💙💙 link my bio
 #womeninhiphopic20220906   Unknownc                 C   sL   |  |dd\}}| j| j d| || jdd d }| ||d |S )Nr   r7   r3   )r   videosr   )_match_valid_urlgroupr'   r(   r%   r   )r,   rP   r   ri   r   r/   r/   r0   _real_extract   s   zTrillerIE._real_extractNr   r   r   
_VALID_URLint_TESTSr   r/   r/   r/   r0   r      s    	
	
	
Gr   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.]+)/?(?:$|[#?])r      r   r   r   )r7   r   r   )rP   playlist_mincountr   r      r   r   c              	   C   s`   | j ds.| j| j dd dd| j dddd}|d	s"td
d|d	  | j d< d S d S )Nr   z/user/create_guestzCreating guest session    Web )platformapp_version)r   r   r   r5   r"   z7Unable to fetch required auth token for user extractionr$   )r%   r&   r'   r(   r   )r,   guestr/   r/   r0   _real_initialize   s   
zTrillerUserIE._real_initialize   c                 c   s    d|i}t dD ]5}| j| j d| d|d| | j|d}t|dD ]
}| |||V  q&t|d|d	< |d	 s? d S q
d S )
Nr4   r   z/api/users/z/videosz!Downloading user video list page )r   r   r5   )r   .)r   r;   before_time)	itertoolscountr'   r(   r%   r   r   )r,   r   r:   r4   r5   pager   r   r/   r/   r0   _entries  s   
zTrillerUserIE._entriesc                 C   s   |  |}t| j| j d| |d| jddthfpi }|dr/|ddvr/tdd	d
t|dthfddr?tdd	d
t	|d}|sLtd| j
| |||||ddS )Nz/api/users/by_username/zDownloading user info)r   r   rh   privatefollowed_by_me)TtruezThis user profile is privateTr   )blocked_by_userblocking_userFrL   z"The author of the video is blockedr:   zUnable to extract user ID
avatar_url)r   )	_match_idr   r'   r(   r%   dictr&   r   boolr   playlist_resultr   )r,   rP   r   	user_infor:   r/   r/   r0   r     s&   
zTrillerUserIE._real_extractN)r   )r   r   r   r   r   r   r   r   r/   r/   r/   r0   r      s(    	
r   c                   @   s   e Zd ZdZddi dddddd	d
ddddd	dddddddddddddededdddd d!d"eid#gZd$d% Zd&S )'TrillerShortIEz#https?://v\.triller\.co/(?P<id>\w+)zhttps://v.triller.co/WWZNWk 5eb8dc2c971bd8cd794ec9e8d5e9d101r7   66210052rQ   rV   r   z$md5:2dfc89d154cd91a4a18cd9582ba03e16ri   z$f4480e1f-fb4e-45b9-a44c-9e6c679ce7ebr   r   rr   rj   statefairentrk   	487545193r   u   Official Summer Fair of LAr;   i"ar   20210822rz      r   r   r   r   r   rm   z https://triller.co/@statefairentrg   r   c                 C   s4   |  t|| |j}| |rt|| |S r   )_request_webpager   r   rP   suitabler   
url_result)r,   rP   real_urlr/   r/   r0   r   E  s   

zTrillerShortIE._real_extractNr   r/   r/   r/   r0   r   *  sV    	
r   )r   r)   rF   commonr   
networkingr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   <module>   s    4zVD