§
   «©‰df²”�ã                   óâ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ ej	        ¦   «          
                    d¦  «        Z ej        e¦  «        Ze j                             ed¦  «        Zg g g dœZd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze j                             ed¦  «        Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#e j                             ed¦  «        Z$d„ Z%d„ Z&d„ Z'e j                             ed¦  «        Z(d„ Z)d„ Z*d„ Z+d„ Z,e j                             ed ¦  «        Z-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d9d%„Z2d9d&„Z3e j                             ed'¦  «        Z4d(„ Z5d)„ Z6d*„ Z7d+„ Z8d:d,„Z9d-„ Z:e j                             ed.¦  «        Z;d/„ Z<d0„ Z=e j                             ed1¦  «        Z>d2„ Z?d3„ Z@e j                             ed4¦  «        ZAe j                             ed5¦  «        ZBd6„ ZCd7„ ZDd8„ ZEdS );é    NÚprofilezsearch_history.json©Ú	universalÚtmdbÚtvc                 ól  — g g g dœ}d}dD ]o}d|› �}|                       |¦  «        }|rQ	 t          j        |¦  «        }|r|||<   d}|                      |d¦  «         ŒS# t          t          j        f$ r Y Œkw xY wŒp|r7t          t          |¦  «         t          j	        dt          j
        ¬¦  «         |S dS )	zAMigruje historii hledani ze 3 oddelenyc settings do jednoho JSON.r   FÚsearch_history_TÚ zT[plugin.video.milionar] Migrated search history from settings to search_history.json©ÚlevelN)Ú
getSettingÚjsonÚloadsÚ
setSettingÚ
ValueErrorÚJSONDecodeErrorÚ_store_json_dataÚ_SEARCH_HISTORY_FILEÚxbmcÚlogÚLOGINFO)ÚaddonÚmigratedÚ
needs_saveÚkeyÚsetting_keyÚdataÚitemss          ú[/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/user_data.pyÚ%_migrate_search_history_from_settingsr       sú   € à¨°2Ð6Ð6€HØ€Jà*ð ð ˆØ-¨Ð-Ð-ˆØ×Ò Ñ,Ô,ˆØð 	ðÝœ
 4Ñ(Ô(�Øð 6Ø$)�H˜S‘MØ!%�JØ×$Ò$ [°"Ñ5Ô5Ð5øøÝ¥Ô 4Ð5ð ð ð Ø�ðøøøð	ð ð ÝÕ-¨xÑ8Ô8Ð8ÝŒÐgÕosÔo{Ð|Ñ|Ô|Ð|ØˆØˆ4s   ª3AÁA7Á6A7c                 óÎ   — t           j                             t          ¦  «        st	          | ¦  «        }|r|S t          t          d| t                               ¦   «         ¬¦  «        S )z6Nacte celou strukturu historie hledani z JSON souboru.N)Údefault_value)ÚosÚpathÚexistsr   r    Ú_load_json_dataÚ_SEARCH_HISTORY_DEFAULTÚcopy)r   r   s     r   Ú_load_search_history_allr)   0   s\   € õ Œ7�>Š>Õ.Ñ/Ô/ð Ý8¸Ñ?Ô?ˆØð 	ØˆOõ Õ/°°uÕLc×LhÒLhÑLjÔLjÐkÑkÔkÐkó    c                 ó0   — t          t          | ¦  «         dS )z7Ulozi celou strukturu historie hledani do JSON souboru.N)r   r   )r   s    r   Ú_store_search_history_allr,   ;   s   € åÕ)¨4Ñ0Ô0Ð0Ð0Ð0r*   c                 ó   — d| v rdS d| v rdS dS )u@   VracÃ­ klÃ­Ä� historie podle nÃ¡zvu souboru (pro kompatibilitu).r   r   r   © )Úsearch_history_files    r   Ú_get_history_keyr0   ?   s)   € àÐ)Ð)Ð)Øˆ{Ø	Ð&Ð	&Ð	&ØˆvØˆ4r*   c                 ó¢   — |                      d¦  «        r|                     dd¦  «        }t          | ¦  «        }|                     |g ¦  «        S )u2   NaÄ�te historii pro danÃ½ typ (universal/tmdb/tv).r	   r
   )Ú
startswithÚreplacer)   Úget©r   r   r   s      r   Úload_search_history_settingr6   G   sN   € ð ‡~‚~Ð'Ñ(Ô(ð 1Ø�kŠkÐ+¨RÑ0Ô0ˆÝ# EÑ*Ô*€DØ�8Š8�C˜ÑÔÐr*   c                 óN  — |sdS |                      d¦  «        r|                     dd¦  «        }t          | ¦  «        }|                     |g ¦  «        }||v r|                     |¦  «         |g|z   }t          |¦  «        |k    r
|d|…         }|||<   t          |¦  «         dS )u*   PÅ™idÃ¡ poloÅ¾ku do historie danÃ©ho typu.Nr	   r
   )r2   r3   r)   r4   ÚremoveÚlenr,   )r   r   ÚwhatÚmax_sizer   Úhistorys         r   Ústore_search_history_settingr=   O   s»   € àð ØˆØ
‡~‚~Ð'Ñ(Ô(ð 1Ø�kŠkÐ+¨RÑ0Ô0ˆå# EÑ*Ô*€DØ�hŠh�s˜BÑÔ€Gàˆw€€Ø�Š�tÑÔÐØˆf�wÑ€GÝ
ˆ7�|„|�hÒÐØ˜)˜8˜)Ô$ˆà€Dˆ�IÝ˜dÑ#Ô#Ð#Ð#Ð#r*   c                 ó  — |sdS |                      d¦  «        r|                     dd¦  «        }t          | ¦  «        }|                     |g ¦  «        }||v r+|                     |¦  «         |||<   t          |¦  «         dS dS )u+   OdstranÃ­ poloÅ¾ku z historie danÃ©ho typu.Nr	   r
   )r2   r3   r)   r4   r8   r,   )r   r   r:   r   r<   s        r   Úremove_search_history_settingr?   b   s—   € àð ØˆØ
‡~‚~Ð'Ñ(Ô(ð 1Ø�kŠkÐ+¨RÑ0Ô0ˆå# EÑ*Ô*€DØ�hŠh�s˜BÑÔ€Gàˆw€€Ø�Š�tÑÔÐØˆˆS‰	Ý! $Ñ'Ô'Ð'Ð'Ð'ð €r*   c                 ó¢   — |                      d¦  «        r|                     dd¦  «        }t          | ¦  «        }g ||<   t          |¦  «         dS )u   VymaÅ¾e historii danÃ©ho typu.r	   r
   N)r2   r3   r)   r,   r5   s      r   Úclear_search_history_settingrA   q   sU   € à
‡~‚~Ð'Ñ(Ô(ð 1Ø�kŠkÐ+¨RÑ0Ô0ˆå# EÑ*Ô*€DØ€Dˆ�IÝ˜dÑ#Ô#Ð#Ð#Ð#r*   c                 óf   — t          j        ¦   «         }t          |¦  «        }t          ||¦  «        S ©N)Ú	xbmcaddonÚAddonr0   r6   ©Úprofile_pathr/   r   r   s       r   Úload_search_historyrH   {   s-   € ÝŒOÑÔ€EÝ
Ð.Ñ
/Ô
/€CÝ& u¨cÑ2Ô2Ð2r*   c                 ón   — t          j        ¦   «         }t          |¦  «        }t          ||| |¦  «         d S rC   )rD   rE   r0   r=   )r:   rG   r/   r;   r   r   s         r   Ústore_search_historyrJ   €   s7   € ÝŒOÑÔ€EÝ
Ð.Ñ
/Ô
/€CÝ  ¨¨T°8Ñ<Ô<Ð<Ð<Ð<r*   c                 ól   — t          j        ¦   «         }t          |¦  «        }t          ||| ¦  «         d S rC   )rD   rE   r0   r?   )r:   rG   r/   r   r   s        r   Úremove_search_historyrL   …   s5   € ÝŒOÑÔ€EÝ
Ð.Ñ
/Ô
/€CÝ! %¨¨dÑ3Ô3Ð3Ð3Ð3r*   c                 ój   — t          j        ¦   «         }t          |¦  «        }t          ||¦  «         d S rC   )rD   rE   r0   rA   rF   s       r   Úclear_search_historyrN   Š   s3   € ÝŒOÑÔ€EÝ
Ð.Ñ
/Ô
/€CÝ  ¨Ñ,Ô,Ð,Ð,Ð,r*   zwatchlist_series.jsonc                 ó°   — 	 ddl m} |                     | ¦  «        S # t          $ r.}t	          j        d|› �t          j        ¬¦  «         Y d}~dS d}~ww xY w)uj   My movies / My series from library.db (docs/plan/milionar-library/030 Â§4); None if the store is unusable.r   ©ÚstorezA[plugin.video.milionar] library.db list unavailable, using JSON: r   N)Úwcs.library2rQ   Úget_listÚ	Exceptionr   r   ÚLOGERROR)Ú
media_typerQ   Úes      r   Ú_library_listrX   “   sz   € ðØ&Ð&Ð&Ð&Ð&Ð&Ø�~Š~˜jÑ)Ô)Ð)øÝð ð ð ÝŒÐXÐUVÐXÐXÕ`dÔ`mÐnÑnÔnÐnØˆtˆtˆtˆtˆtøøøøðøøøs   ‚ �
A§#AÁAc                 ó¶   — 	 ddl m} |                     | |¦  «         dS # t          $ r.}t	          j        d|› �t          j        ¬¦  «         Y d }~dS d }~ww xY w)Nr   rP   Tz?[plugin.video.milionar] library.db list not saved, using JSON: r   F)rR   rQ   Úreplace_listrT   r   r   rU   )rV   ÚentriesrQ   rW   s       r   Ú_library_storer\   œ   sƒ   € ðØ&Ð&Ð&Ð&Ð&Ð&Ø×Ò˜: wÑ/Ô/Ð/ØˆtøÝð ð ð ÝŒÐVÐSTÐVÐVÕ^bÔ^kÐlÑlÔlÐlØˆuˆuˆuˆuˆuøøøøðøøøs   ‚   
Aª#AÁAc                 óT   — t          d¦  «        }|�|S t          t          d| ¦  «        S )uK   NaÄ�te seznam seriÃ¡lÅ¯ (Moje seriÃ¡ly) z library.db; zÃ¡loha: JSON soubor.r   NÚtmdb_series)rX   r&   Ú_WATCHLIST_SERIES_FILE©r   r[   s     r   Úload_tmdb_seriesra   ¥   s-   € å˜DÑ!Ô!€GØÐØˆÝÕ1°=À%ÑHÔHÐHr*   c                 óT   — t          d|¦  «        st          t          |¦  «         dS dS )uM   UloÅ¾Ã­ seznam seriÃ¡lÅ¯ (Moje seriÃ¡ly) do library.db; zÃ¡loha: JSON soubor.r   N)r\   r   r_   )r   Úseries_lists     r   Ústore_tmdb_seriesrd   ¬   s5   € å˜$ Ñ,Ô,ð >ÝÕ/°Ñ=Ô=Ð=Ð=Ð=ð>ð >r*   c                 óª   — t          | ¦  «        }d|cxk    rt          |¦  «        k     sn dS |                     |¦  «         t          | |¦  «         dS )uc   OdstranÃ­ seriÃ¡l podle indexu ze seznamu 'Moje seriÃ¡ly'. VracÃ­ True pÅ™i ÃºspÄ›chu, jinak False.r   FT)ra   r9   Úpoprd   )r   ÚidxÚseriess      r   Úremove_tmdb_series_by_indexri   ±   ó]   € å˜eÑ$Ô$€FØ�Ð"Ð"Ò"Ð"•s˜6‘{”{Ò"Ð"Ð"Ð"ØˆuØ
‡J‚Jˆs�O„O€OÝ�e˜VÑ$Ô$Ð$Øˆ4r*   zwatchlist_movies.jsonc                 óT   — t          d¦  «        }|�|S t          t          d| ¦  «        S )uE   NaÄ�te seznam filmÅ¯ (Moje filmy) z library.db; zÃ¡loha: JSON soubor.ÚmovieNÚtmdb_movies)rX   r&   Ú_WATCHLIST_MOVIES_FILEr`   s     r   Úload_tmdb_moviesro   ¾   s-   € å˜GÑ$Ô$€GØÐØˆÝÕ1°=À%ÑHÔHÐHr*   c                 óT   — t          d|¦  «        st          t          |¦  «         dS dS )uG   UloÅ¾Ã­ seznam filmÅ¯ (Moje filmy) do library.db; zÃ¡loha: JSON soubor.rl   N)r\   r   rn   )r   Úmovies_lists     r   Ústore_tmdb_moviesrr   Å   s5   € å˜' ;Ñ/Ô/ð >ÝÕ/°Ñ=Ô=Ð=Ð=Ð=ð>ð >r*   c                 óª   — t          | ¦  «        }d|cxk    rt          |¦  «        k     sn dS |                     |¦  «         t          | |¦  «         dS )u]   OdstranÃ­ film podle indexu ze seznamu 'Moje filmy'. VracÃ­ True pÅ™i ÃºspÄ›chu, jinak False.r   FT)ro   r9   rf   rr   )r   rg   Úmoviess      r   Úremove_tmdb_movie_by_indexru   Ê   rj   r*   zfavorite_actors.jsonc                 ó.   — t          t          d| ¦  «        S )u1   NaÄ�te seznam oblÃ­benÃ½ch hercÅ¯ z JSON souboru.Úfavorite_actors)r&   Ú_FAVORITE_ACTORS_FILE©r   s    r   Úload_favorite_actorsrz   ×   s   € åÕ0Ð2CÀUÑKÔKÐKr*   c                 ó0   — t          t          |¦  «         dS )u3   UloÅ¾Ã­ seznam oblÃ­benÃ½ch hercÅ¯ do JSON souboru.N)r   rx   )r   Úactors_lists     r   Ústore_favorite_actorsr}   Û   s   € åÕ*¨KÑ8Ô8Ð8Ð8Ð8r*   c                 óH   — |D ]}|                      d¦  «        | k    r dS ŒdS )u:   Kontroluje, zda herec s danÃ½m ID jiÅ¾ existuje v seznamu.ÚidTF©r4   )Úactor_idr|   Úactors      r   Úcheck_actor_existsrƒ   ß   s7   € àð ð ˆØ�9Š9�T‰?Œ?˜hÒ&Ð&Ø�4�4ð 'àˆ5r*   c                 óª   — t          | ¦  «        }d|cxk    rt          |¦  «        k     sn dS |                     |¦  «         t          | |¦  «         dS )u^   OdstranÃ­ herce podle indexu ze seznamu oblÃ­benÃ½ch. VracÃ­ True pÅ™i ÃºspÄ›chu, jinak False.r   FT)rz   r9   rf   r}   )r   rg   Úactorss      r   Úremove_favorite_actor_by_indexr†   æ   s]   € å! %Ñ(Ô(€FØ�Ð"Ð"Ò"Ð"•s˜6‘{”{Ò"Ð"Ð"Ð"ØˆuØ
‡J‚Jˆs�O„O€OÝ˜% Ñ(Ô(Ð(Øˆ4r*   zfavorite_directors.jsonc                 ó.   — t          t          d| ¦  «        S )u6   NaÄ�te seznam oblÃ­benÃ½ch reÅ¾isÃ©rÅ¯ z JSON souboru.Úfavorite_directors)r&   Ú_FAVORITE_DIRECTORS_FILEry   s    r   Úload_favorite_directorsrŠ   ó   s   € åÕ3Ð5IÈ5ÑQÔQÐQr*   c                 ó0   — t          t          |¦  «         dS )u8   UloÅ¾Ã­ seznam oblÃ­benÃ½ch reÅ¾isÃ©rÅ¯ do JSON souboru.N)r   r‰   )r   Údirectors_lists     r   Ústore_favorite_directorsr�   ÷   s   € åÕ-¨~Ñ>Ô>Ð>Ð>Ð>r*   c                 óH   — |D ]}|                      d¦  «        | k    r dS ŒdS )u>   Kontroluje, zda reÅ¾isÃ©r s danÃ½m ID jiÅ¾ existuje v seznamu.r   TFr€   )Údirector_idrŒ   Údirectors      r   Úcheck_director_existsr‘   û   s9   € à"ð ð ˆØ�<Š<˜ÑÔ Ò,Ð,Ø�4�4ð -àˆ5r*   c                 óª   — t          | ¦  «        }d|cxk    rt          |¦  «        k     sn dS |                     |¦  «         t          | |¦  «         dS )uc   OdstranÃ­ reÅ¾isÃ©ra podle indexu ze seznamu oblÃ­benÃ½ch. VracÃ­ True pÅ™i ÃºspÄ›chu, jinak False.r   FT)rŠ   r9   rf   r�   )r   rg   Ú	directorss      r   Ú!remove_favorite_director_by_indexr”     s`   € å'¨Ñ.Ô.€IØ�Ð%Ð%Ò%Ð%•s˜9‘~”~Ò%Ð%Ð%Ð%ØˆuØ‡M‚M�#ÑÔÐÝ˜U IÑ.Ô.Ð.Øˆ4r*   c                 ó¢   — |                       d¦  «        }|                       d¦  «        }|r|r|r
 |¦   «          dS ddlm}  || |¦  «         dS )u  
    Zkontroluje pÅ™ihlaÅ¡ovacÃ­ Ãºdaje. Pokud chybÃ­, zobrazÃ­ dialog.
    VÅ¾dy zavolÃ¡ `on_success_callback` po ÃºspÄ›Å¡nÃ©m pÅ™ihlÃ¡Å¡enÃ­ nebo pokud je uÅ¾ivatel jiÅ¾ pÅ™ihlÃ¡Å¡en.
    VracÃ­ `True`, pokud je uÅ¾ivatel pÅ™ihlÃ¡Å¡en (nebo se prÃ¡vÄ› pÅ™ihlÃ¡sil), jinak `False`.
    ÚwsuserÚwspassTr   ©Úshow_webshare_login_dialogF)r   Úwcs.login.DialogWebshareLoginr™   )r   Úon_success_callbackÚws_userÚws_passr™   s        r   Ú_check_credentials_and_promptrž     s„   € ð ×Ò˜xÑ(Ô(€GØ×Ò˜xÑ(Ô(€Gàð �7ð Øð 	"ØÐÑ!Ô!Ð!ØˆtàHÐHÐHÐHÐHÐHð Ð˜uÐ&9Ñ:Ô:Ð:ð
 ˆ5r*   c                 óæ  — ddl m} ddlm} |                      d¦  «        dk    }|                      d¦  «        dk    }t          |                      d¦  «        o|                      d¦  «        ¦  «        }t          |                      d	¦  «        ¦  «        }t          j        d
|› d|› �t          j        ¬¦  «         t          j        d|› d|› �t          j        ¬¦  «         |r|s || ¦  «         |r|s || ¦  «         t          |                      d¦  «        o|                      d¦  «        ¦  «        }t          |                      d	¦  «        ¦  «        }|r|p|o|}|r|r
 |¦   «          |S )u÷   
    Zkontroluje oba zapnutÃ© providery a zobrazÃ­ login dialog pro nepÅ™ihlÃ¡Å¡enÃ©.
    Zobrazuje dialogy postupnÄ› pro kaÅ¾dÃ©ho nepÅ™ihlÃ¡Å¡enÃ©ho providera.
    
    VracÃ­ True pokud je alespoÅˆ jeden provider pÅ™ihlÃ¡Å¡en, jinak False.
    r   r˜   )Úshow_kraska_login_dialogÚwebshare_enabledÚtrueÚkraska_enabledr–   r—   Úkraska_tokenzE[plugin.video.milionar] check_providers_and_prompt: webshare_enabled=z, logged_in=r   zC[plugin.video.milionar] check_providers_and_prompt: kraska_enabled=)	rš   r™   Úwcs.login.DialogKraskaLoginr    r   Úboolr   r   r   )	r   r›   r™   r    r¡   r£   Úwebshare_logged_inÚkraska_logged_inÚhas_valid_providers	            r   Úcheck_providers_and_promptrª   %  s#  € ð IÐHÐHÐHÐHÐHØDÐDÐDÐDÐDÐDà×'Ò'Ð(:Ñ;Ô;¸vÒEÐØ×%Ò%Ð&6Ñ7Ô7¸6ÒA€Nõ ˜e×.Ò.¨xÑ8Ô8ÐW¸U×=MÒ=MÈhÑ=WÔ=WÑXÔXÐÝ˜E×,Ò,¨^Ñ<Ô<Ñ=Ô=Ðå„Hð  HÐUeð  Hð  Hð  tFð  Hð  Hõ  PTô  P\ð  ]ñ  ]ô  ]ð  ]Ý„Hð  BÐSað  Bð  BÐoð  Bð  Bõ  JNô  JVð  Wñ  Wô  Wð  Wð ð *Ð 2ð *Ø"Ð" 5Ñ)Ô)Ð)ð ð (Ð.ð (Ø Ð  Ñ'Ô'Ð'õ ˜e×.Ò.¨xÑ8Ô8ÐW¸U×=MÒ=MÈhÑ=WÔ=WÑXÔXÐÝ˜E×,Ò,¨^Ñ<Ô<Ñ=Ô=Ðð +ÐAÐ/Að ?Ø(Ð=Ð-=ð ð ð Ð1ð ØÐÑÔÐàÐr*   zfavorite_writers.jsonc                 óv  — 	 t           j                             t          ¦  «        rEt	          t          dd¬¦  «        5 }t          j        |¦  «        cddd¦  «         S # 1 swxY w Y   dS g S # t          t          t
          j	        f$ r/}t          j        d|› �t          j        ¬¦  «         g cY d}~S d}~ww xY w)u8   NaÄ�te seznam oblÃ­benÃ½ch scÃ©nÃ¡ristÅ¯ z JSON souboru.Úrúutf-8©ÚencodingNz Error loading favorite writers: r   )r#   r$   r%   ÚFAVORITE_WRITERS_FILEÚopenr   ÚloadÚIOErrorr   r   r   r   rU   )r   ÚfrW   s      r   Úload_favorite_writersrµ   R  sÿ   € ðÝŒ7�>Š>Õ/Ñ0Ô0ð 	ÝÕ+¨S¸7ÐCÑCÔCð $ÀqÝ”y ‘|”|ð$ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $ð ˆIøÝ•Z¥Ô!5Ð6ð ð ð ÝŒÐ7°AÐ7Ð7½t¼}ÐMÑMÔMÐMØˆ	ˆ	ˆ	ˆ	ˆ	ˆ	øøøøðøøøsF   ‚;A- ½AÁA- ÁA"Á"A- Á%A"Á&A- Á+A- Á-B8Â	$B3Â-B8Â3B8c                 ó–  — 	 t           j                             t          ¦  «        st          j        t          ¦  «         t          t          dd¬¦  «        5 }t          j        ||dd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS # t          t          f$ r.}t          j        d|› �t          j        ¬	¦  «         Y d}~dS d}~ww xY w)
u:   UloÅ¾Ã­ seznam oblÃ­benÃ½ch scÃ©nÃ¡ristÅ¯ do JSON souboru.Úwr­   r®   Fé   ©Úensure_asciiÚindentNz Error storing favorite writers: r   )r#   r$   r%   Ú_profileÚmakedirsr±   r°   r   Údumpr³   Ú	TypeErrorr   r   rU   )r   Úwritersr´   rW   s       r   Ústore_favorite_writersrÁ   ^  s+  € ðNÝŒw�~Š~�hÑ'Ô'ð 	"ÝŒK�Ñ!Ô!Ð!ÝÕ'¨°wÐ?Ñ?Ô?ð 	@À1ÝŒI�g˜q¨u¸QÐ?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øå•YÐð Nð Nð NÝŒÐ7°AÐ7Ð7½t¼}ÐMÑMÔMÐMÐMÐMÐMÐMÐMÐMøøøøðNøøøs<   ‚AB	 ÁA<Á/B	 Á<B Â B	 ÂB ÂB	 Â	CÂ#CÃCc                 ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )uB   Zkontroluje, zda scÃ©nÃ¡rista s danÃ½m ID jiÅ¾ existuje v seznamu.c              3   ó0   •K  — | ]}|d          ‰k    V — ŒdS )r   Nr.   )Ú.0ÚwriterÚ	writer_ids     €r   ú	<genexpr>z&check_writer_exists.<locals>.<genexpr>j  s,   øè è € ÐDÐD¨Vˆv�dŒ|˜yÒ(ÐDÐDÐDÐDÐDÐDr*   )Úany)rÆ   Úwriters_lists   ` r   Úcheck_writer_existsrÊ   h  s&   ø€ åÐDÐDÐDÐD°|ÐDÑDÔDÑDÔDÐDr*   c                 óª   — t          | ¦  «        }d|cxk    rt          |¦  «        k     sn dS |                     |¦  «         t          | |¦  «         dS )ue   OdstranÃ­ scÃ©nÃ¡ristu podle indexu ze seznamu oblÃ­benÃ½ch. VracÃ­ True pÅ™i ÃºspÄ›chu, jinak False.r   FT)rµ   r9   rf   rÁ   )r   rg   rÀ   s      r   Úremove_favorite_writer_by_indexrÌ   l  s`   € å# EÑ*Ô*€GØ�Ð#Ð#Ò#Ð#•s˜7‘|”|Ò#Ð#Ð#Ð#ØˆuØ‡K‚K�ÑÔÐÝ˜5 'Ñ*Ô*Ð*Øˆ4r*   c                 ó2  — |€g }t           j                             | ¦  «        r®	 t          | dd¬¦  «        5 }t	          j        |¦  «        cddd¦  «         S # 1 swxY w Y   nn# t          t          t          j        f$ rO}t          j
        dt           j                             | ¦  «        › d|› �t          j        ¬¦  «         |cY d}~S d}~ww xY w|rã|                     |¦  «        }|rÌ	 t	          j        |¦  «        }|rkt          | |¦  «         |                     |d¦  «         t          j
        d	|› d
t           j                             | ¦  «        › �t          j        ¬¦  «         |S nI# t          t          j        f$ r0}t          j
        d|› d|› �t          j        ¬¦  «         Y d}~nd}~ww xY w|�r]t           j                             |¦  «        �r=	 t          |dd¬¦  «        5 }t	          j        |¦  «        }	ddd¦  «         n# 1 swxY w Y   |	r�t          | |	¦  «         	 t          j        |¦  «         t          j
        d	t           j                             |¦  «        › dt           j                             | ¦  «        › �t          j        ¬¦  «         n#  Y nxY w|	S nl# t          t          t          j        f$ rM}t          j
        dt           j                             |¦  «        › d|› �t          j        ¬¦  «         Y d}~nd}~ww xY w|S )a·  
    Genericka funkce pro nacteni dat s automatickou migraci.
    
    Args:
        file_path: Cesta k novemu JSON souboru
        setting_key: Klic v Kodi settings pro migraci (muze byt None)
        addon: Kodi addon objekt
        old_file_path: Volitelna cesta ke staremu JSON souboru pro migraci
        default_value: Vychozi hodnota pokud data neexistuji (default: [])
    
    Returns:
        Nactena data nebo default_value
    Nr¬   r­   r®   z&[plugin.video.milionar] Error loading ú: r   r
   z![plugin.video.milionar] Migrated z from settings to z&[plugin.video.milionar] Error parsing z from settings: z to z/[plugin.video.milionar] Error loading old file )r#   r$   r%   r±   r   r²   r³   r   r   r   r   ÚbasenamerU   r   r   r   r   r   r8   )
Ú	file_pathr   r   Úold_file_pathr"   r´   rW   r   r   Úold_datas
             r   r&   r&   w  sQ  € ð ÐØˆõ 
„w‡~‚~�iÑ Ô ð !ð	!Ý�i ¨wÐ7Ñ7Ô7ð $¸1Ý”y ‘|”|ð$ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $øå�¥TÔ%9Ð:ð 	!ð 	!ð 	!ÝŒHÐ`½b¼g×>NÒ>NÈyÑ>YÔ>YÐ`Ð`Ð]^Ð`Ð`ÕhlÔhuÐvÑvÔvÐvØ Ð Ð Ð Ð Ð Ð øøøøð	!øøøð
 ð yØ×Ò Ñ,Ô,ˆØð 		yðyÝœ
 4Ñ(Ô(�Øð !Ý$ Y°Ñ6Ô6Ð6Ø×$Ò$ [°"Ñ5Ô5Ð5Ý”HÐ}ÀÐ}Ð}Õ`bÔ`g×`pÒ`pÐqzÑ`{Ô`{Ð}Ð}õ  FJô  FRð  Sñ  Sô  Sð  SØ �Lð	!øõ
 ¥Ô 4Ð5ð yð yð yÝ”ÐbÀ+ÐbÐbÐ_`ÐbÐbÕjnÔjwÐxÑxÔxÐxÐxÐxÐxÐxÐxøøøøðyøøøð ñ D�œŸš¨Ñ6Ô6ñ Dð	DÝ�m S°7Ð;Ñ;Ô;ð (¸qÝœ9 Q™<œ<�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (àð  Ý  ¨HÑ5Ô5Ð5ðÝ”I˜mÑ,Ô,Ð,Ý”Hð  DÅÄ×AQÒAQÐR_ÑA`ÔA`ð  Dð  DÕfhÔfm×fvÒfvð  xAñ  gBô  gBð  Dð  Dõ  LPô  LXð  Yñ  Yô  Yð  Yð  YøðØ�DøøøØ�ð øõ �¥TÔ%9Ð:ð 	Dð 	Dð 	DÝŒHÐmÅrÄw×GWÒGWÐXeÑGfÔGfÐmÐmÐjkÐmÐmÕuyô  vCð  Dñ  Dô  Dð  Dð  Dð  Dð  Dð  Dð  Døøøøð	Døøøð Ðs°   ¥A$ ·AÁA$ ÁAÁA$ ÁAÁ A$ Á$CÂ AC
ÃCÃ
CÃ,B E. Å.F4Æ&F/Æ/F4ÇJ+ Ç-HÈJ+ ÈHÈJ+ ÈHÈJ+ È,A4J! Ê J+ Ê!J%Ê#J+ Ê+LËALÌLc                 ó†  — d}	 ddl }	 t          | d¬¦  «        5 }t          j        |¦  «        |k    r8	 ddd¦  «         |r(	 t	          j        |¦  «         dS # t          $ r Y dS w xY wdS 	 ddd¦  «         n# 1 swxY w Y   n# t          t          f$ r Y nw xY wt          j         	                    t          ¦  «        st	          j        t          ¦  «         |                     ddt          j                             | ¦  «        dd¬¦  «        5 }|j        }t          j        ||dd	¬
¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        || ¦  «         d}	 |r(	 t	          j        |¦  «         dS # t          $ r Y dS w xY wdS # t"          t$          f$ rx}t'          j        dt          j                             | ¦  «        › d|› �t&          j        ¬¦  «         Y d}~|r(	 t	          j        |¦  «         dS # t          $ r Y dS w xY wdS d}~ww xY w# |r&	 t	          j        |¦  «         w # t          $ r Y w w xY ww xY w)u¥   
    GenerickÃ¡ funkce pro uloÅ¾enÃ­ dat do JSON souboru.
    
    Args:
        file_path: Cesta k JSON souboru
        data: Data k uloÅ¾enÃ­ (list nebo dict)
    Nr   r­   r®   Fr·   z.tmp)Úmoder¯   ÚdirÚsuffixÚdeleteé   r¹   Tz&[plugin.video.milionar] Error storing rÎ   r   )Útempfiler±   r   r²   r#   r8   ÚOSErrorr   r$   r%   r¼   r½   ÚNamedTemporaryFileÚdirnameÚnamer¾   r3   r³   r¿   r   r   rÏ   rU   )rÐ   r   Ú	temporaryrÙ   Úpreviousr´   rW   s          r   r   r   ±  sv  € ð €IðØˆˆˆð	Ý�i¨'Ð2Ñ2Ô2ð !°hÝ”9˜XÑ&Ô&¨$Ò.Ð.Ø ð!ð !ð !ñ !ô !ð !ð$ ð 	ðÝ”	˜)Ñ$Ô$Ð$Ð$Ð$øÝð ð ð Ø��ðøøøð	ð 	ð# /ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !øøõ �Ð$ð 	ð 	ð 	ØˆDð	øøøåŒw�~Š~�hÑ'Ô'ð 	"ÝŒK�Ñ!Ô!Ð!Ø×(Ò(¨c¸GÍÌÏÊÐYbÑIcÔIcØ06¸uð )ñ Fô Fð 	=ØIJØœˆIÝŒI�d˜A¨E¸!Ð<Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=õ 	Œ
�9˜iÑ(Ô(Ð(Øˆ	Øð
 ð 	ðÝ”	˜)Ñ$Ô$Ð$Ð$Ð$øÝð ð ð Ø��ðøøøð	ð 	øõ	 •YÐð ð ð ÝŒÐ\½"¼'×:JÒ:JÈ9Ñ:UÔ:UÐ\Ð\ÐYZÐ\Ð\ÕdhÔdqÐrÑrÔrÐrØˆuˆuˆuàð 	ðÝ”	˜)Ñ$Ô$Ð$Ð$Ð$øÝð ð ð Ø��ðøøøð	ð 	øøøøð	øøøøð ð 	ðÝ”	˜)Ñ$Ô$Ð$Ð$øÝð ð ð Ø�ðøøøð	øøøsô   „F
 ‰B šA8´B ÁA Á
A&Á%A&Á,B Á8A<Á<B Á?A<Â B ÂF
 ÂBÂF
 ÂBÂA7F
 Ä D;Ä/F
 Ä;D?Ä?F
 ÅD?ÅF
 Å!E7 Å7
FÆFÆ
HÆAHÇH Ç%G; Ç;
H	ÈH	ÈHÈH ÈI ÈH/È.I È/
H<È9I È;H<È<I zmytv_channels.jsonc                 ó.   — t          t          d| ¦  «        S )u+   NaÄ�te seznam MyTV kanÃ¡lÅ¯ z JSON souboru.Úmy_tv_channels)r&   Ú_MYTV_CHANNELS_FILEry   s    r   Úload_mytv_channelsrã   Ú  s   € åÕ.Ð0@À%ÑHÔHÐHr*   c                 ó,   — t          t          |¦  «        S )u-   UloÅ¾Ã­ seznam MyTV kanÃ¡lÅ¯ do JSON souboru.)r   râ   ©r   Úchannelss     r   Ústore_mytv_channelsrç   Þ  s   € åÕ/°Ñ:Ô:Ð:r*   zmycinema_channels.jsonc                 ó.   — t          t          d| ¦  «        S )u5   NaÄ�te seznam MyCinema kanÃ¡lÅ¯ (kin) z JSON souboru.N)r&   Ú_MYCINEMA_CHANNELS_FILEry   s    r   Úload_mycinema_channelsrê   ç  s   € åÕ2°D¸%Ñ@Ô@Ð@r*   c                 ó,   — t          t          |¦  «        S )u7   UloÅ¾Ã­ seznam MyCinema kanÃ¡lÅ¯ (kin) do JSON souboru.)r   ré   rå   s     r   Ústore_mycinema_channelsrì   ë  s   € åÕ3°XÑ>Ô>Ð>r*   zglobal_watch_history.jsonzrecently_played.jsonc                 ó:   — t          t          d| t          ¦  «        S )u=   NaÄ�te seznam naposledy pÅ™ehranÃ½ch poloÅ¾ek z JSON souboru.Úrecently_played)r&   Ú_GLOBAL_WATCH_HISTORY_FILEÚ_RECENTLY_PLAYED_FILE_OLDry   s    r   Úload_recently_playedrñ   õ  s   € åÕ5Ð7HÈ%ÕQjÑkÔkÐkr*   c                 óX   — t          t          |¦  «        rddlm}  |dh¦  «         dS dS )u?   UloÅ¾Ã­ seznam naposledy pÅ™ehranÃ½ch poloÅ¾ek do JSON souboru.r   )ÚchangedÚwidget_game_topicsN)r   rï   Úwcs.skin.refreshró   )r   r   ró   s      r   Ústore_recently_playedrö   ù  sK   € åÕ2°EÑ:Ô:ð (Ø,Ð,Ð,Ð,Ð,Ð,ØˆÐ%Ð&Ñ'Ô'Ð'Ð'Ð'ð(ð (r*   c                 ó¶  — t          | ¦  «        }|                     d¦  «        }|                     d¦  «        }|                     dd¦  «        }g }|D ]�}|                     d¦  «        }|                     d¦  «        }	|                     dd¦  «        }
|r)|r't          |¦  «        t          |¦  «        k    r||
k    rŒm|r|s||	k    rŒx|                     |¦  «         ŒŽt          j                             ¦   «                              d¦  «        |d<   |                     d|¦  «         t          |¦  «        dk    r
|d	d…         }t          | |¦  «         d	S )
u·   
    PÅ™idÃ¡ poloÅ¾ku na zaÄ�Ã¡tek seznamu naposledy pÅ™ehranÃ½ch.
    Omezuje velikost seznamu na 50 poloÅ¾ek.
    DuplicitnÃ­ poloÅ¾ky (stejnÃ© ID/titul) pÅ™esune na zaÄ�Ã¡tek.
    Útmdb_idÚtitlerV   rl   z%Y-%m-%d %H:%M:%SÚ	timestampr   é2   N)
rñ   r4   ÚstrÚappendÚdatetimeÚnowÚstrftimeÚinsertr9   rö   )r   Úitemr   rø   rù   rV   Ú	new_itemsÚexistingÚex_idÚex_titleÚex_types              r   Úadd_recently_played_itemr     sp  € õ ! Ñ'Ô'€Eð �hŠh�yÑ!Ô!€GØ�HŠH�WÑÔ€EØ—’˜,¨Ñ0Ô0€Jð €IØð #ð #ˆØ—’˜YÑ'Ô'ˆØ—<’< Ñ(Ô(ˆØ—,’,˜|¨WÑ5Ô5ˆð ð 	�uð 	¥ W¡¤µ°U±´Ò!;Ð!;À
ÈgÒ@UÐ@UØàð 	˜uð 	¨%°8Ò*;Ð*;Øà×Ò˜Ñ"Ô"Ð"Ð"õ !Ô)×-Ò-Ñ/Ô/×8Ò8Ð9LÑMÔM€DˆÑØ×Ò�Q˜ÑÔÐõ ˆ9�~„~˜ÒÐØ˜c˜r˜c”Nˆ	å˜% Ñ+Ô+Ð+Ð+Ð+r*   rC   )NN)Fr#   Úior   Ú	tracebackÚxbmcguir   rD   Úxbmcvfsrþ   rE   ÚgetAddonInfoÚ_profile_specialÚtranslatePathr¼   r$   Újoinr   r'   r    r)   r,   r0   r6   r=   r?   rA   rH   rJ   rL   rN   r_   rX   r\   ra   rd   ri   rn   ro   rr   ru   rx   rz   r}   rƒ   r†   r‰   rŠ   r�   r‘   r”   rž   rª   r°   rµ   rÁ   rÊ   rÌ   r&   r   râ   rã   rç   ré   rê   rì   rï   rð   rñ   rö   r  r.   r*   r   ú<module>r     sX  ðð 
€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€ð #�9”?Ñ$Ô$×1Ò1°)Ñ<Ô<Ð Ø ˆ7Ô Ð!1Ñ2Ô2€ð ”w—|’| HÐ.CÑDÔDÐ Ø(*°B¸bÐAÐAÐ ðð ð ð0	lð 	lð 	lð1ð 1ð 1ðð ð ðð ð ð$ð $ð $ð&(ð (ð (ð$ð $ð $ð3ð 3ð 3ð
=ð =ð =ð
4ð 4ð 4ð
-ð -ð -ð œŸš hÐ0GÑHÔHÐ ðð ð ðð ð ðIð Ið Ið>ð >ð >ð
ð ð ð œŸš hÐ0GÑHÔHÐ ðIð Ið Ið>ð >ð >ð
ð ð ð œŸš XÐ/EÑFÔFÐ ðLð Lð Lð9ð 9ð 9ðð ð ðð ð ð œ7Ÿ<š<¨Ð2KÑLÔLÐ ðRð Rð Rð?ð ?ð ?ðð ð ðð ð ðð ð ð ð4'ð 'ð 'ð 'ðV œŸš XÐ/FÑGÔGÐ ð
ð 
ð 
ðNð Nð NðEð Eð Eðð ð ð8ð 8ð 8ð 8ðt"ð "ð "ðN ”g—l’l 8Ð-AÑBÔBÐ ðIð Ið Ið;ð ;ð ;ð œ'Ÿ,š, xÐ1IÑJÔJÐ ðAð Að Að?ð ?ð ?ð  œWŸ\š\¨(Ð4OÑPÔPÐ ØœGŸLšL¨Ð3IÑJÔJÐ ðlð lð lð(ð (ð (ð%,ð %,ð %,ð %,ð %,r*   