§
   ˆ69_¤Oaã                   óî   — d dl Z d dlZd dlZd dlmc mZ d dlmZ 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 d dlmZmZ d dlmZ g d¢Zg d¢Zd	„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z dd„Z!dd„Z"d„ Z#d„ Z$d„ Z%dS )é    N)Ú
quote_plus)ÚWebshareClient)ÚUI)Ú	user_dataÚutils)Úextract_quality)Ú ÚvideoÚimagesÚaudioÚarchivesÚdocsÚadult)r	   ÚrecentÚratingÚlargestÚsmallestc                 óö   — g }|                       d¦  «        r|                     d¦  «         |                       d¦  «        r|                     d¦  «         t          j        d|› �t          j        ¦  «         |S )u   
    VrÃ¡tÃ­ seznam zapnutÃ½ch providerÅ¯.
    Returns: list (napÅ™. ['webshare'], ['kraska'], ['webshare', 'kraska'], [])
    Úwebshare_enabledÚwebshareÚkraska_enabledÚkraskaz'[SeriesSearch] _get_enabled_providers: )ÚgetSettingBoolÚappendÚxbmcÚlogÚLOGINFO)ÚaddonÚenableds     úe/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/search/SeriesSearch.pyÚ_get_enabled_providersr!      s}   € ð
 €GØ×ÒÐ.Ñ/Ô/ð #Ø�Š�zÑ"Ô"Ð"Ø×ÒÐ,Ñ-Ô-ð !Ø�Š�xÑ Ô Ð Ý„HÐ@°wÐ@Ð@Å$Ä,ÑOÔOÐOØ€Nó    é   c           	      ó  — i }d}t          j        d| |d|ddœ¦  «        }t          j        |j        ¦  «        }t          j        |¦  «        rB|                     d¦  «        D ],}|                     d¦  «        }	|	r|	|vrd„ |D ¦   «         ||	<   Œ-|r|S t          j	        d	| t          j
        ¦  «        }
|
s|S |
                     d¦  «        }| d
|
                     ¦   «         …         }t          |¦  «        |k    �r|d
d…                              ¦   «         }t          |¦  «        |k     rnÜ|› |› �}t          j        d||d|ddœ¦  «        }t          j        |j        ¦  «        }t          j        |¦  «        rB|                     d¦  «        D ],}|                     d¦  «        }	|	r|	|vrd„ |D ¦   «         ||	<   Œ-|r6t          j        dt          |¦  «        › d|› d�t          j        ¬¦  «         |S t          |¦  «        |k    �°|S )uß  
    VyhledÃ¡ na Webshare s postupnÃ½m zkracovÃ¡nÃ­m nÃ¡zvu pokud nevrÃ¡tÃ­ vÃ½sledky.
    Automaticky retry-uje s kratÅ¡Ã­m nÃ¡zvem pro problÃ©movÃ© seriÃ¡ly.
    
    Args:
        query: VyhledÃ¡vacÃ­ dotaz (napÅ™. "Dva a pul chlapa S01E01")
        token: Webshare token  
        addon: Instance addonu
        min_name_length: MinimÃ¡lnÃ­ dÃ©lka nÃ¡zvu seriÃ¡lu pro retry (default 5)
        
    Returns:
        dict: SlovnÃ­k nalezenÃ½ch souborÅ¯ {ident: file_data}
    é   Úsearchr
   r   )ÚwhatÚwstÚcategoryÚlimitÚoffsetÚfileÚidentc                 ó(   — i | ]}|j         |j        “ŒS © ©ÚtagÚtext©Ú.0Úes     r    ú
<dictcomp>z1do_webshare_search_with_retry.<locals>.<dictcomp>G   s   € Ð#@Ð#@Ð#@°a A¤E¨1¬6Ð#@Ð#@Ð#@r"   z\s+(S\d+E\d+.*)$Néÿÿÿÿc                 ó(   — i | ]}|j         |j        “ŒS r/   r0   r3   s     r    r6   z1do_webshare_search_with_retry.<locals>.<dictcomp>k   s   € Ð'DÐ'DÐ'D¸!¨¬¨q¬vÐ'DÐ'DÐ'Dr"   z,[plugin.video.milionar] Search retry: Found z files with shortened query 'ú'©Úlevel)Úwebshare_apiÚapi_callÚETÚ
fromstringÚcontentÚis_okÚiterÚfindtextÚrer&   Ú
IGNORECASEÚgroupÚstartÚlenÚrstripr   r   r   )ÚqueryÚtokenr   Úmin_name_lengthÚ	all_filesr*   ÚresponseÚxmlr,   r-   Úse_matchÚse_partÚ	name_partÚ	new_querys                 r    Údo_webshare_search_with_retryrT   )   s�  € ð €IØ€Eõ Ô$ XØØØØØð0ð 0ñ ô €Hõ Œ-˜Ô(Ñ
)Ô
)€CÝÔ˜#ÑÔð AØ—H’H˜VÑ$Ô$ð 	Að 	AˆDØ—M’M 'Ñ*Ô*ˆEØð A˜ iÐ/Ð/Ø#@Ð#@¸4Ð#@Ñ#@Ô#@�	˜%Ñ øð ð ØÐõ ŒyÐ,¨eµR´]ÑCÔC€HØð àÐà�nŠn˜QÑÔ€GØÐ'�x—~’~Ñ'Ô'Ð'Ô(€Iõ ˆi‰.Œ.˜?Ò
*Ñ
*Ø˜c˜r˜c”N×)Ò)Ñ+Ô+ˆ	åˆy‰>Œ>˜OÒ+Ð+Øà Ð+ 'Ð+Ð+ˆ	åÔ(¨ØØØØØð4
ð 4
ñ ô ˆõ Œm˜HÔ,Ñ-Ô-ˆÝÔ˜cÑ"Ô"ð 	EØŸš Ñ(Ô(ð Eð E�ØŸš gÑ.Ô.�Øð E˜U¨)Ð3Ð3Ø'DÐ'D¸tÐ'DÑ'DÔ'D�I˜eÑ$øàð 	ÝŒHÐ}ÅCÈ	ÁNÄNÐ}Ð}ÐqzÐ}Ð}Ð}õ  FJô  FRð  Sñ  Sô  Sð  SØÐõ1 ˆi‰.Œ.˜?Ò
*Ñ
*ð4 Ðr"   c                 óx  — |                       d¦  «        }|dk    rL|                      dd¦  «         t          j        dt          j        ¬¦  «         t          j        |¦  «         dS |                     d¦  «        }|s-t          j	        d| ¦  «        }|st          j        |¦  «         dS t          j        |¦  «        }|d	k    r|nd	\  }}|}|�:|�8t          j        d
d|t          j        ¬¦  «                             ¦   «         }|s|}t!          |||||                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        | |                     d¦  «        d¬¦  «        }	|	rÝd|	v rÙd|	v rÕ|	d         }
|	d         }|                     d|¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        dœ}t#          j        |
|| ||¦  «         dS t          j        |¦  «         dS )u‡   
    WRAPPER: TenkÃ½ wrapper pro centrÃ¡lnÃ­ funkci search_and_select_series_file.
    PouÅ¾Ã­vÃ¡ se z menu doplÅˆku pÅ™es router.
    Úmovie_playing_from_searchÚtrueÚfalsez_[plugin.video.milionar] perform_search_and_display: Series playback ended, preventing re-searchr:   Nr'   r	   ©NNz\s+S\d+E\d+.*)ÚflagsÚ	tmdb_plotÚ
tmdb_thumbÚtmdb_fanartÚtmdb_ratingÚ
tmdb_genreÚtmdb_directorÚtmdb_runtimeÚtmdb_idF)Úsearch_queryÚseries_nameÚseasonÚepisodeÚplotÚposterÚfanartr   ÚgenreÚdirectorÚruntimer   rb   Úfrom_libraryr-   ÚnameÚ
tmdb_title)ro   r[   r\   r]   r^   r_   r`   ra   )Ú
getSettingÚ
setSettingr   r   r   Ú
xbmcpluginÚendOfDirectoryÚgetÚuiÚaskr   Úextract_season_episoderD   ÚsubrE   ÚstripÚsearch_and_select_series_filer<   Úresolve_playable_item)r   ÚparamsÚhandlerV   r'   Ús_ere   rf   rd   Úselected_filer-   rn   Úparams_dicts                r    Úperform_search_and_displayr�   w   sã  € ð !&× 0Ò 0Ð1LÑ MÔ MÐØ  FÒ*Ð*Ø×ÒÐ4°gÑ>Ô>Ð>ÝŒÐrÕz~ô  {Gð  	Hñ  	Hô  	Hð  	HÝÔ! &Ñ)Ô)Ð)Øˆð �:Š:�fÑÔ€DØð ÝŒv�b˜%Ñ Ô ˆØð 	ÝÔ% fÑ-Ô-Ð-ØˆFõ Ô
& tÑ
,Ô
,€CØ  LÒ0Ð0�c�c°l�O€FˆGð €KØÐ˜gÐ1å”fÐ-¨r°4½r¼}ÐMÑMÔM×SÒSÑUÔUˆàð 	ØˆKõ 2ØØØØØ�ZŠZ˜ RÑ(Ô(Ø�zŠz˜,¨Ñ+Ô+Ø�zŠz˜-¨Ñ,Ô,Ø�zŠz˜-¨Ñ,Ô,Ø�jŠj˜ rÑ*Ô*Ø—’˜O¨RÑ0Ô0Ø—
’
˜>¨2Ñ.Ô.ØØ—
’
˜9Ñ%Ô%Øðñ ô €Mð$ ð ˜ MÐ1Ð1°fÀÐ6MÐ6MØ˜gÔ&ˆØ˜VÔ$ˆð !Ÿ*š* \°4Ñ8Ô8ØŸš K°Ñ4Ô4Ø Ÿ*š* \°2Ñ6Ô6Ø!Ÿ:š: m°RÑ8Ô8Ø!Ÿ:š: m°RÑ8Ô8Ø Ÿ*š* \°2Ñ6Ô6Ø#ŸZšZ¨¸Ñ<Ô<Ø"ŸJšJ ~°rÑ:Ô:ð	
ð 	
ˆõ 	Ô*¨5°$¸¸{ÈFÑSÔSÐSØˆõ Ô˜fÑ%Ô%Ð%Ð%Ð%r"   c                 óà  — | d         }t          | d         ¦  «        }t          | d         ¦  «        }|                      dd¦  «        }	 |                      d¦  «        }t          |pd¦  «                             ¦   «         s0ddlm} |                     ||                      d	d¦  «        ¦  «        }t          |pd¦  «                             ¦   «         r`|                      d
¦  «        sKddlm}	 |	                     |ddt          |¦  «        t          |¦  «        t          |¦  «        dœ¦  «         dS n:# t          $ r-}
t          j        d|
› �t          j        ¬¦  «         Y d}
~
nd}
~
ww xY w|› d|d›d|d›�}t          j        d|› d|› d�t          j        ¬¦  «         |                     d¦  «        }|                     d¦  «        }|r|st          j        |¦  «         dS t#          ||||||                      dd¦  «        |                      dd¦  «        |                      dd¦  «        |                      dd¦  «        |                      dd¦  «        |                      d	d¦  «        |                      dd¦  «        ||                      d¦  «        |                      dd¦  «        ¬ ¦  «        }|�r±d!|v �r®|d!         }|d"         }|                     d#d$¦  «        }|r|d%|› �k    r|› d&|› �}n|› d|d›d|d›�}||                      dd¦  «        |                      dd¦  «        |||d'œ}t          j        d(|› �t          j        ¬¦  «         	 ||p	d)|d›d|d›�|                      d	d¦  «        |                      dd¦  «        |                      dd¦  «        d*|                      d¦  «        |||                      dd¦  «        |                      dd¦  «        d+œ}t          j        ||¦  «         n:# t          $ r-}
t          j        d,|
› �t          j        ¬¦  «         Y d}
~
nd}
~
ww xY w|d-k    rt)          ||||¦  «         nt+          j        |||||¦  «         dS dS dS ).u’   
    WRAPPER: TenkÃ½ wrapper pro centrÃ¡lnÃ­ funkci search_and_select_series_file.
    PouÅ¾Ã­vÃ¡ se z TMDb/knihovny pro specifickÃ© epizody.
    rd   re   rf   Úep_namer	   rb   r   )ÚidsÚ	tmdb_yearÚmytv_channel_id)ÚresolverÚmplay)ÚactionÚtypeÚtmdbÚsr5   NzN[plugin.video.milionar] tracked episode play unavailable, using the old path: r:   ú SÚ02dÚEz@[plugin.video.milionar] search_and_handle_episode: series_name='z
', Query='r9   ÚwsuserÚwspassr[   r\   r]   r^   r_   ra   Útmdb_episode_thumb)rc   rd   re   rf   rƒ   rg   rh   ri   r   rj   Úyearrl   r   rb   Úepisode_thumbr-   rn   Úproviderr   zEpizoda u    â€“ )ro   r[   r\   Útmdb_seasonÚtmdb_episodeÚtmdb_series_namezL[plugin.video.milionar] search_and_handle_episode: Resolving playable item: ÚSÚseries)ÚtitleÚepisode_titler“   rh   r   Ú
media_typerb   re   rf   rg   rj   z[[plugin.video.milionar] Error saving recently played episode in search_and_handle_episode: r   )Úintrt   ÚstrÚisdigitÚwcs.library2r„   Úseries_id_by_namer‡   ÚrunÚ	Exceptionr   r   Ú
LOGWARNINGr   rp   r   Úcheck_providers_and_promptÚ'_internal_search_and_select_series_fileÚadd_recently_played_itemÚLOGERRORÚ_resolve_via_kraskar<   r{   )r|   r   r}   rd   re   rf   rƒ   rb   r„   r‡   r5   Ú
search_strÚws_userÚws_passr   r-   rn   r•   Údisplay_titler€   Ú	item_datas                        r    Úsearch_and_handle_episoder°   Â   s›  € ð
 ˜Ô'€KÝ�˜Ô!Ñ"Ô"€FÝ�&˜Ô#Ñ$Ô$€GØ�jŠj˜ BÑ'Ô'€Gð
~Ø—*’*˜YÑ'Ô'ˆÝ�7�=˜bÑ!Ô!×)Ò)Ñ+Ô+ð 	VØ(Ð(Ð(Ð(Ð(Ð(Ø×+Ò+¨K¸¿ºÀKÐQSÑ9TÔ9TÑUÔUˆGÝˆwˆ}˜"ÑÔ×%Ò%Ñ'Ô'ð 	°·
²
Ð;LÑ0MÔ0Mð 	Ø-Ð-Ð-Ð-Ð-Ð-Ø�LŠL˜¨G¸YÕPSÐT[ÑP\ÔP\ÕcfÐgmÑcnÔcnÕuxð  zAñ  vBô  vBð  "Cð  "Cñ  Dô  Dð  DØˆFøøÝð ~ð ~ð ~ÝŒÐeÐbcÐeÐeÕmqÔm|Ð}Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}øøøøð~øøøð  Ð=Ð= 6Ð=Ð=Ð=°Ð=Ð=Ð=€Jõ 	„HÐtÐP[ÐtÐtÐgqÐtÐtÐtõ  }Aô  }Ið  Jñ  Jô  Jð  Jð ×Ò˜xÑ(Ô(€GØ×Ò˜xÑ(Ô(€Gàð ˜'ð ÝÔ,¨UÑ3Ô3Ð3Øˆõ <ØØØØØØ�ZŠZ˜ RÑ(Ô(Ø�zŠz˜,¨Ñ+Ô+Ø�zŠz˜-¨Ñ,Ô,Ø�zŠz˜-¨Ñ,Ô,Ø�jŠj˜ rÑ*Ô*Ø�ZŠZ˜ RÑ(Ô(Ø—
’
˜>¨2Ñ.Ô.ØØ—
’
˜9Ñ%Ô%Ø—j’jÐ!5°rÑ:Ô:ðñ ô €Mð$ ñ /˜ MÐ1Ñ1Ø˜gÔ&ˆØ˜VÔ$ˆØ ×$Ò$ Z°Ñ<Ô<ˆð ð 	I�wÐ"6¨WÐ"6Ð"6Ò6Ð6Ø*Ð:Ð:°Ð:Ð:ˆMˆMà*ÐHÐH¨fÐHÐHÐH¸7ÐHÐHÐHˆMð (ØŸš K°Ñ4Ô4Ø Ÿ*š* \°2Ñ6Ô6Ø!Ø#Ø +ð
ð 
ˆõ 	ŒÐfÐ`dÐfÐfÕnrÔnzÐ{Ñ{Ô{Ð{ð	Mà%Ø")Ð"KÐ-K°Ð-KÐ-KÐ-K¸gÐ-KÐ-KÐ-KØŸš K°Ñ4Ô4Ø!Ÿ:š: l°BÑ7Ô7Ø!Ÿ:š: m°RÑ8Ô8Ø'Ø"ŸJšJ yÑ1Ô1Ø!Ø#ØŸš K°Ñ4Ô4Ø Ÿ*š* \°2Ñ6Ô6ðð ˆYõ Ô/°°yÑAÔAÐAÐAøÝð 	Mð 	Mð 	MÝŒHÐvÐstÐvÐvõ  Cô  Lð  Mñ  Mô  Mð  Mð  Mð  Mð  Mð  Mð  Møøøøð	Møøøð �xÒÐÝ  t¨U°FÑ;Ô;Ð;Ð;åÔ.¨u°d¸EÀ;ÐPVÑWÔWÐWØˆð_/ð /Ð1Ð1s2   Á
C)D6 Ä6
E-Å #E(Å(E-ÍB$O? Ï?
P6Ð	#P1Ð1P6c                 óŠ  — 	 ddl m} ddlm} |                     | |¦  «        }|s[t          j        ¦   «                              ddt
          j        ¦  «         t          j
        |dt          j        ¦   «         ¦  «         dS |                     ||¦  «        }|s[t          j        ¦   «                              ddt
          j        ¦  «         t          j
        |dt          j        ¦   «         ¦  «         dS t          j        |¬	¦  «        }|                     d
d|i¦  «         t          j
        |d|¦  «         dS # t          $ r}	ddl}
|
                     ¦   «          t          j        ¦   «                              dd|	› �t
          j        ¦  «         t          j
        |dt          j        ¦   «         ¦  «         Y d}	~	dS d}	~	ww xY w)uu   
    Resolve a pÅ™ehrÃ¡nÃ­ streamu pÅ™es KRA.sk.
    provider_path je cesta k SC endpointu pro zÃ­skÃ¡nÃ­ ident.
    r   ©ÚSCClient)ÚKraskaClientúKRA.sku   NepodaÅ™ilo se zÃ­skat streamFNu"   NepodaÅ™ilo se zÃ­skat URL streamu)Úpathr
   r›   TzChyba: )Úwcs.streamcinemar³   Ú
wcs.kraskar´   Ú	get_identÚxbmcguiÚDialogÚnotificationÚNOTIFICATION_ERRORrr   ÚsetResolvedUrlÚListItemÚresolveÚsetInfor¤   Ú	tracebackÚ	print_exc)Úprovider_pathrn   r   r}   r³   Ú
kraska_apiÚ
real_identÚ
stream_urlÚlir5   rÂ   s              r    rª   rª   .  sî  € ð%EØ-Ð-Ð-Ð-Ð-Ð-Ø9Ð9Ð9Ð9Ð9Ð9ð ×'Ò'¨°uÑ=Ô=ˆ
àð 	ÝŒNÑÔ×)Ò)ØØ/ÝÔ*ñô ð õ
 Ô% f¨eµWÔ5EÑ5GÔ5GÑHÔHÐHØˆFð  ×'Ò'¨
°EÑ:Ô:ˆ
àð 	ÝŒNÑÔ×)Ò)ØØ4ÝÔ*ñô ð õ
 Ô% f¨eµWÔ5EÑ5GÔ5GÑHÔHÐHØˆFõ Ô :Ð.Ñ.Ô.ˆØ
�
Š
�7˜W d˜OÑ,Ô,Ð,ÝÔ! &¨$°Ñ3Ô3Ð3Ð3Ð3øåð Eð Eð EØÐÐÐØ×ÒÑÔÐÝŒÑÔ×%Ò% h°¸!°°½wÔ?YÑZÔZÐZÝÔ! &¨%µÔ1AÑ1CÔ1CÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs'   ‚A=D9 ÂA1D9 Ã4AD9 Ä9
GÅA4F=Æ=Gc           	      ó´  — t          j        |d„ ¦  «        }|sg S | g}|�.|�,|r*|                     |› d|d›d|d›�|› d|› d|d›�g¦  «         t          t                               |¦  «        ¦  «        }i }|D ]?}t          |||¦  «        }	|	                     ¦   «         D ]\  }
}|
|vr
d|d	<   |||
<   Œ|r nŒ@t          |                     ¦   «         ¦  «        S )
uL   
    VyhledÃ¡vÃ¡nÃ­ pÅ™es Webshare API.
    Returns: list of file dicts
    c                 ó(   — t          j        | |fi |¤ŽS )N)ru   Úpopinfo)ÚmsgÚheadingÚkwargss      r    ú<lambda>z&_search_via_webshare.<locals>.<lambda>d  s   € Í"Ì*ÐUXÐZaÐJlÐJlÐekÐJlÐJl€ r"   Nr�   rŽ   r�   ú Úxr   r•   )	r<   Ú
revalidateÚextendÚlistÚdictÚfromkeysrT   ÚitemsÚvalues)rc   rd   re   rf   r   rK   ÚqueriesrM   rJ   Úfound_filesr-   Ú	file_datas               r    Ú_search_via_websharerÜ   ^  sE  € õ Ô# EÐ+lÐ+lÑmÔm€EØð Øˆ	àˆn€GØÐ˜gÐ1Øð 	Ø�NŠNØÐ<Ð< &Ð<Ð<Ð<¨wÐ<Ð<Ð<ØÐ7Ð7 Ð7Ð7¨'Ð7Ð7Ð7ðñ ô ð õ •4—=’= Ñ)Ô)Ñ*Ô*€Gà€Iàð ð ˆÝ3°E¸5À%ÑHÔHˆØ +× 1Ò 1Ñ 3Ô 3ð 	-ð 	-ÑˆE�9Ø˜IÐ%Ð%Ø(2�	˜*Ñ%Ø#,�	˜%Ñ øØð 	ØˆEð	õ �	× Ò Ñ"Ô"Ñ#Ô#Ð#r"   c                 ó(  — 	 ddl m} |                     |¦  «        s˜|                     d¦  «        }|rM|                     ||¦  «        }|s4t          j        ¦   «                              ddt
          j        ¦  «         g S n4t          j        ¦   «                              ddt
          j	        ¦  «         g S |r|n| }| 
                    ||¦  «        }	|	sg S g }
|	D �]†}|                     d¦  «        }|sŒ|                     ||¦  «        }|D �]Q}|                     dd	¦  «                             ¦   «         d
k    rŒ0|                     di ¦  «        }	 t          |                     dd¦  «        pd¦  «        }n# t          t           f$ r d}Y nw xY w|                     dd	¦  «        }	 t          |                     dd¦  «        pd¦  «        }n# t          t           f$ r d}Y nw xY w|                     dd	¦  «        }d	}|dk    rd}n8|dk    rd}n/|dk    rd}n&|dk    rd}n|dk    rd}n|dk    rd}n|dk    rd}nd}|rd|d›�nd	}|rd|d›�nd	}|s|r|› |› �nd	}|r
|r|› d|› �}n	|r|}n|pd }|g}|r|                     |¦  «         |r|                     |¦  «         |r|                     |¦  «         d!                     |¦  «        d"z   }||                     dd	¦  «        ||                     d#d¦  «        |                     d$d¦  «        d
||d%œ}|
                     |¦  «         t'          j        d&|› d'|› d(|› d)|› �t&          j        ¦  «         �ŒS�Œˆ|
S # t,          $ r$}dd*l}|                     ¦   «          g cY d*}~S d*}~ww xY w)+u~   
    VyhledÃ¡vÃ¡nÃ­ pÅ™es Stream Cinema API (pro KRA.sk provider).
    Returns: list of file dicts (Webshare-like format)
    r   r²   Úkraska_tokenrµ   u)   NepodaÅ™ilo se pÅ™ipojit ke Stream Cinemau   Nejprve se pÅ™ihlaste ke KRA.skÚurlr•   r	   r   Ústream_infoÚbitrateÚlangÚsizer›   é N  Ú4Ki@  Ú1080pé   Ú720péÐ  Ú480pì        l        l        ÚSDr™   rŽ   r�   z - ÚUnknownú.ú.mkvÚpositive_votesÚnegative_votes)rn   r-   rã   rð   rñ   r•   rá   râ   z[SeriesSearch] KRA.sk stream: z
, bitrate=z, lang=z, size=N)r·   r³   Úis_authenticatedrp   Úget_auth_tokenrº   r»   r¼   r½   ÚNOTIFICATION_WARNINGÚsearch_seriesrt   Úget_streamsÚlowerrž   Ú
ValueErrorÚ	TypeErrorr   Újoinr   r   r   r¤   rÂ   rÃ   )rc   rd   re   rf   r   r³   rÞ   Úsc_tokenÚsc_queryr×   Ú
file_itemsÚitemÚplay_urlÚstreamsÚstreamrà   rá   râ   rã   rœ   Úquality_tagÚ
season_strÚepisode_strÚse_tagÚ	base_nameÚpartsÚ
clean_nameÚ	file_itemr5   rÂ   s                                 r    Ú_search_via_kraskar
    s  € ðCØ-Ð-Ð-Ð-Ð-Ð-ð ×(Ò(¨Ñ/Ô/ð 	à ×+Ò+¨NÑ;Ô;ˆLàð Ø#×2Ò2°5¸,ÑGÔG�Øð Ý”NÑ$Ô$×1Ò1Ø ØCÝÔ2ñô ð ð
 �Iðõ ”Ñ Ô ×-Ò-ØØ5ÝÔ0ñô ð ð
 �	ð #.Ð?�;�;°<ˆð ×&Ò& x°Ñ7Ô7ˆàð 	ØˆIð ˆ
Øð V	Cñ V	CˆDØ—x’x ‘”ˆHØð Øà×*Ò*¨8°UÑ;Ô;ˆGà!ð OCñ OC�Ø—:’:˜j¨"Ñ-Ô-×3Ò3Ñ5Ô5¸ÒAÐAØà$Ÿjšj¨¸Ñ;Ô;�ð Ý! &§*¢*¨Y¸Ñ":Ô":Ð"?¸aÑ@Ô@�G�GøÝ"¥IÐ.ð  ð  ð  Ø�G�G�Gð øøøà—z’z &¨"Ñ-Ô-�ðÝ˜{Ÿš¨v°qÑ9Ô9Ð>¸QÑ?Ô?�D�DøÝ"¥IÐ.ð ð ð Ø�D�D�Dðøøøð !%§¢¨°"Ñ 5Ô 5�ð !�Ø˜eÒ#Ð#Ø"&�K�KØ ’_�_Ø")�K�KØ ’_�_Ø"(�K�KØ ’_�_Ø"(�K�Kð ˜|Ò+Ð+Ø&*˜˜Ø Ò,Ð,Ø&-˜˜Ø Ò,Ð,Ø&,˜˜à&*˜ð 28Ð?Ð- Ð-Ð-Ð-Ð-¸R�
Ø3:ÐBÐ/ 'Ð/Ð/Ð/Ð/À�Ø:@ÐTÀGÐT˜JÐ5¨Ð5Ð5Ð5ÐRT�ð !ð ; [ð ;à#.Ð BÐ B°=Ð BÐ B�I�IØ ð ;Ø +�I�Ià -Ð :°�Ið #˜�Øð )Ø—L’L Ñ(Ô(Ð(Øð .Ø—L’L Ñ-Ô-Ð-Øð 'Ø—L’L Ñ&Ô&Ð&à ŸXšX e™_œ_¨vÑ5�
ð 'Ø#ŸZšZ¨¨rÑ2Ô2Ø Ø&1§o¢oÐ6FÈÑ&JÔ&JØ&1§o¢oÐ6FÈÑ&JÔ&JØ (à&Ø ð
ð 
�	ð ×!Ò! )Ñ,Ô,Ð,Ý”Ðs¸*ÐsÐsÐPWÐsÐsÐ`dÐsÐsÐmqÐsÐsÕuyô  vBñ  Cô  Cð  Cñ  Cñ_OCðb Ðøåð ð ð ØÐÐÐØ×ÒÑÔÐØˆ	ˆ	ˆ	ˆ	ˆ	ˆ	øøøøðøøøsz   ‚A=M# Â 4M# Â5M# ÃA=M# Å%E9Å8M# Å9FÆM# ÆFÆM# Æ)%GÇM# ÇG%Ç"M# Ç$G%Ç%E=M# Í#
NÍ-NÎNÎNr	   Fc                 ó4  — |st          j        ¦   «         }t          |¦  «        }|set          j        ¦   «         }|                     |                     d¦  «        |                     d¦  «        ¦  «        r|                     ¦   «          dS 	 g }d|v rXt          | ||||¦  «        }| 	                    |¦  «         t          j        dt          |¦  «        › d�t          j        ¦  «         d|v rXt          | ||||¦  «        }| 	                    |¦  «         t          j        dt          |¦  «        › d�t          j        ¦  «         |s.t          j        d	| › d
�|                     d¦  «        ¦  «         dS ddlm} |�9|�7|                     d|p| gt+          |¦  «        t+          |¦  «        ¬¦  «        }n|                     d| g¦  «        }|                     ||¦  «        }|rŠ|                     d¦  «        }|rQ|                     |¦  «        }t          j        d|r|                     d¦  «        nd› �t          j        ¬¦  «         |S t          j        dt          j        ¬¦  «         dS ddlm} |p| } |d+i d| “d|“d|“d|“d|“d|“d|	“d|
“d|“d|“d |“d!d"“d#| r|p|                      ¦   «         d         nd$“d%|“d&|“d'|“d(|“d)|“Ž}|S # t:          $ r6}t          j        d*|› �|                     d¦  «        ¦  «         Y d}~dS d}~ww xY w),uz   
    INTERNÃ� funkce pro vyhledÃ¡vÃ¡nÃ­ seriÃ¡lÅ¯ - bez callback logiky.
    Podporuje Webshare i KRA.sk/SC provider.
    i
�  i�  Nr   z[SeriesSearch] Webshare: found z filesr   z[SeriesSearch] KRA.sk: found u&   Nebyly nalezeny Å¾Ã¡dnÃ© soubory pro 'r9   rn   r   )Úrankingrf   )re   rf   ÚanyÚautoplay_enabled_globalz1[plugin.video.milionar] Autoplay request: picked r:   z^[plugin.video.milionar] Autoplay request: Autoplay disabled globally, not playing next episode)Úshow_search_dialogrc   Úmovie_titleÚ
movie_yearÚ
poster_urlÚ
fanart_urlr   rj   rk   rl   rg   Úsearch_resultsÚ
is_episodeTrd   r	   Úseason_numberÚepisode_numberrœ   rb   r”   u   Chyba pÅ™i vyhledÃ¡vÃ¡nÃ­: r/   )Ú	xbmcaddonÚAddonr!   rº   r»   ÚyesnoÚgetLocalizedStringÚopenSettingsrÜ   rÓ   r   r   rH   r   r
  ru   rË   ÚgetAddonInfoÚ
wcs.searchr  Úmake_targetrž   Úrankr   Úpickrt   Úwcs.ui.dialogs.DialogWcsSearchr  Úsplitr¤   )rc   rd   re   rf   rƒ   rg   rh   ri   r   rj   rk   rl   r“   r   rb   rm   Úautoplay_requestr”   Úenabled_providersÚdialogÚfilesÚws_filesÚkr_filesr  Útargetr  Úpickedr  r  r   r5   s                                  r    r§   r§     sU  € ð
 ð "Ý”Ñ!Ô!ˆõ /¨uÑ5Ô5Ðð ð Ý”Ñ!Ô!ˆØ�<Š<Ø×$Ò$ UÑ+Ô+Ø×$Ò$ UÑ+Ô+ñ
ô 
ð 	!ð ×ÒÑ Ô Ð ØˆtðCØˆð Ð*Ð*Ð*Ý+¨L¸+ÀvÈwÐX]Ñ^Ô^ˆHØ�LŠL˜Ñ"Ô"Ð"ÝŒHÐLµs¸8±}´}ÐLÐLÐLÍdÌlÑ[Ô[Ð[àÐ(Ð(Ð(Ý)¨,¸ÀVÈWÐV[Ñ\Ô\ˆHØ�LŠL˜Ñ"Ô"Ð"ÝŒHÐJµS¸±]´]ÐJÐJÐJÍDÌLÑYÔYÐYð ð 	ÝŒJÐOÀÐOÐOÐOÐQV×QcÒQcÐdjÑQkÔQkÑlÔlÐlØ�4ð 	'Ð&Ð&Ð&Ð&Ð&ØÐ 'Ð"5Ø×(Ò(¨°[Ð5PÀLÐ4QÕZ]Ð^dÑZeÔZeÕorÐszÑo{Ôo{Ð(Ñ|Ô|ˆFˆFà×(Ò(¨°°Ñ?Ô?ˆFØ—’˜U FÑ+Ô+ˆàð 	Ø&+×&:Ò&:Ð;TÑ&UÔ&UÐ#Ø&ð Ø Ÿš eÑ,Ô,�Ý”ÐuÐciÐMsÈVÏZÊZÐX^ÑM_ÔM_ÐM_ÐosÐuÐuõ  ~Bô  ~Jð  Kñ  Kô  Kð  KØ�å”Ðzõ  CGô  COð  Pñ  Pô  Pð  PØ�tàEÐEÐEÐEÐEÐEð "Ð1 \ˆà*Ð*ð 
ð 
ð 
Ø%˜ð
à#˜ð
ð �tð
ð �vð	
ð
 �vð
ð �6ð
ð �%ð
ð �Xð
ð �Gð
ð �ð
ð !˜5ð
ð �tð
ð COÐV˜Ð> |×'9Ò'9Ñ';Ô';¸AÔ'>øÐTVøð
ð !˜&ð
ð #˜7ð
ð  "˜'ð!
ð" �Gð#
ð$ (˜-ð%
ˆð* Ðøåð ð ð Ý
Œ
Ð4°Ð4Ð4°e×6HÒ6HÈÑ6PÔ6PÑQÔQÐQØˆtˆtˆtˆtˆtøøøøðøøøs-   ÂC(K Å7CK É K É1A%K Ë
LË!+LÌLc                 óð   — |st          j        ¦   «         }|                     d¦  «        }|                     d¦  «        }|r|st          j        |¦  «         dS t          | |||||||||	|
|||||¦  «        S )uV  
    CENTRÃ�LNÃ� funkce pro vyhledÃ¡vÃ¡nÃ­ a vÃ½bÄ›r souboru seriÃ¡lu.
    PouÅ¾Ã­vÃ¡ se ze vÅ¡ech mÃ­st - menu doplÅˆku, knihovny, TMDb.
    
    Args:
        search_query (str): Dotaz pro vyhledÃ¡vÃ¡nÃ­ na Webshare
        series_name (str): NÃ¡zev seriÃ¡lu
        season (int): ÄŒÃ­slo sezÃ³ny
        episode (int): ÄŒÃ­slo epizody
        ep_name (str): NÃ¡zev epizody
        plot (str): Popis
        poster (str): URL obrÃ¡zku
        fanart (str): URL fanart
        rating (str): HodnocenÃ­
        genre (str): Å½Ã¡nr
        director (str): ReÅ¾isÃ©r
        runtime (str): DÃ©lka
        addon: Instance addonu
        tmdb_id (int): TMDb ID
        from_library (bool): VolÃ¡ se z knihovny Kodi
        autoplay_request (bool): Zda se jednÃ¡ o autoplay poÅ¾adavek
        
    Returns:
        dict or None: VybranÃ½ soubor nebo None
    r�   r‘   N)r  r  rp   r   r¦   r§   )rc   rd   re   rf   rƒ   rg   rh   ri   r   rj   rk   rl   r   rb   rm   r$  r¬   r­   s                     r    rz   rz   h  s­   € ð4 ð "Ý”Ñ!Ô!ˆð ×Ò˜xÑ(Ô(€GØ×Ò˜xÑ(Ô(€Gàð ˜'ð ÝÔ,¨UÑ3Ô3Ð3Øˆtå2Ø�k 6¨7°G¸TÀ6È6ÐSYÐ[`ÐbjÐlsÐuzð  }Dð  FRð  Tdñô ð r"   c                 ól   ‡‡— t          j        ‰¦  «        Šˆˆfd„}|                      |d¬¦  «         | S )u  
    SeÅ™adÃ­ soubory seriÃ¡lÅ¯ podle pokroÄ�ilÃ©ho skÃ³rovÃ¡nÃ­ s prioritami pro SD soubory.
    
    Args:
        files (list): Seznam Webshare souborÅ¯
        query (str): VyhledÃ¡vacÃ­ dotaz
        
    Returns:
        list: SeÅ™azenÃ© soubory (nejlepÅ¡Ã­ prvnÃ­)
    c                 óž   •— |                       dd¦  «        }t          |¦  «        }|dk    rt          | ‰‰¦  «        S t          | ‰‰¦  «        S )z&Wrapper pro _score_search_item funkci.rn   r	   rì   )rt   r   Ú!_score_no_quality_item_standaloneÚ_score_search_item_standalone)rþ   ÚfilenameÚdetected_qualityrJ   r~   s      €€r    Ú_score_search_item_wrapperzAsort_series_files_by_priority.<locals>._score_search_item_wrapper¡  sW   ø€ à—8’8˜F BÑ'Ô'ˆÝ*¨8Ñ4Ô4Ðð ˜tÒ#Ð#Ý4°T¸5À#ÑFÔFÐFõ -¨T°5¸#Ñ>Ô>Ð>r"   T)ÚkeyÚreverse)r   rw   Úsort)r'  rJ   r3  r~   s    ` @r    Úsort_series_files_by_priorityr7  “  sR   øø€ õ Ô
& uÑ
-Ô
-€Cð
?ð 
?ð 
?ð 
?ð 
?ð 
?ð 
‡J‚JÐ-°t€JÑ<Ô<Ð<Ø€Lr"   c                 ód  — ddl m}  || |¦  «        }d}|                      dd¦  «        }|                     ¦   «         }d}|dk    rt	          j        |¦  «        }	|	|k    r|dz  }|dk    ra|                     ¦   «         }
t          |
¦  «        dk    r:d	                     |
dd
…         ¦  «                             ¦   «         }|r	||v r|dz  }||z   |z   }dd
l	}t          |                     |                     ¦   «         ¦  «                             ¦   «         d
d…         d¦  «        }|dz  }||z   S )u’   
    PokroÄ�ilÃ© skÃ³rovÃ¡nÃ­ pro seriÃ¡ly kombinujÃ­cÃ­ kvalitu s logikou pro epizody.
    PouÅ¾Ã­vÃ¡ se pro soubory s detekovanou kvalitou.
    r   )Úcalculate_advanced_scorerä   rn   r	   rY   ré   é   rÐ   Néô  é   é   ç    „×—A)Ú	wcs.utilsr9  rt   r÷   r   rw   r#  rH   rú   Úhashlibrž   Úmd5ÚencodeÚ	hexdigest)rþ   Úoriginal_queryÚseason_episode_tupler9  Úbase_advanced_scoreÚquality_detected_bonusr1  rn   Úepisode_bonusÚs_e_itemr  Úep_name_queryÚfinal_scorer@  Úfilename_hashÚunique_scores                   r    r0  r0  ±  sg  € ð 3Ð2Ð2Ð2Ð2Ð2Ø2Ð2°4¸ÑHÔHÐð #Ðð �xŠx˜ Ñ#Ô#€HØ�>Š>ÑÔ€DØ€Mð ˜|Ò+Ð+ÝÔ/°Ñ5Ô5ˆØÐ+Ò+Ð+Ø˜TÑ!ˆMð ˜|Ò+Ð+Ø×$Ò$Ñ&Ô&ˆÝˆu‰:Œ:˜Š>ˆ>ØŸHšH U¨1¨2¨2¤YÑ/Ô/×5Ò5Ñ7Ô7ˆMØð % °$Ð!6Ð!6Ø Ñ$�ð )Ð+>Ñ>ÀÑN€Kð €N€N€NÝ˜Ÿš H§O¢OÑ$5Ô$5Ñ6Ô6×@Ò@ÑBÔBÀ2ÀAÀ2ÔFÈÑKÔK€MØ  ;Ñ.€Là˜Ñ%Ð%r"   c                 óÜ  — |                       dd¦  «        }|                     ¦   «         }|                     ¦   «         }d}||v rd}n:t          t          j        d||¦  «                             ¦   «         dz  ¦  «        }|}d}|                     d¦  «        rd}nd}d}	t          j        d	|¦  «        rd
}	nHd|v rd}	nAd|v sd|v rd}	n6t          j        d|¦  «        rd}	nd|v st          j        d|¦  «        rd}	nd}	d}
	 t          |                       dd¦  «        ¦  «        }|dk    r/|dk    rd}
n&|dk    rd}
n|dk    rd}
n|dk    rd}
n|dk    rd}
nd}
n# t          t          f$ r d}
Y nw xY wd}|d k    rt          j        |¦  «        }||k    r|dz  }|d k    ra|                     ¦   «         }t          |¦  «        d!k    r:d"                     |d!d…         ¦  «                             ¦   «         }|r	||v r|d#z  }||z   |	z   |
z   |z   }ddl}t          |                     |                     ¦   «         ¦  «                             ¦   «         dd$…         d%¦  «        }|d&z  }||z   S )'u•   
    SpeciÃ¡lnÃ­ skÃ³rovÃ¡nÃ­ pro soubory bez detekovanÃ© kvality v nÃ¡zvu.
    Priorita: 1. MKV formÃ¡t, 2. Ä�eskÃ¡ Å™eÄ�, 3. velikost souboru.
    rn   r	   r   iè  Ni¼  rï   i'  zcz.*dabing|czech.*dubiˆ  Úmultidubrç   Úczenzcz-engi¬  z\bcz\b|\.cz\.|\.cz$i¸  Úslovakz\bsk\bré   rã   l       2 l        i   rë   iX  l        i�  l        éÈ   éd   rY   r:  rÐ   r;  r<  r=  r>  )rt   r÷   rž   ÚdifflibÚSequenceMatcherÚratioÚendswithrD   r&   rø   rù   r   rw   r#  rH   rú   r@  rA  rB  rC  )rþ   rD  rE  r1  rn   Úquery_lowerÚ
base_scoreÚsimilarity_scoreÚformat_scoreÚcz_scoreÚ
size_scoreÚ
size_bytesrH  rI  r  rJ  rK  r@  rL  rM  s                       r    r/  r/  Ü  s  € ð
 �xŠx˜ Ñ#Ô#€HØ�>Š>ÑÔ€DØ ×&Ò&Ñ(Ô(€Kð €JØ�dÐÐØˆ
ˆ
å�wÔ6°t¸[È$ÑOÔO×UÒUÑWÔWÐZ]Ñ]Ñ^Ô^ÐØ%ˆ
ð €LØ‡}‚}�VÑÔð Øˆˆàˆð €HÝ	„yÐ)¨4Ñ0Ô0ð ØˆˆØ	�tÐ	Ð	ØˆˆØ	�4ˆˆ˜8 tÐ+Ð+ØˆˆÝ	ŒÐ)¨4Ñ	0Ô	0ð ØˆˆØ	�TÐ	Ð	�RœY y°$Ñ7Ô7Ð	Øˆˆàˆð €JðÝ˜Ÿš &¨!Ñ,Ô,Ñ-Ô-ˆ
Ø˜Š>ˆ>à˜\Ò)Ð)Ø!�
�
Ø˜|Ò+Ð+Ø �
�
Ø˜|Ò+Ð+Ø �
�
Ø˜{Ò*Ð*Ø �
�
Ø˜{Ò*Ð*Ø �
�
à �
øøÝ�	Ð"ð ð ð Øˆ
ˆ
ˆ
ðøøøð €Mð ˜|Ò+Ð+ÝÔ/°Ñ5Ô5ˆØÐ+Ò+Ð+Ø˜TÑ!ˆMð ˜|Ò+Ð+Ø×$Ò$Ñ&Ô&ˆÝˆu‰:Œ:˜Š>ˆ>ØŸHšH U¨1¨2¨2¤YÑ/Ô/×5Ò5Ñ7Ô7ˆMØð % °$Ð!6Ð!6Ø Ñ$�ð ˜|Ñ+¨hÑ6¸ÑCÀmÑS€Kð €N€N€NÝ˜Ÿš H§O¢OÑ$5Ô$5Ñ6Ô6×@Ò@ÑBÔBÀ2ÀAÀ2ÔFÈÑKÔK€MØ  ;Ñ.€Là˜Ñ%Ð%s   ÄAE ÅE2Å1E2)r#   )r	   NNr	   r	   r	   r	   r	   r	   r	   r	   r	   NNFFr	   )r	   NNr	   r	   r	   r	   r	   r	   r	   r	   NNFF)&ÚsysrD   rT  Úxml.etree.ElementTreeÚetreeÚElementTreer>   Úurllib.parser   r  rr   rº   r   Úwcs.websharer   r<   Úwcs.uir   ru   Úwcsr   r   r?  r   Ú
CATEGORIESÚSORTSr!   rT   r�   r°   rª   rÜ   r
  r§   rz   r7  r0  r/  r/   r"   r    ú<module>ri     sÑ  ðð €
€
€
Ø 	€	€	€	Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø #Ð #Ð #Ð #Ð #Ð #à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø %Ð %Ð %Ð %Ð %Ð %ð KÐJÐJ€
Ø7Ð7Ð7€ðð ð ð Hð Hð Hð Hð\H&ð H&ð H&ðVgð gð gðX+Eð +Eð +Eð`$ð $ð $ðBIð Ið Ið\Yð Yð Yð Yðv'ð 'ð 'ð 'ðVð ð ð<)&ð )&ð )&ðVW&ð W&ð W&ð W&ð W&r"   