
    VGh5                         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e      Z G d	 d
e      Z G d de      Z G d de      Zy)    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                   2    e Zd ZdZdZddiZd Zd	dZd
dZy)TrillerBaseIEtrillerzhttps://social.triller.co/v1.5Originzhttps://triller.coc                 h   | j                   j                  d      ry i | j                   ddi}t        | j                  | j                   dd ddd|t        j                  d|id	
      j                               d      }|rt        dd      | j                  | j                   dd ddd|t        j                  ||dd	
      j                               xs i }|j                  d      s,|j                  d      dk(  rt        dd      t        d      d|d    | j                   d<   y )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logins         a/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/triller.py_perform_loginzTrillerBaseIE._perform_login   s]     1KT&&K8JK!$"5"5!!""=>K^gZ2zJQQS #6 #U W_`

  !DtTT##!!"*-t,etzz$$C %8& '-fh $ 0 6
 46 	 yy&yy!T)$%JUYZZ !233/6u\7J6K-L/*    c              #      K   | j                  | j                   d| d|dd| j                  d|i      xs i }|j                  d      sy t	        |ddd	t
        hfd
dddt        hfdf      E d {    y 7 w)N/api/videos/z/comments_v2FzDownloading comments API JSONlimit)r   r   r   querycomments.idbody)authorr   )r<   user_id	timestamp)r:   textr<   	author_idr>   )r*   r+   r(   r)   r   r   r   )r/   video_idr7   comment_infos       r2   _get_commentszTrillerBaseIE._get_comments6   s     **!!",xjEE(G%%gu-= + ? E CE 	 
+z3+',.%(9':;A
 /  	 	s   A0A:2A83A:Nc                    t        |d         }|xs |j                  d      }t        |d dd hfd      r| j                  dd	       d
 }g }t	        |j                  d            dk(  r(|j                  | j                  |d   |ddd             t        |dd f      D ]e  }|j                  i  ||d         t        |j                  d            |j                  d      t        |j                  d      d      d       g t        |ddt              }	|	r3|j                  i  ||	      ddit        |dddd t                     t        |j                  d!            }
|
r|j                   ||
             t        |d"t        hf      }|||xs t        |d#d$t        hf      t        d%| d&|      d%| t        j                         t        j                  ||| j!                  ||      d't        |d(d) hfd(d#d*fd+ffd,fd-t        hfd.t"        hfd/t        hfd0t        hfd1t        hfd2d3d4
d      S )5Nr:   
video_uuid)transcoded_url	video_url
stream_url	audio_urlc                 .    t        j                  d|       S )Nz/copyright/)researchxs    r2   <lambda>z1TrillerBaseIE._parse_video_info.<locals>.<lambda>K   s    299^Q7 r4   Fget_all9This video has been removed due to licensing restrictionsTr"   c                 V    | t        |       t        |       j                  d      d   dS )N.r   )urlext	format_id)r	   r   split)rU   s    r2   format_infoz4TrillerBaseIE._parse_video_info.<locals>.format_infoN   s/    $S))#.44S9!< r4   rF   m3u8mp4hls)m3u8_idr   	video_setc                     t        |d         S )NrU   )r   )_vs     r2   rO   z1TrillerBaseIE._parse_video_info.<locals>.<lambda>[   s    UVW\U]I^ r4   rU   
resolutioncodecbitratei  )vcodecvbrrG   rH   )expected_typere   h264widthheightfilesize)ri   rj   rk   rI   comment_countuserr=   zhttps://triller.co/@z/video/)r:   
display_iduploaderuploader_idwebpage_urluploader_urlextractor_key	extractorformatsrl   __post_extractordescriptionc                 &    | j                  dd      S )Nz
 )replacerM   s    r2   rO   z1TrillerBaseIE._parse_video_info.<locals>.<lambda>   s    AIIfc4J r4   usersc                 &    t        |d         k(  S )Nr=   )str)r`   ra   r=   s     r2   rO   z1TrillerBaseIE._parse_video_info.<locals>.<lambda>   s    c!I,>OSZ>Z r4   namethumbnail_urlr>   duration
play_countlikes_countsong_artist
song_title)
titlerw   creator	thumbnailr>   r   
view_count
like_countartisttrack)r}   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=   rn   rA   rY   ru   videorG   rI   rl   s      `        r2   _parse_video_infozTrillerBaseIE._parse_video_infoE   s   z$'(?:>>,#?

P78%:CHJ !!"]hl!m	 (89:fDNN455+,huTY 6 [ \ "*{<^._` 	ENN eEl+"599\#:;  ))G,"599Y#7>	 	 ![,Vab	NN i(& z$& *, "-	.   
{ ;<	NN;y12$Z/K=1QR $ "bl:	T_S`?a&b"%9(7#KZX28*=&--/"*** $ 5 5h N
 :'*J)KL,$1Z'[\^de-}=),=+>?'+7+k];,{m<'%( 
 	
r4   )   N)	__name__
__module____qualname___NETRC_MACHINEr+   r(   r3   rC   r    r4   r2   r   r      s(    N4M23LM6H
r4   r   c                   |   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= Zy>)?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 228662d783923b60d78395fedddc0a20r:   71595734rV   r[   r   z$md5:9a2bf9435c5c4292678996a464669416r   .re:^https://uploads\.cdn\.triller\.co/.+\.jpg$rw   ro   theestallionrp   18992236r   zMegan Thee Stallionr>   iηbupload_date20220815r   /   r   r   r   r   Herrr    https://triller.co/@theestallionrl   rR   )rU   md5	info_dictskipzLhttps://triller.co/@charlidamelio/video/46c6fcfa-aa9e-4503-a50c-68444f44cddc 874055f462af5b0699b9dbb527a505a071621339z$md5:4c91ea82760fe0fffb71b8c3aa7295fcrn   z$46c6fcfa-aa9e-4503-a50c-68444f44cddccharlidamelio1875551zcharli damelioicb20220817   DixiezSomeone to Blame!https://triller.co/@charlidameliorU   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                     | j                  |      j                  dd      \  }}| j                  | j                   d| || j                        d   d   }| j                  ||d |      S )Nr   r:   r6   )r   videosr   )_match_valid_urlgroupr*   r+   r(   r   )r/   rU   r   rn   r   s        r2   _real_extractzTrillerIE._real_extract   s    #44S9??
DQ*((!!",zl;Z%% ) ''/1124
 %%j(D*MMr4   Nr   r   r   
_VALID_URLint_TESTSr   r   r4   r2   r   r      s   J
 ]1
*
5
 ;
 J	

 A
 
 :
 ,
 
 :
 
 #
 #
 +
 U
  >!
" S#
& L-0 ^1
*
5
 ;
 @	

 J
 A
 
 9
 '
 
 :
 
 #
 #
 g
  '!
" ?#
$ S%
0 ]1
*
5
 m
 @	

 J
 v
 
 :
 ,
 
 :
 
 #
 #
 i
  Y!
" >#
$ S%
]EFNNr4   r   c                   L    e Zd ZdZdddddddd	d
dddddgZd ZddZd Zy)TrillerUserIEz:https?://(?:www\.)?triller\.co/@(?P<id>[\w.]+)/?(?:$|[#?])r      r   r   r   )r:   r   r   )rU   playlist_mincountr   r      r   r   c           
          | j                   j                  d      sc| j                  | j                   dd dd| j                   ddd      }|j                  d	      st	        d
      d|d	    | j                   d<   y y )Nr   z/user/create_guestzCreating guest sessionr4   Web )platformapp_version)r   r    r   r8   r%   z7Unable to fetch required auth token for user extractionr'   )r(   r)   r*   r+   r   )r/   guests     r2   _real_initializezTrillerUserIE._real_initialize   s      $$_5''%%&&894-CARAR %#%[ ( E 99\*$%^__3:5;N:O1PDo. 6r4   c              #   &  K   d|i}t        j                  d      D ]q  }| j                  | j                   d| d|d| | j                  |      }t        |d      D ]  }| j                  |||        t        |d      |d	<   |d	   rq y  y w)
Nr7   r   z/api/users/z/videosz!Downloading user video list page )r   r   r8   )r   .)r   r>   before_time)	itertoolscountr*   r+   r(   r   r   )r/   r   r=   r7   r8   pager   r   s           r2   _entrieszTrillerUserIE._entries  s     % OOA& 	D((%%&k''B!B4&I)) ) 8F
 &fo> G,,UHgFFG $08S#TE- '	s   B
BBc                    | j                  |      }t        | j                  | j                   d| |d| j                        dt
        hf      xs i }|j                  d      r |j                  d      dvrt        dd	
      t        |dt        hfd      rt        dd	
      t        |j                  d            }|st        d      | j                  | j                  ||      |||j                  d            S )Nz/api/users/by_username/zDownloading user info)r   r   rm   privatefollowed_by_me)TtruezThis user profile is privateTr"   )blocked_by_userblocking_userFrP   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/   rU   r   	user_infor=   s        r2   r   zTrillerUserIE._real_extract  s   >>#& !4!4!!""9(D2D<M<M "5 "OQWZ^Y_P`b heg 	 ==#	6F(G~(] !?$OO)&JTF%S]bc !EPTUUimmI67 !<==##MM(G,gx9==YeKf $ h 	hr4   N)   )r   r   r   r   r   r   r   r   r   r4   r2   r   r      sS    NJ1#J
 3 $J
F$Qhr4   r   c                       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$ Zy%)&TrillerShortIEz#https?://v\.triller\.co/(?P<id>\w+)zhttps://v.triller.co/WWZNWk 5eb8dc2c971bd8cd794ec9e8d5e9d101r:   66210052rV   r[   r   z$md5:2dfc89d154cd91a4a18cd9582ba03e16rn   z$f4480e1f-fb4e-45b9-a44c-9e6c679ce7ebr   r   rw   ro   statefairentrp   	487545193r   u   Official Summer Fair of LAr>   i"ar   20210822r      r   r   r   r   r   rr   z https://triller.co/@statefairentrl   r   c                     | j                  t        |      | j                  |            j                  }| j	                  |      rt        |      | j                  |      S r   )_request_webpager   r   rU   suitabler   
url_result)r/   rU   real_urls      r2   r   zTrillerShortIE._real_extractE  sN    ((S)94>>#;NOSS==""8,,x((r4   Nr   r   r4   r2   r   r   *  s    7J,1
*
5
 ;
 @	

 J
 A
 
 ;
 7
 
 :
 
 #
 #
 i
  Y!
" >#
$ S%
 F2)r4   r   )r   r,   rK   commonr   
networkingr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r4   r2   <module>r      se      	 ! $   w
M w
tSN SNlAhM AhH)] )r4   