
    V|h5                         S SK r S SKrS SKrSSKJr  SSKJr  SSKJrJ	r	J
r
JrJrJrJrJrJrJrJr   " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      rg)    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                   >    \ rS rSrSrSrSS0rS rSS jrSS	 jr	S
r
g)TrillerBaseIE   trillerzhttps://social.triller.co/v1.5Originzhttps://triller.coc                 r   U R                   R                  S5      (       a  g 0 U R                   ESS0En[        U R                  U R                   S3S SSSU[
        R                  " SU0S	S
9R                  5       S9S5      nU(       a
  [        SSS9eU R                  U R                   S3S SSSU[
        R                  " UUS.S	S
9R                  5       S9=(       d    0 nUR                  S5      (       d*  UR                  S5      S:X  a
  [        SSS9e[        S5      eSUS    3U R                   S'   g )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         R/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/triller.py_perform_loginTrillerBaseIE._perform_login   sc     1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              #     #    U R                  U R                   SU S3USSU R                  SU0S9=(       d    0 nUR                  S5      (       d  g [	        USSS	[
        14S
SSS[        14S.45       S h  vN   g  N7f)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   )r0   video_idr9   comment_infos       r3   _get_commentsTrillerBaseIE._get_comments6   s     **!!",xjEE(G%%gu-= + ? E CE 	 
++z3+',.%(9':;A
 /  	 	s   A7B9A?:BNc                   ^ [        US   5      nU=(       d    UR                  S5      n[        US SS 14SS9(       a  U R                  SSS	9  S
 n/ n[	        UR                  S5      5      S:X  a%  UR                  U R                  US   USSSS95        [        USS 45       Hf  nUR                  0 U" US   5      E[        UR                  S5      5      EUR                  S5      [        UR                  S5      S5      S.E5        Mh     [        USS[        S9n	U	(       a0  UR                  0 U" U	5      ESS0E[        USSSS .[        S9E5        [        UR                  S!5      5      n
U
(       a  UR                  U" U
5      5        [        US"[        145      nUUUT=(       d    [        US#S$[        145      [        S%U S&3U5      S%U 3[        R                  5       [        R                  UUU R!                  X[5      S'.[        US(S) 14S(S#S*U4S+ j44S,4S-[        14S.["        14S/[        14S0[        14S1[        14S2S3S4.
SS9E$ )5Nr<   
video_uuid)transcoded_url	video_url
stream_url	audio_urlc                 0    [         R                  " SU 5      $ )Nz/copyright/)researchxs    r3   <lambda>1TrillerBaseIE._parse_video_info.<locals>.<lambda>K   s    299^Q7r6   Fget_all9This video has been removed due to licensing restrictionsTr#   c                 V    U [        U 5      [        U 5      R                  S5      S   S.$ )N.r   )urlext	format_id)r	   r   split)rY   s    r3   format_info4TrillerBaseIE._parse_video_info.<locals>.format_infoN   s/    $S))#.44S9!< r6   rI   m3u8mp4hls)m3u8_idr   	video_setc                     [        US   5      $ )NrY   )r   )_vs     r3   rR   rS   [   s    UVW\U]I^r6   rY   
resolutioncodecbitratei  )vcodecvbrrJ   rK   )expected_typerj   h264widthheightfilesize)rn   ro   rp   rL   comment_countuserr?   zhttps://triller.co/@z/video/)r<   
display_iduploaderuploader_idwebpage_urluploader_urlextractor_key	extractorformatsrq   __post_extractordescriptionc                 &    U R                  SS5      $ )Nz
 )replacerP   s    r3   rR   rS      s    AIIfc4Jr6   usersc                 &   > [        US   5      T:H  $ )Nr?   )str)re   rf   r?   s     r3   rR   rS      s    c!I,>OSZ>Zr6   namethumbnail_urlr@   duration
play_countlikes_countsong_artist
song_title)
titler|   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   )r0   
video_infor   r?   rs   rC   r]   rz   videorJ   rL   rq   s      `        r3   _parse_video_info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>	  a ![,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<'%( 
 	
r6    )   N)__name__
__module____qualname____firstlineno___NETRC_MACHINEr,   r)   r4   rE   r   __static_attributes__r   r6   r3   r   r      s(    N4M23LM6H
r6   r   c                      \ rS rSrSrSS0 SS_SS_S	S
_SS_SS
_SS_SS_SS_SS_SS_SS_S\_S\_SS_SS_SS _S!\_S"S#.S$S%0 SS&_SS_S	S'_S(S)_SS_SS'_SS*_SS+_SS,_SS-_SS._SS/_S\_S\_SS0_SS1_SS2_S!\0ES3.S4S50 SS6_SS_S	S7_S(S8_SS_SS9_SS_SS_SS_SS:_SS;_SS<_S\_S\_SS=_SS=_SS _S!\0ES3./rS> rS?rg@)Ar      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<   71595734rZ   r`   r   z$md5:9a2bf9435c5c4292678996a464669416r   .re:^https://uploads\.cdn\.triller\.co/.+\.jpg$r|   rt   theestallionru   18992236r   zMegan Thee Stallionr@   iηbupload_date20220815r   /   r   r   r   r   Herrw    https://triller.co/@theestallionrq   rV   )rY   md5	info_dictskipzLhttps://triller.co/@charlidamelio/video/46c6fcfa-aa9e-4503-a50c-68444f44cddc 874055f462af5b0699b9dbb527a505a071621339z$md5:4c91ea82760fe0fffb71b8c3aa7295fcrs   z$46c6fcfa-aa9e-4503-a50c-68444f44cddccharlidamelio1875551zcharli damelioicb20220817   DixiezSomeone to Blame!https://triller.co/@charlidameliorY   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                     U R                  U5      R                  SS5      u  p#U R                  U R                   SU 3UU R                  S9S   S   nU R                  XBS U5      $ )Nr   r<   r8   )r    videosr   )_match_valid_urlgroupr+   r,   r)   r   )r0   rY   r   rs   r   s        r3   _real_extractTrillerIE._real_extract   s~    #44S9??
DQ((!!",zl;Z%% ) ''/1124
 %%jD*MMr6   r   N	r   r   r   r   
_VALID_URLint_TESTSr   r   r   r6   r3   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r6   r   c                   V    \ rS rSrSrSSSSSS.S	.S
SSSSS.S	./rS rSS jrS rSr	g)TrillerUserIE   z:https?://(?:www\.)?triller\.co/@(?P<id>[\w.]+)/?(?:$|[#?])r      r   r   r   )r<   r   r   )rY   playlist_mincountr   r      r   r   c           
         U R                   R                  S5      (       de  U R                  U R                   S3S SSU R                   SSS.S9nUR                  S	5      (       d  [	        S
5      eSUS	    3U R                   S'   g g )Nr   z/user/create_guestzCreating guest sessionr6   Web )platformapp_version)r   r!   r    r:   r&   z7Unable to fetch required auth token for user extractionr(   )r)   r*   r+   r,   r   )r0   guests     r3   _real_initializeTrillerUserIE._real_initialize   s      $$_55''%%&&894-CARAR %#%[ ( E 99\**$%^__3:5;N:O1PDo. 6r6   c           	   #   2  #    SU0n[         R                  " S5       Hu  nU R                  U R                   SU S3USU 3U R                  US9n[        US5       H  nU R                  XqU5      v   M     [        US5      US	'   US	   (       a  Mu    g    g 7f)
Nr9   r   z/api/users/z/videosz!Downloading user video list page )r   r    r:   )r   .)r   r@   before_time)	itertoolscountr+   r,   r)   r   r   )r0   r   r?   r9   r:   pager   r   s           r3   _entriesTrillerUserIE._entries  s     % OOA&D((%%&k''B!B4&I)) ) 8F
 &fo>,,UgFF ? $08S#TE- '' 's   BBBc           	         U R                  U5      n[        U R                  U R                   SU 3USU R                  S9S[
        145      =(       d    0 nUR                  S5      (       a  UR                  S5      S;  a
  [        SS	S
9e[        US[        14SS9(       a
  [        SS	S
9e[        UR                  S5      5      nU(       d  [        S5      eU R                  U R                  X$5      XBUR                  S5      S9$ )Nz/api/users/by_username/zDownloading user info)r   r    rr   privatefollowed_by_me)TtruezThis user profile is privateTr#   )blocked_by_userblocking_userFrT   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   )r0   rY   r   	user_infor?   s        r3   r   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(,g9==YeKf $ h 	hr6   r   N)   )
r   r   r   r   r   r   r   r   r   r   r   r6   r3   r   r      sS    NJ1#J
 3 $J
F$Qhr6   r   c                       \ rS rSrSrSS0 SS_SS_S	S
_SS_SS_SS
_SS_SS_SS_SS_SS_SS_S\_S\_SS_S S_S!S"_S#\0ES$./rS% rS&rg')(TrillerShortIEi*  z#https?://v\.triller\.co/(?P<id>\w+)zhttps://v.triller.co/WWZNWk 5eb8dc2c971bd8cd794ec9e8d5e9d101r<   66210052rZ   r`   r   z$md5:2dfc89d154cd91a4a18cd9582ba03e16rs   z$f4480e1f-fb4e-45b9-a44c-9e6c679ce7ebr   r   r|   rt   statefairentru   	487545193r   u   Official Summer Fair of LAr@   i"ar   20210822r      r   r   r   r   r   rw   z https://triller.co/@statefairentrq   r   c                     U R                  [        U5      U R                  U5      5      R                  nU R	                  U5      (       a  [        U5      eU R                  U5      $ r   )_request_webpager   r   rY   suitabler   
url_result)r0   rY   real_urls      r3   r   TrillerShortIE._real_extractE  sQ    ((S)94>>#;NOSS=="""8,,x((r6   r   Nr   r   r6   r3   r   r   *  s    7J,1
*
5
 ;
 @	

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