
    VGh7                     f    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	 ddl
mZmZ  G d de      Zy)	    N   )InfoExtractor   )int_or_nonejwt_decode_hs256try_callurl_or_none)requiretraverse_objc                      e Zd ZdZdi ddddddd	d
dddddedededededddddgdddededdeeddd id!d"d#i dd$dddd%d	d&dd'dd(dededededed)d*dd+ddgdd,dd-dd.d/d/dd0d1d2i dd3dddd4d	d5dd6dd7dededededed)d8dd9ddd:gdd;dd<d=d>d?d>d@d0gZdAZdBZdC Z	dD Z
dE ZyF)GLocoIEzGhttps?://(?:www\.)?loco\.com/(?P<type>streamers|stream)/(?P<id>[^/?#]+)z$https://loco.com/streamers/teuzinfpsid	teuzinfpsextmp4titlez,re:MS BOLADAO, RESENHA & GAMEPLAY ALTO NIVELdescriptionz
bom e novouploader_id
RLUVE3S9JUchannelchannel_follower_countcomment_count
view_countconcurrent_view_count
like_count	thumbnailzZhttps://static.ivory.getloconow.com/default_thumb/743701a9-98ca-41ae-9a8b-70bd5da070ad.jpgtagsMMORPGGameplayseriesTibia	timestampmodified_timestamplive_statusis_live)upload_datemodified_dateskip_download
Livestream)url	info_dictparamsz<https://loco.com/stream/c64916eb-10fb-46a9-9a19-8c4b7ed064e7 45ebc8a47ee1c2240178757caf8881b5z$c64916eb-10fb-46a9-9a19-8c4b7ed064e7zPAULINHO LOKO NA LOCO!zlive on na loco
2MDO7Z1DPMpaulinholokobrdurationi8  zZhttps://static.ivory.getloconow.com/default_thumb/59b5970b-23c1-4518-9e96-17ce341299fe.jpgzGTA 5igig20250226)r*   md5r+   z<https://loco.com/stream/ac854641-ae0f-497c-a8ea-4195f6d8cc53 0513edf85c1e65c9521f555f665387d5z$ac854641-ae0f-497c-a8ea-4195f6d8cc53z-DUAS CONTAS DESAFIANTE, RUSH TOP 1 NO BRASIL!z$md5:aa77818edd6fe00dd4b6be75cba5f826
7Y9JNAZC3Qayelloli  zZhttps://static.ivory.getloconow.com/default_thumb/f5aa678b-6d04-45d9-a89a-859af0a8028f.jpgCarryzLeague of Legendsi-Ugr&   20250305iUg)r#   r'   (TlwKp1zmF6eKFpcisn3FyR18WkhcPkZtzwPVEEC3ڀKp7tYlUN7LXvtcSpwYvIitgYcLparbtsQSe5AdyyCdiEJBP53Vt9J8eB4AsLdChIpcO2BM19RA3HsGtqDJFjWmwoonvMSG3ZQmnS8x1YIM8yl82xMXZGbE3NKiqmgBVUc                 N    t        |      d   t        j                         z
  dk  S )Nexpi,  )r   time)selftokens     ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/loco.py_is_jwt_expiredzLocoIE._is_jwt_expired]   s"    &u-		;cAA    c                     t         fd      }|r j                  |      s|S t         j                  d|ddt	        j
                  d j                   j                  ddddd	      j                         d
dj                  t        j                  dd            dz   dd j                   j                  dd      d      }|r' j                  |      s j                  dd|       |S y y )Nc                  @     j                  d      d   j                  S )Nzhttps://loco.comaccess_token)_get_cookiesvalue)r=   s   r?   <lambda>z*LocoIE._get_access_token.<locals>.<lambda>a   s    (9(9:L(Mn(](c(c rA   z2https://api.getloconow.com/v3/user/device_profile/zDownloading access tokenF   MozillaWin32z5.0 (Windows))platform	client_idclient_secretmodelos_nameos_verapp_verzapplication/json;charset=utf-8 0123456789abcdef    )kliveenzen-US7)zContent-Typez	DEVICE-IDz
X-APP-LANGzX-APP-LOCALEzX-CLIENT-IDzX-CLIENT-SECRETz
X-PLATFORM)fataldataheadersrD   z	.loco.com)r   r@   r   _download_jsonjsondumps
_CLIENT_ID_CLIENT_SECRETencodejoinrandomchoices_set_cookie)r=   video_idrD   s   `  r?   _get_access_tokenzLocoIE._get_access_token`   s     cd 4 4\ B#D$7$7@(&e$**!__!%!4!4"")*F ; vx @WWV^^4F"%MNQWW" '##'#6#6!" %8 %$ % &  4 4\ B[.,G !C<rA   c                    | j                  |      j                  dd      \  }}| j                  ||      }t        | j	                  ||      dddt
        ht        t        d      hf      }| j                  |      x}r| j                  d|dd	d
|id|d   i       | j                  |d   d   |      ||dk(  dt        |dt        hfdt        hfdt        hfdt        hfdt        hfdt        hfdt        hfdt        hfdt        hfddt        hfdt        d      hfd t        d      hfd!t        hfd"t        hfd#t        hfd$      S )%Ntyper   props	pageProps)liveStreamDatastream
liveStreamzstream infoz)https://drm.loco.com/v1/streams/playback/zDownloading video authorizationFauthorization
stream_uiduid)rY   r[   queryconfhls	streamers)formatsr   r%   r   	game_nameuser_uidaliasr   viewersCurrenttotal_viewsthumbnail_url_smalllikesr   .
started_ati  )scale
updated_atcomments_countfollowers_countr0   )r   r    r   r   r   r   r   r   r   r   r"   r#   r   r   r0   )_match_valid_urlgroup_download_webpager   _search_nextjs_datadictanyr
   rg   _request_webpage_extract_m3u8_formatsstrr   r	   )r=   r*   
video_typerf   webpagerm   rD   s          r?   _real_extractzLocoIE._real_extract{   s   #44S9??M
H((h7d66wI["LtfVY\cdq\r[sLu v  11(;;<;!!;X1#\I !&-	 "  11&.2GR![0
 6!C5)&. *SE2#cU+ -u5*:[M)J,{m<3k]C&6se,*[t-D,EF'3k6M5N&O"2[M!B+<{m*L'+7$ 	
 	
rA   N)__name__
__module____qualname__
_VALID_URLintr   _TESTSr_   r`   r@   rg   r    rA   r?   r   r   
   s   [J5
+
5
 D
 <	

 <
 {
 %c
 S
 #
 $S
 #
 u
 Xz*
 g
 
  !#!
" 9#
$  '
, \
/6 N1
8
5
 -
 ,	

 <
 '
 %c
 S
 #
 $S
 #
 
 u
 ZL
 g
  !
" !*#
$ &''
4 N1
8
5
 D
 A	

 <
 y
 %c
 S
 #
 $S
 #
 
 u
 Z)
 )
  !
" :#
$ #-''
	eKF\ <J XNB 6$
rA   r   )r]   rc   r<   commonr   utilsr   r   r   r	   utils.traversalr
   r   r   r   rA   r?   <module>r      s(       ! H H 3U
] U
rA   