§
   ];V—¦pã                   óØ   — d Z ddlZddlZddlZdZdZeddœZ ej        ¦   «         Zej	         
                    e¦  «         daej        fd„Zdd„Zdd
„Zd„ Zdd„Zd„ Zdd„Zdd„Zd„ ZdS )u\   
KRA.sk API client pro MilionÃ¡Å™ addon.
Poskytuje login, resolve a sprÃ¡vu pÅ™edplatnÃ©ho.
é    Nzhttps://api.kra.skzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zapplication/json)z
User-AgentzContent-Typec                 ó8   — t          j        d| › �|¬¦  «         dS )u   LogovÃ¡nÃ­ s prefixem.z&[plugin.video.milionar] KraskaClient: ©ÚlevelN)ÚxbmcÚlog)Úmsgr   s     úe/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/kraska/KraskaClient.pyÚ_logr
      s&   € å„HÐ;°cÐ;Ð;À5ÐIÑIÔIÐIÐIÐIó    c                 ó  — |€i }|r||d<   	 t          d| › �¦  «         t                               t          | z   |d¬¦  «        }|                     ¦   «         S # t
          $ r)}t          d|› �t          j        ¬¦  «         Y d}~dS d}~ww xY w)	uú   
    VolÃ¡nÃ­ KRA.sk API.
    
    Args:
        endpoint: API endpoint (napÅ™. '/api/user/login')
        data: dict s daty pro request
        token: session token (volitelnÃ©)
    
    Returns:
        dict s odpovÄ›dÃ­ nebo False pÅ™i chybÄ›
    NÚ
session_idz
API call: é   )ÚjsonÚtimeoutzAPI error: r   F)r
   Ú_sessionÚpostÚBASEr   Ú	Exceptionr   ÚLOGERROR)ÚendpointÚdataÚtokenÚresponseÚes        r	   Ú	_get_datar      s¯   € ð €|ØˆØð #Ø"ˆˆ\ÑðÝÐ$˜(Ð$Ð$Ñ%Ô%Ð%Ý—=’=¥¨¡°tÀR�=ÑHÔHˆØ�}Š}‰ŒÐøÝð ð ð ÝÐ˜1ÐÐ¥d¤mÐ4Ñ4Ô4Ð4Øˆuˆuˆuˆuˆuøøøøðøøøs   �A
A Á
BÁ"BÂBTc                 óê  — | r|sL ||                      d¦  «        |                     d¦  «        d¬¦  «         |r|                     ¦   «          dS t          d| › �¦  «         d| |dœi}t	          d	|¦  «        }|rtd
|v rp|d
         }|                     d|¦  «         |                     d| ¦  «         |                     d|¦  «         |                     d¦  «        }t          d¦  «         |S |r|                     dd¦  «        nd}	t          d|	› �t          j	        ¬¦  «          ||                      d¦  «        |                     d¦  «        dd¬¦  «         |r|                     ¦   «          dS )u1  
    PÅ™ihlÃ¡Å¡enÃ­ ke KRA.sk.
    
    Args:
        username: uÅ¾ivatelskÃ© jmÃ©no
        password: heslo
        addon: xbmcaddon instance
        popinfo: callback pro notifikace
        open_settings_on_fail: otevÅ™Ã­t nastavenÃ­ pÅ™i chybÄ›
    
    Returns:
        session_id token nebo None
    i �  ÚnameT)ÚsoundNzLogin attempt for user: r   )ÚusernameÚpasswordz/api/user/loginr   Úkraska_tokenÚkraska_userÚkraska_passzLogin successfulr   úUnknown errorúConnection failedzLogin failed: r   Úerror)Úiconr   )
ÚgetLocalizedStringÚgetAddonInfoÚopenSettingsr
   r   Ú
setSettingÚ
getSettingÚgetr   Ú
LOGWARNING)
r   r    ÚaddonÚpopinfoÚopen_settings_on_failr   r   r   ÚsavedÚ	error_msgs
             r	   Úloginr4   6   sÂ  € ð ð ˜8ð Øˆ�×(Ò(¨Ñ/Ô/°×1CÒ1CÀFÑ1KÔ1KÐSWÐXÑXÔXÐXØ ð 	!Ø×ÒÑ Ô Ð ØˆtåÐ	. HÐ	.Ð	.Ñ/Ô/Ð/ð 	Ø Ø ð
ð 
ð€Dõ Ð*¨DÑ1Ô1€Hàð �L HÐ,Ð,Ø˜Ô&ˆØ×Ò˜¨Ñ/Ô/Ð/Ø×Ò˜¨Ñ1Ô1Ð1Ø×Ò˜¨Ñ1Ô1Ð1à× Ò  Ñ0Ô0ˆÝÐÑ Ô Ð Øˆà<DÐ]�H—L’L ¨Ñ8Ô8Ð8ÐJ]ˆ	ÝÐ)˜iÐ)Ð)µ´ÐAÑAÔAÐAØˆ�×(Ò(¨Ñ/Ô/°×1CÒ1CÀFÑ1KÔ1KÐRYÐaeÐfÑfÔfÐfØ ð 	!Ø×ÒÑ Ô Ð Øˆtr   c                 ó¶  — |                       d¦  «        }|sD|                       d¦  «        }|                       d¦  «        }|r|rt          ||| |d¬¦  «        S dS t          | ||¬¦  «        }|r|S t          d¦  «         |                      dd	¦  «         |                       d¦  «        }|                       d¦  «        }|r|rt          ||| |d¬¦  «        S dS )
uW   
    OvÄ›Å™enÃ­ a obnova tokenu.
    
    Returns:
        PlatnÃ½ token nebo None
    r!   r"   r#   F)r1   N©Útoken_overridez"Token invalid, attempting re-loginÚ )r,   r4   Úget_user_infor
   r+   )r/   r0   r   r   r    Úinfos         r	   Ú
revalidater;   g   s  € ð ×Ò˜^Ñ,Ô,€Eàð à×#Ò# MÑ2Ô2ˆØ×#Ò# MÑ2Ô2ˆØð 	Z˜ð 	ZÝ˜ 8¨U°GÐSXÐYÑYÔYÐYØˆtõ ˜ ¸Ð>Ñ>Ô>€DØð Øˆõ 	Ð	-Ñ.Ô.Ð.Ø	×Ò�^ RÑ(Ô(Ð(Ø×Ò Ñ.Ô.€HØ×Ò Ñ.Ô.€HØð V�Hð VÝ�X˜x¨°ÈuÐUÑUÔUÐUàˆ4r   c                 óŠ   — |p|                       d¦  «        }|sdS t          di |¬¦  «        }|rd|v r|d         at          S dS )ub   
    ZÃ­skÃ¡nÃ­ informacÃ­ o uÅ¾ivateli.
    
    Returns:
        dict s user info nebo None
    r!   Nz/api/user/info©r   r   )r,   r   Ú_user_info_cache)r/   r0   r7   r   r   s        r	   r9   r9   ˆ   sf   € ð Ð>˜e×.Ò.¨~Ñ>Ô>€EØð ØˆtåÐ)¨2°UÐ;Ñ;Ô;€Hàð  �F˜hÐ&Ð&Ø# FÔ+ÐÝÐàˆ4r   c                 óV   — t          | |¦  «        }|sdS |                     dd¦  «        S )um   
    ZÃ­skÃ¡nÃ­ poÄ�tu dnÅ¯ do expirace pÅ™edplatnÃ©ho.
    
    Returns:
        int poÄ�et dnÅ¯ nebo 0
    r   Ú	days_left)r9   r-   )r/   r0   r:   s      r	   Úget_days_leftrA   ž   s4   € õ ˜ Ñ(Ô(€DØð Øˆqà�8Š8�K Ñ#Ô#Ð#r   c                 óâ  — ddl m} t          ||j        ¦  «        }|st	          d¦  «         dS t          ||j        ¦  «        }|dk    rjt	          d¦  «         t          j        ¦   «                              | 	                    d¦  «        | 
                    d¦  «        t          j        d¦  «         dS 	 t          |                     d	¦  «        pd
¦  «        }n# t          $ r d}Y nw xY w||k    rmt          j        ¦   «                              | 	                    d¦  «        | 
                    d¦  «                             |¬¦  «        t          j        d¦  «         t	          d| › �¦  «         dd| ii}t!          d||¬¦  «        }|r,d|v r(|d         }	d|	v r|	d         }
t	          d|
› �¦  «         |
S |r|                     dd¦  «        nd}t	          d|› �t$          j        ¬¦  «         dS )uÕ   
    Resolve ident na stream URL.
    
    Args:
        ident: identifikÃ¡tor souboru
        addon: xbmcaddon instance
        server: volitelnÃ½ custom server
    
    Returns:
        Stream URL nebo None
    r   ©ÚUIzResolve failed: no valid tokenNz&Resolve failed: no active subscriptionr   éü€  éˆ  Úkraska_warn_daysÚ14é   i�  ©ÚdayszResolving ident: r   Úidentz/api/file/downloadr=   ÚlinkzResolved URL: r   r$   r%   zResolve failed: r   )Úwcs.uirD   r;   r0   r
   rA   ÚxbmcguiÚDialogÚnotificationr)   r(   ÚNOTIFICATION_WARNINGÚintr,   r   Úformatr   r-   r   r.   )rL   r/   ÚserverÚuir   r@   Ú	warn_daysr   r   Ú	file_dataÚurlr3   s               r	   ÚresolverZ   ¬   sI  € ð  ÐÐÐÐÐå�u˜bœjÑ)Ô)€EØð ÝÐ-Ñ.Ô.Ð.Øˆtõ ˜e R¤ZÑ0Ô0€IØ�A‚~€~ÝÐ5Ñ6Ô6Ð6ÝŒÑÔ×%Ò%Ø×Ò˜vÑ&Ô&Ø×$Ò$ UÑ+Ô+ÝÔ(Øñ		
ô 	
ð 	
ð ˆtðÝ˜×(Ò(Ð);Ñ<Ô<ÐDÀÑEÔEˆ	ˆ	øÝð ð ð Øˆ	ˆ	ˆ	ðøøøð �IÒÐÝŒÑÔ×%Ò%Ø×Ò˜vÑ&Ô&Ø×$Ò$ UÑ+Ô+×2Ò2¸	Ð2ÑBÔBÝÔ(Øñ		
ô 	
ð 	
õ 	Ð	$˜UÐ	$Ð	$Ñ%Ô%Ð%ð 	Ø�Uð
ð€Dõ Ð-¨t¸5ÐAÑAÔA€Hàð �F˜hÐ&Ð&Ø˜VÔ$ˆ	Ø�YÐÐØ˜FÔ#ˆCÝÐ' #Ð'Ð'Ñ(Ô(Ð(ØˆJà8@ÐY�—’˜U OÑ4Ô4Ð4ÐFY€IÝÐ	'˜IÐ	'Ð	'­t¬Ð?Ñ?Ô?Ð?Øˆ4s   Â5$C ÃC)Ã(C)Fr8   c                 ó   — ddl m} t          | |j        |¬¦  «        }|sA|                      d|                      d¦  «        ¦  «         |                      dd¦  «         dS |                     d	d¦  «        }|                     d
d¦  «        }|                     dd¦  «        }|r>|                      d|                      d¦  «                             |¬¦  «        ¦  «         n)|                      d|                      d¦  «        ¦  «         d}	|rF|dk    r@|                      d¦  «                             |¬¦  «        }	|                      d|	¦  «         nI|rd|› �}	|                      d|	¦  «         n+|                      d¦  «        }	|                      d|	¦  «         |rZ|r|› |	› �}
n|r|› d|	› �n|	}
t          j	        ¦   «          
                    |                      d¦  «        |
t          j        d¦  «         t          d|› d�¦  «         dS )uK  
    ObnovenÃ­ informacÃ­ o pÅ™edplatnÃ©m v settings.
    
    Args:
        addon: xbmcaddon instance
        token_override: volitelnÃ½ token
        show_notification: zobrazit notifikaci
        notification_prefix: prefix pro notifikaci (napÅ™. "PÅ™ihlÃ¡Å¡en: username, ")
    
    Returns:
        True pokud ÃºspÄ›Å¡nÃ©
    r   rC   r6   Úkraska_statuséù€  Úkraska_days_leftr8   Fr   r@   Úsubscribed_untiliú€  )r   iû€  rJ   zDo: rE   z: r   rF   zSubscription info updated: z
 days leftT)rN   rD   r9   r0   r+   r(   r-   rT   rO   rP   rQ   r)   ÚNOTIFICATION_INFOr
   )r/   r7   Úshow_notificationÚnotification_prefixrV   r:   r   r@   r_   Úvip_textÚnotification_texts              r	   Úrefresh_subscription_infore   ð   sg  € ð  ÐÐÐÐÐå˜ ¤
¸>ÐJÑJÔJ€Dàð Ø×Ò˜¨%×*BÒ*BÀ5Ñ*IÔ*IÑJÔJÐJØ×ÒÐ+¨RÑ0Ô0Ð0Øˆuà�xŠx˜
 BÑ'Ô'€HØ—’˜ aÑ(Ô(€IØ—x’xÐ 2°BÑ7Ô7Ðð ð KØ×Ò˜¨%×*BÒ*BÀ5Ñ*IÔ*I×*PÒ*PÐV^Ð*PÑ*_Ô*_Ñ`Ô`Ð`Ð`à×Ò˜¨%×*BÒ*BÀ5Ñ*IÔ*IÑJÔJÐJð €HØð 7�Y ’]�]Ø×+Ò+¨EÑ2Ô2×9Ò9¸yÐ9ÑIÔIˆØ×ÒÐ+¨XÑ6Ô6Ð6Ð6Ø	ð 7Ø,Ð*Ð,Ð,ˆØ×ÒÐ+¨XÑ6Ô6Ð6Ð6à×+Ò+¨EÑ2Ô2ˆØ×ÒÐ+¨XÑ6Ô6Ð6àð 
àð 	TØ#6Ð B¸Ð BÐ BÐÐà=EÐ S 8Ð 9Ð 9¨xÐ 9Ð 9Ð 9È8ÐåŒÑÔ×%Ò%Ø×Ò˜vÑ&Ô&ØÝÔ%Øñ		
ô 	
ð 	
õ 	Ð	< yÐ	<Ð	<Ð	<Ñ=Ô=Ð=Øˆ4r   c                 óÜ  — |                       dd¦  «         |                       dd¦  «         |                       dd¦  «         |                       d|                      d¦  «        ¦  «         |                       dd¦  «         dat          j        ¦   «                              |                      d	¦  «        |                      d
¦  «        t          j        d¦  «         t          d¦  «         dS )u/   
    SmazÃ¡nÃ­ uloÅ¾enÃ½ch ÃºdajÅ¯ KRA.sk.
    r"   r8   r#   r!   r\   r]   r^   Nr   i�  i¸  zAccount data deleted)	r+   r(   r>   rO   rP   rQ   r)   r`   r
   )r/   s    r	   Údelete_accountrg   .  së   € ð 
×Ò�] BÑ'Ô'Ð'Ø	×Ò�] BÑ'Ô'Ð'Ø	×Ò�^ RÑ(Ô(Ð(Ø	×Ò�_ e×&>Ò&>¸uÑ&EÔ&EÑFÔFÐFØ	×ÒÐ'¨Ñ,Ô,Ð,ð Ðå„NÑÔ×!Ò!Ø×Ò˜6Ñ"Ô"Ø× Ò  Ñ'Ô'ÝÔ!Øñ	ô ð õ 	Ð	Ñ Ô Ð Ð Ð r   )NN)T)N)NFr8   )Ú__doc__Úrequestsr   rO   r   ÚUAÚHEADERSÚSessionr   ÚheadersÚupdater>   ÚLOGINFOr
   r   r4   r;   r9   rA   rZ   re   rg   © r   r	   ú<module>rq      s7  ððð ð
 €€€Ø €€€Ø €€€ð €Øv€ØÐ-?Ð
@Ð
@€àˆ8ÔÑÔ€Ø Ô × Ò ˜Ñ  Ô  Ð  ð Ð ð ”Lð Jð Jð Jð Jð
ð ð ð ð4.ð .ð .ð .ðbð ð ðBð ð ð ð,$ð $ð $ðAð Að Að AðH;ð ;ð ;ð ;ð|!ð !ð !ð !ð !r   