o
    i=                     @   s`   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 deZdS )	    N   )InfoExtractor   )int_or_nonejwt_decode_hs256try_callurl_or_none)requiretraverse_objc                   @   s  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/d0dd1d2d3i dd4dddd5d	d6dd7dd8dededededed)d9dd:ddd;gdd<dd=d>d?d@d?dAd1gZdBZdCZdDdE Z	dFdG Z
dHdI ZdJS )K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 8b9bda03eba4d066928ae8d71f19befbz$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giWZ]h2025022620250626)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                 C   s   t |d t  dk S )Nexpi,  )r   time)selftoken r=   I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/loco.py_is_jwt_expired]   s   zLocoIE._is_jwt_expiredc                    s   t  fdd}|r |s|S t jd|ddtd j jddd	d	d
 dd	t
jdddd dd j jdddd}|rR |sT dd| |S d S d S )Nc                      s     dd jS )Nzhttps://loco.comaccess_token)_get_cookiesvaluer=   r;   r=   r>   <lambda>a   s    z*LocoIE._get_access_token.<locals>.<lambda>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headersr@   z	.loco.com)r   r?   r
   _download_jsonjsondumps
_CLIENT_ID_CLIENT_SECRETencodejoinrandomchoices_set_cookie)r;   video_idr@   r=   rC   r>   _get_access_token`   s<   zLocoIE._get_access_tokenc                 C   s*  |  |dd\}}| ||}t| ||dddthttdhf}| | }r<| j	d|dd	d
|id|d id | 
|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dhfdtddhfd thfd!thfd"thfd#S )$Ntyper   .)NssrData)liveStreamDatastream
liveStreamzstream infoz)https://drm.loco.com/v1/streams/playback/zDownloading video authorizationFauthorization
stream_uiduid)rV   rX   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_countr.   )r   r   r   r   r   r   r   r   r   r   r    r!   r   r   r.   )_match_valid_urlgroup_download_webpager
   _search_nextjs_v13_datadictanyr	   rd   _request_webpage_extract_m3u8_formatsstrr   r   )r;   r(   
video_typerc   webpagerh   r@   r=   r=   r>   _real_extract{   sH   	
zLocoIE._real_extractN)__name__
__module____qualname__
_VALID_URLintr   _TESTSr\   r]   r?   rd   r   r=   r=   r=   r>   r   
   s   	
	
	
Nr   )rZ   r`   r:   commonr   utilsr   r   r   r   utils.traversalr	   r
   r   r=   r=   r=   r>   <module>   s    