
    Ğid2                         d dl Z d dlZ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  G d de          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          ZdS )    N   )InfoExtractor   )ExtractorErrorformat_fieldint_or_nonestr_or_nonetraverse_objtry_getc                   &    e Zd ZdZddiZd Zd ZdS )TrovoBaseIEzhttps?://(?:www\.)?trovo\.live/Originzhttps://trovo.livec                    d|                     di           v rd}nd}|                     ||t          j        |g                                          ddidd                    t          j        t          j	        t          j
        z   d	
                    i          d         }d|v r$t          d|d         d         d                    |d         |d                  S )NpersistedQuery
extensionszhttps://gql.trovo.livez"https://api-web.trovo.live/graphqlAcceptzapplication/jsonqid    )k)dataheadersqueryr   errorszTrovo said: messager   operationName)get_download_jsonjsondumpsencodejoinrandomchoicesstringascii_uppercasedigitsr   )selfvideo_idr   urlresps        [C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/trovo.py	_call_apizTrovoBaseIE._call_api   s    txxb9999*CC6C""
D6 2 2 9 9 ; ;hPbEcrwwv~f.Dv}.TXZ[[[\\ #   	
 t !NXq0A)0L!N!NOOOF|D122    c                     |                     d          pi }|                     d          }|                     d          t          |                     d                    t          |d d          dS )NstreamerInfouserNamenickNameuidzhttps://trovo.live/%s)uploaderuploader_iduploader_url)r   r	   r   )r(   r   streamer_infousernames       r,   _extract_streamer_infoz"TrovoBaseIE._extract_streamer_info$   st    006B $$Z00%))*55&}'8'8'?'?@@(49PQQ
 
 	
r.   N)__name__
__module____qualname___VALID_URL_BASE_HEADERSr-   r9    r.   r,   r   r      sB        8O./H3 3 3
 
 
 
 
r.   r   c                   X    e Zd Zej        dz   Zdddddddddd	d
dddddddgZd ZdS )TrovoIEzA(?:s/)?(?!(?:clip|video)/)(?P<id>(?!s/)[^/?&#]+(?![^#]+[?&]vid=))zhttps://trovo.live/ExslTr*   only_matchingz-https://trovo.live/s/SkenonSLive/549759191497z&https://trovo.live/s/zijo987/208251706104125853_104125853_1656439572flvzhttps://trovo.live/zijo987	104125853zahttps://livecover.trovo.live/screenshot/73846_104125853_104125853-2022-06-29-04-00-22-852x480.jpgzijo987u8   💥IGRAMO IGRICE UPADAJTE💥2500/5000 2022-06-28 22:01is_live)idextr6   r5   	thumbnailr4   titlelive_statuszMay not be liver*   	info_dictskipc           	         |                      |          }|                     |ddd|iid          }|                    d          dk    rt          | dd	
          |d         }|d         }|d         }g }|                    d          pg D ]{}|                    d          }	|	s|                    d          }
|                    |
|
rt          |
d d                   nd |	|                    d          | j        d           |||||                    d          d	d}|                    |                     |                     |S )N"live_LiveReaderService_GetLiveInfoparamsr1   )r   	variablesr   isLiver   z is offlineTexpectedprogramInforI   rL   
streamInfoplayUrldescbitrate)	format_idheightr*   tbrhttp_headerscoverUrl)rI   rL   formatsrK   rH   )		_match_idr-   r   r   appendr   r>   updater9   )r(   r*   r8   	live_infoprogram_info
program_idrL   rd   stream_infoplay_urlr_   infos               r,   _real_extractzTrovoIE._real_extractE   s   >>#&&NN8A3
 3
N  	 ==""a'' H!9!9!9DIIII /!$'
W%(,,\::@b 	 	K"y11H #//INN&9BL+in555"y11 $      %))*55
 
 	D//	::;;;r.   N)r:   r;   r<   r   r=   
_VALID_URL_TESTSrn   r?   r.   r,   rA   rA   .   s        ,/ssJ(  ?  828&|!O$	
 	
 " F*& & & & &r.   rA   c                       e Zd Zej        dz   Zdddiddddd	d
ddeeeddgddddddddddddddeededgddd d!d"dd#d$d%d&d'd(d)eed*ed+gdd,d-dd.d/dd.gZd0 Zd1 Z	d2S )3
TrovoVodIEzD(?:clip|video|s)/(?:[^/]+/\d+[^#]*[?&]vid=)?(?P<id>(?<!/s/)[^/?&#]+)z:https://trovo.live/clip/lc-5285890818705062210?ltab=videosgetcommentsTzlc-5285890818705062210mp4u&   fatal moaning for a super good🤣🤣OneTappedYouis`20210521	100719456   z
mincount:1zCall of Duty: Mobilezhttps://trovo.live/OneTappedYouzre:^https?://.*\.jpg)rI   rJ   rL   r4   	timestampupload_dater5   duration
view_count
like_countcomment_countcomments
categoriesr6   rK   )r*   rS   rO   z\https://trovo.live/s/SkenonSLive/549759191497?vid=ltv-100829718_100829718_387702301737980280z*ltv-100829718_100829718_387702301737980280ibzwhttp://vod.trovo.live/1f09baf0vodtransger1301120758/ef9ea3f0387702301737980280/coverBySnapshot/coverBySnapshot_10_0.jpg	100829718SkenonSLivez*Trovo u secanju, uz par modova i muzike :)zhttps://trovo.live/SkenonSLiveiN*  20220611	Minecraft)rI   rJ   ry   rK   r5   r4   rL   r6   r{   r|   r}   rz   r~   r   zNot availablerN   zVhttps://trovo.live/s/Trovo/549756886599?vid=ltv-100264059_100264059_387702304241698583z*ltv-100264059_100264059_387702304241698583i*czwhttp://vod.trovo.live/be5ae591vodtransusw1301120758/cccb9915387702304241698583/coverBySnapshot/coverBySnapshot_10_0.jpg	100264059TrovozDev Corner 8/25zhttps://trovo.live/Trovoi  20220826z
Talk Shows)r*   rO   z;https://trovo.live/video/ltv-100095501_100095501_1609596043rB   zdhttps://trovo.live/s/SkenonSLive/549759191497?foo=bar&vid=ltv-100829718_100829718_387702301737980280c                    |                      |          }|                     |ddd|giii d          }t          |d|ft                    }|st	          dd	
          |                    d                              d          }t          d           r:d         d         }|dk    rt	          dd	
          t	          d| dd	
                              d          }g }                    d          pg D ]}	|	                    d          }
|
s|	                    d          }|                    dt          |	                    d                    ||rt          |d d                   nd |dt          |	                    d                    |
| j	        d	                               d          }fd}|||                    d           t                              d!                    t                              d"                     |d#           |d$           |d%          |r|gnd | 
                    |          d&}|                    |                     |                     |S )'N*vod_VodReaderService_BatchGetVodDetailInforS   vidsr   rT   r   rU   VodDetailInfos)expected_typez-This video not found or not available anymoreTrW   vodInforL   c                 &    | d         d         dk    S )NplaybackRightsNormalr?   )xs    r,   <lambda>z*TrovoVodIE._real_extract.<locals>.<lambda>   s    q)9':;K'LPX'X r.   r   playbackRightsSettingSubscriberOnlyz,This video is only available for subscriberszThis video is not available ()languageName	playInfosr[   r\   rt   fileSizer]   m3u8_nativer^   )	rJ   filesizer_   r`   languageprotocolra   r*   rb   categoryNamec                 N    t                              | dz                       S )NNum)r   r   )r   vod_infos    r,   r   z*TrovoVodIE._real_extract.<locals>.<lambda>   s    k(,,q5y*A*ABB r.   rc   	publishTsr{   watchlikecomment)rI   rL   rd   rK   ry   r{   r|   r}   r~   r   __post_extractor)re   r-   r
   dictr   r   r   rf   r   r>   extract_commentsrg   r9   )r(   r*   vidr+   vod_detail_inforL   playback_rights_settingr   rd   	play_inforl   r_   category	get_countrm   r   s                  @r,   rn   zTrovoVodIE._real_extract   s   nnS!!
 ~~cISE
 )
 )
~   't.>-DTXYYY 	a !P[_````"&&y11W%%8XXYY 	p&./?&@AX&Y#&*:::$%S^bcccc$%_E\%_%_%_jnoooo<<//",,{339r 	 	I }}Y//H !f--INN'	j(A(ABB&9BL+in555$)"9==#;#;<< $
 
 
 
 
 
 <<//BBBB	 !j11$X\\+%>%>??#HLL$<$<==#)G,,#)F++&Yy11(0:8**d $ 5 5c : :
 
 	D//@@AAAr.   c              #   b  K   t          j        d          D ]}|                     |ddd|ii d|diddid	
          }|d         D ]}|                    d          }|s|                    d          pi }|                    d          }|                    d          t	          |                    d                    t	          |                    d                    |t          |                    d                    |dk    rdnt	          |          dV  |d         r d S d S )Nr   )public_CommentProxyService_GetCommentListrS   postIDc   )appInfopreviewpageSizepage	singleReqtruer   rU   commentListcontentauthorparentIDr2   r3   	commentID	createdAtr   root)r   	author_idrI   textry   parentlastPage)	itertoolscountr-   r   r	   r   )r(   r   r   comments_jsonr   r   r   r   s           r,   _get_commentszTrovoVodIE._get_comments   s     OA&& !	 !	D NN3!L$c$ $&$& $ 	  6 6N  M  )7  !++i00  X..4" Z00$jj44!,VZZ->->!?!?%gkk+&>&>??#!,W[[-E-E!F!F(.!ffV9L9L      Z( A!	 !	r.   N)
r:   r;   r<   r   r=   ro   intrp   rn   r   r?   r.   r,   rr   rr   n   sY       ,/vvJK $'*=&#%& $12=0
 
 * n># S&%A<% &-
 
   % ( h># S&&6% '.
 
 & M  v y?FBA A AF" " " " "r.   rr   c                       e Zd Zd Zd ZdS )TrovoChannelBaseIEc           
   #     K   t          j        d          D ]}|                     || j        dd|i|ddiddid	          }|                    d
g           }|D ]`}|                    d          }t          |d          }|                     d| d| d| t                                                    V  a|                    d          }|s d S d S )Nr   rS   	spaceNamer   )terminalSpaceIDcurrPager   r   r   r   rU   vodInfosr   )	spaceInforoomIDzhttps://trovo.live/s//z?vid=)iehasMore)	r   r   r-   
_OPERATIONr   r
   
url_resultrr   ie_key)	r(   	spacenamer   vod_jsonvodsvodr   roomhas_mores	            r,   _entrieszTrovoChannelBaseIE._entries  s=     OA&& 	 	D~~i!%', %)$&   7 7~  H <<
B//D , ,ggenn#C)@AAooHIHHHH3HH!((** & , , , , , ,  ||I..H 1	 	r.   c                     |                      |          }|                     |                     |          |          S )N)playlist_id)re   playlist_resultr   )r(   r*   r   s      r,   rn   z TrovoChannelBaseIE._real_extract6  s8    NN3''	##DMM)$<$<)#TTTr.   N)r:   r;   r<   r   rn   r?   r.   r,   r   r     s7          8U U U U Ur.   r   c                   ,    e Zd ZdZdZddddidgZdZd	S )
TrovoChannelVodIEztrovovod:(?P<id>[^\s]+)z4All VODs of a trovo.live channel; "trovovod:" prefixztrovovod:OneTappedYou   rI   ru   r*   playlist_mincountrO   ,vod_VodReaderService_GetChannelLtvVideoInfosNr:   r;   r<   ro   IE_DESCrp   r   r?   r.   r,   r   r   ;  sC        +JDG '.
  F @JJJr.   r   c                   ,    e Zd ZdZdZddddidgZdZd	S )
TrovoChannelClipIEztrovoclip:(?P<id>[^\s]+)z6All Clips of a trovo.live channel; "trovoclip:" prefixztrovoclip:OneTappedYou   rI   ru   r   -vod_VodReaderService_GetChannelClipVideoInfosNr   r?   r.   r,   r   r   J  sC        ,JFG (.
  F AJJJr.   r   )r   r   r#   r%   commonr   utilsr   r   r   r	   r
   r   r   rA   rr   r   r   r   r?   r.   r,   <module>r      s          ! ! ! ! ! !               
 
 
 
 
- 
 
 
:= = = = =k = = =@h h h h h h h hVU U U U U U U UD@ @ @ @ @* @ @ @A A A A A+ A A A A Ar.   