§
   N}X²>Õ““ã                   ó  — d dl m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
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d dlZd d
lmZ d dlmZm Z   G d„ d¦  «        Z! G d„ dej"        ¦  «        Z#dS )é    )Úselect_actionN)Údatetime)Ú	AIHandler)Úget_tmdb_api_key)Úutils)ÚUI)ÚSearchDialog)Ú	user_data)ÚWebshareClient)Úshow_api_request_debugÚshow_api_response_debugc                   óN   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
dd„Zdd„ZdS )ÚAIRecommendationPromptBuilderuÛ   
    Helper tÅ™Ã­da pro sklÃ¡dÃ¡nÃ­ system a user promptÅ¯ pro AI chat doporuÄ�ovÃ¡nÃ­.
    System prompt je session-stable (nastavÃ­ se na zaÄ�Ã¡tku a nemÄ›nÃ­ se).
    User message se mÄ›nÃ­ s kaÅ¾dou inferencÃ­.
    ÚmovieNc                 ó`   — t          j        ¦   «         | _        || _        || _        d | _        d S ©N)Ú	xbmcaddonÚAddonÚaddonÚ
media_typeÚcontextÚ_system_prompt)Úselfr   r   s      úo/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/DialogAIChatRecommendation.pyÚ__init__z&AIRecommendationPromptBuilder.__init__   s-   € Ý”_Ñ&Ô&ˆŒ
Ø$ˆŒØˆŒØ"ˆÔÐÐó    c                 óø  — 	 | j                              d¦  «        }t          j                             |ddd|¦  «        }t          j                             |¦  «        r>t          |dd¬¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   t          j	        d	|› �t          j
        ¬
¦  «         n:# t          $ r-}t          j	        d|› �t          j        ¬
¦  «         Y d}~nd}~ww xY wdS )u#   NaÄ�te Å¡ablonu promptu ze souboru.ÚpathÚ	resourcesÚpromptsÚai_recommendationsÚrzutf-8)ÚencodingNz/[plugin.video.milionar] Prompt file not found: )Úlevelz3[plugin.video.milionar] Error loading prompt file: )r   ÚgetAddonInfoÚosr   ÚjoinÚexistsÚopenÚreadÚxbmcÚlogÚ
LOGWARNINGÚ	ExceptionÚLOGERROR)r   ÚfilenameÚ	addon_dirÚprompt_fileÚfÚes         r   Ú_load_templatez,AIRecommendationPromptBuilder._load_template$   sE  € ð	eØœ
×/Ò/°Ñ7Ô7ˆIÝœ'Ÿ,š, y°+¸yÐJ^Ð`hÑiÔiˆKÝŒw�~Š~˜kÑ*Ô*ð $Ý˜+ s°WÐ=Ñ=Ô=ð $ÀØŸ6š6™8œ8ð$ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $åŒHÐTÀ{ÐTÐTÕ\`Ô\kÐlÑlÔlÐlÐløÝð 	eð 	eð 	eÝŒHÐNÈ1ÐNÐNÕVZÔVcÐdÑdÔdÐdÐdÐdÐdÐdÐdøøøøð	eøøøàˆts<   ‚A.C  Á0BÂC  ÂBÂC  ÂBÂ&C  Ã 
C7Ã
#C2Ã2C7c                 óz   — | j         r&| j                              d¦  «        }|dv rdS |dv rdS | j        dk    rdndS )	z Vraci cesky label pro typ media.Útype©Úmy_mixed_collectionÚrecently_playedÚfavorite_actorsÚfavorite_directorsÚfavorite_writersÚ
simple_mixzfilmu a serialu)Úmy_collectionsÚ
collectionzfilmovych kolekcir   ÚfilmuÚserialu)r   Úgetr   ©r   Úc_types     r   Ú_get_media_labelz.AIRecommendationPromptBuilder._get_media_label1   sd   € àŒ<ð 	+Ø”\×%Ò% fÑ-Ô-ˆFØð  Oð  Oð  OØ(Ð(ØÐ;Ð;Ð;Ø*Ð*Øœ/¨WÒ4Ð4ˆwˆw¸)ÐCr   c                 óP   — | j         r| j                              d¦  «        }|dv S dS )z)Zjisti, jestli jde o mix filmu a serialu.r7   r8   F)r   rC   rD   s     r   Ú_is_mixed_contentz/AIRecommendationPromptBuilder._is_mixed_content;   s<   € àŒ<ð 	SØ”\×%Ò% fÑ-Ô-ˆFØð  Sð  Sð  SØˆur   c                 óž   — | j         r| j                              d¦  «        dv r	 dS |                      ¦   «         r	 dS | j        dk    r	 dS 	 dS )u    VracÃ­ instrukce pro typ mÃ©dia.r7   )r?   r@   Úsimple_collectionsu·   REÅ½IM KOLEKCE:
DoporuÄ�ujeÅ¡ FILMOVÃ‰ KOLEKCE a SÃ�GY (trilogie, franÅ¡Ã­zy), ne jednotlivÃ© filmy.
ZamÄ›Å™ se na ucelenÃ© sÃ©rie jako 'PÃ¡n prstenÅ¯ kolekce', 'Marvel kolekce', atd.uf   REÅ½IM MIX:
DoporuÄ�ujeÅ¡ FILMY i SERIÃ�LY souÄ�asnÄ›. NabÃ­zej rozmanitÃ½ mix podle vkusu uÅ¾ivatele.Úseriesu3   REÅ½IM SERIÃ�LY:
DoporuÄ�ujeÅ¡ vÃ½hradnÄ› SERIÃ�LY.u-   REÅ½IM FILMY:
DoporuÄ�ujeÅ¡ vÃ½hradnÄ› FILMY.)r   rC   rH   r   ©r   s    r   Ú_get_media_type_instructionz9AIRecommendationPromptBuilder._get_media_type_instructionB   sŠ   € àŒ<ð 	˜DœL×,Ò,¨VÑ4Ô4Ð8nÐnÐnðeðð ð
 ×#Ò#Ñ%Ô%ð 	ðmðð ð Œ_ Ò(Ð(ð5ðð ð2ðð r   c                 óf   — |                       ¦   «         rdS | j        dk    rdS | j        dk    rdS dS )z#Vraci JSON format podle typu media.a  {
  "message": "Tva otazka nebo komentar (max 2-3 vety)",
  "buttons": [
    {"label": "Text tlacitka", "value": "Odpoved ktera se odesle"}
  ],
  "recommendations": [
    {"title": "Cesky nazev", "year": "YYYY", "type": "movie nebo tv", "original_title": "Originalni nazev"}
  ]
}rK   a  {
  "message": "Tva otazka nebo komentar (max 2-3 vety)",
  "buttons": [
    {"label": "Text tlacitka", "value": "Odpoved ktera se odesle"}
  ],
  "recommendations": [
    {"title": "Cesky nazev", "year": "YYYY", "type": "tv", "original_title": "Originalni nazev"}
  ]
}r@   a  {
  "message": "Tva otazka nebo komentar (max 2-3 vety)",
  "buttons": [
    {"label": "Text tlacitka", "value": "Odpoved ktera se odesle"}
  ],
  "recommendations": [
    {"title": "Nazev kolekce", "type": "collection", "original_title": "Originalni nazev kolekce"}
  ]
}a  {
  "message": "Tva otazka nebo komentar (max 2-3 vety)",
  "buttons": [
    {"label": "Text tlacitka", "value": "Odpoved ktera se odesle"}
  ],
  "recommendations": [
    {"title": "Cesky nazev", "year": "YYYY", "type": "movie", "original_title": "Originalni nazev"}
  ]
}©rH   r   rL   s    r   Ú_get_json_formatz.AIRecommendationPromptBuilder._get_json_formatZ   s^   € ð ×!Ò!Ñ#Ô#ð '	ðð ð Œ_ Ò(Ð(ðð ð Œ_ Ò,Ð,ðð ðð r   c                 óf   — |                       ¦   «         rdS | j        dk    rdS | j        dk    rdS dS )z:Vraci pravidlo pro type pole - VZDY, pro vsechny varianty.zZ- Pole 'type' MUSI byt bud 'movie' (pro filmy) nebo 'tv' (pro serialy). SPRAVNE URCI TYP.
rK   z0- Pole 'type' MUSI byt vzdy 'tv' (pro serialy).
r@   zG- Pole 'type' MUSI byt vzdy 'collection' (pro filmove kolekce a sagy).
z1- Pole 'type' MUSI byt vzdy 'movie' (pro filmy).
rO   rL   s    r   Ú_get_json_type_rulez1AIRecommendationPromptBuilder._get_json_type_rule†   sI   € à×!Ò!Ñ#Ô#ð 	HØpÐpØŒ_ Ò(Ð(ØFÐFØŒ_ Ò,Ð,Ø]Ð]àGÐGr   Fc           	      ó~  — | j         r	|s| j         S |                      d¦  «        }|s$d|                      ¦   «         › d�| _         | j         S t          | j                             d¦  «        pd¦  «        }|                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                      ¦   «         }t          j
        ¦   «         }|                     d¦  «        }		 t          j        t          j        ¦  «        }
n	#  d}
Y nxY w	 t          t          d¦  «        rt          j        t          j        ¦  «        }n|
                     ¦   «         }n	#  d	}Y nxY w|                     d
d¦  «        }|                     |	||
||||¬¦  «        }|                     d|¦  «        }|| _         | j         S )u™   
        SestavÃ­ session-stable system prompt.
        Obsahuje: role definition, Ä�asovÃ½ kontext, temporÃ¡lnÃ­ inteligenci, pravidla dialogu.
        zsystem_prompt.txtzJsi asistent pro u   . OdpovÄ›z v JSON formÃ¡tu.Úai_recommendation_counté   z%d.%m.%Y %H:%M (%A)ÚcsÚ
ISO_3166_1ÚCZz{json_format}z<<<JSON_FORMAT>>>)Úcurrent_time_strÚuser_regionÚ	user_langÚmedia_labelÚmedia_type_instructionÚrecomm_countÚjson_type_rule)r   r5   rF   Úintr   Ú
getSettingrM   rP   rR   r   ÚnowÚstrftimer+   ÚgetLanguageÚ	ISO_639_1ÚhasattrÚ	getRegionrW   ÚupperÚreplaceÚformat)r   Úforce_rebuildÚtemplater^   r\   r]   Újson_formatr_   rb   rY   r[   rZ   Úprompts                r   Úbuild_system_promptz1AIRecommendationPromptBuilder.build_system_prompt‘   sÎ  € ð
 Ôð 	' }ð 	'ØÔ&Ð&à×&Ò&Ð':Ñ;Ô;ˆØð 	'à"j°d×6KÒ6KÑ6MÔ6MÐ"jÐ"jÐ"jˆDÔØÔ&Ð&å˜4œ:×0Ò0Ð1JÑKÔKÐQÈrÑRÔRˆØ×+Ò+Ñ-Ô-ˆØ!%×!AÒ!AÑ!CÔ!CÐØ×+Ò+Ñ-Ô-ˆØ×1Ò1Ñ3Ô3ˆõ Œl‰nŒnˆØŸ<š<Ð(=Ñ>Ô>Ðð	ÝÔ(­¬Ñ8Ô8ˆIˆIøð	ØˆIˆIˆIøøøð	Ý•t˜\Ñ*Ô*ð 0Ý"œn­T¬_Ñ=Ô=��à'ŸošoÑ/Ô/�øøð	ØˆKˆKˆKøøøð ×!Ò! /Ð3FÑGÔGˆØ—’Ø-Ø#ØØ#Ø#9Ø%Ø)ð ñ 
ô 
ˆð —’Ð 3°[ÑAÔAˆà$ˆÔØÔ"Ð"s   Ã.D ÄDÄAE  Å E&Ú c                 ó¼   — g }|s|S t          |¦  «        D ]E\  }}|d         dk    rdnd}|d         }|dk    r
|dk    r|r|}|                     ||dœ¦  «         ŒF|S )u“  
        SestavÃ­ pole messages pro multi-turn API.
        VracÃ­ nativnÃ­ formÃ¡t zprÃ¡v pro LLM API.
        
        Args:
            chat_history: Historie konverzace [{"role": "user/assistant", "content": "..."}]
            context_instruction: VolitelnÃ¡ kontextovÃ¡ instrukce
            
        Returns:
            list: Pole messages [{"role": "user/assistant", "content": "..."}]
        ÚroleÚ	assistantÚuserÚcontentr   ©rr   ru   )Ú	enumerateÚappend)r   Úchat_historyÚcontext_instructionÚmessagesÚiÚmsgrr   ru   s           r   Úbuild_messagesz,AIRecommendationPromptBuilder.build_messagesÆ   s¤   € ð ˆð ð 	ØˆOõ   Ñ-Ô-ð 	ð 	‰FˆAˆsà"% f¤+°Ò"<Ð"<�;�;À&ˆDØ˜)”nˆGð �AŠvˆv˜$ &š.˜.Ð-@˜.Ø-�à�OŠOØØ"ðð ñ ô ð ð ð
 ˆr   )r   N©F)rp   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r5   rF   rH   rM   rP   rR   ro   r~   © r   r   r   r      s¼   € € € € € ðð ð#ð #ð #ð #ðð ð ðDð Dð Dðð ð ðð ð ð0*ð *ð *ðX	Hð 	Hð 	Hð3#ð 3#ð 3#ð 3#ðj"ð "ð "ð "ð "ð "r   r   c                   ó2  ‡ — e Zd Zddddœddddœdd	d
dœddd
dœddddœddddœddddœddddœgZdddddddœZˆ fd „Zd!„ Zd’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d0„ Zd1„ Zd“d3„Zd4„ Zd5„ Zd6„ Zd7„ Zd8„ Zd”d:„Zd;„ Zd<„ Zd=d>d?œd@d>d?œdAdBd?œd@dCd?œdDdEd?œdFdGd?œdHdId?œddJd?œdKdJd?œdLdMd?œdNdOd?œdNdPd?œdQdRd?œdSdTd?œdUœZg dV¢g dW¢dXgg dY¢g dZ¢g d[¢g d\¢g d]¢g d^¢d_gd`œ
Z i dadbdcddœ“dedbdfddœ“dgdbdhddœ“didjdkddœ“dldmdkddœ“dndodcddœ“dpdodfddœ“dqdodhddœ“ddmdcddœ“ddmdfddœ“drdrdhddœ“dsdGdcddœ“dtdGdfddœ“dudvdcddœ“dwdxdcddœ“dydzdcddœ“d{dkdcddœ“d|dcddœd|dfddœd}œ¥Z!d•d~„Z"d„ Z#d€„ Z$d�„ Z%d‚„ Z&d–d„„Z'd…„ Z(d†„ Z)d‡„ Z*d—dˆ„Z+d‰„ Z,dŠ„ Z-d‹„ Z.dŒ„ Z/d�„ Z0dŽ„ Z1d�„ Z2d�„ Z3d‘„ Z4ˆ xZ5S )˜ÚAIChatRecommendationDialogÚcontinue_watchingzPokracovat ve sledovanizDefaultVideoPlaylists.png©ÚidÚlabelÚiconÚmy_tvzMyTV - televize budoucnostizDefaultAddonPVRClient.pngÚ	my_cinemazMyCinema - kino budoucnostizDefaultMovies.pngÚ	my_moviesz
Moje filmyÚ	my_serieszMoje serialyzDefaultTVShows.pngÚai_recommendzAI DoporuceniúDefaultMusicSearch.pngÚsettingsÚ	NastaveniúDefaultAddonProgram.pngÚcloseÚZavritúDefaultFolderBack.pngÚcontinue_watching_dialogÚmy_movies_dialogÚmy_series_dialogÚmy_tv_dialogÚmy_cinema_dialogÚai_chat_recommendation)r‡   rŽ   r�   rŒ   r�   r�   c                 óv  •— |                      dd¦  «        | _        |                      dd¦  «        | _        |                      dd ¦  «         t          t          | ¦  «                             ||¦  «         t          j        ¦   «         | _        g | _	        d | _
        g | _        t          j        ¦   «         | _        d | _        d| _        |                     dd ¦  «        | _        i | _        d | _        d| _        d | _        d | _        i | _        d| _        d| _        d| _        d | _        d | _        i | _        d S )NÚshow_nav_sidebarFÚnav_positionr   r   r�   )ÚpopÚ_show_nav_on_initÚ_nav_positionÚsuperr†   r   r   r   r   Úhistoryr   Útmdb_resultsÚ	threadingÚEventÚ_thinking_stopÚ_thinking_threadÚ
_dot_countrC   r   Ú_preview_cacheÚ_last_preview_idÚ_action_tokenÚ_prompt_builderÚ_last_response_dataÚ_last_response_usageÚ_nav_section_idÚ_last_list_positionÚ_returning_from_chatÚ_last_focus_idÚ_last_raw_responseÚ_last_response_metadata)r   Úxml_filenameÚ
addon_pathÚargsÚkwargsÚ	__class__s        €r   r   z#AIChatRecommendationDialog.__init__  s$  ø€ à!'§¢Ð,>ÀÑ!FÔ!FˆÔØ#ŸZšZ¨¸Ñ:Ô:ˆÔØ�
Š
�9˜dÑ#Ô#Ð#åÕ(¨$Ñ/Ô/×8Ò8¸ÀzÑRÔRÐRÝ”_Ñ&Ô&ˆŒ
ØˆŒØˆŒØˆÔÝ'œoÑ/Ô/ˆÔØ $ˆÔØˆŒØ—z’z )¨TÑ2Ô2ˆŒà ˆÔØ $ˆÔàˆÔà#ˆÔà#'ˆÔ Ø$&ˆÔ!à-ˆÔà#$ˆÔ à$)ˆÔ!à"ˆÔà"&ˆÔØ')ˆÔ$Ð$Ð$r   c                 óv   — d| _         i | _        d| _        g | _        d| _        d| _        d| _        d| _        dS )uV   Resetuje promÄ›nnÃ© na vÃ½chozÃ­ stav. Volat na zaÄ�Ã¡tku onInit() v child tÅ™Ã­dÃ¡ch.Nr   F)r­   r¬   r®   r¥   r¯   r´   rµ   r³   rL   s    r   Ú_reset_statez'AIChatRecommendationDialog._reset_state+  sG   € à $ˆÔØ ˆÔØˆÔØˆŒØ#ˆÔØ$)ˆÔ!Ø"ˆÔØ#$ˆÔ Ð Ð r   ç      à?c                 ój   ‡ ‡‡— ˆˆˆ fd„}t          j        |d¬¦  «                             ¦   «          dS )uà   NastavÃ­ focus na control s krÃ¡tkÃ½m zpoÅ¾dÄ›nÃ­m (thread-safe).
        
        Args:
            control_id: ID controlu na kterÃ½ se mÃ¡ nastavit focus
            delay: ZpoÅ¾dÄ›nÃ­ v sekundÃ¡ch (default 0.5s)
        c                  ól   •— t          j        ‰¦  «         	 ‰                     ‰ ¦  «         d S #  Y d S xY wr   )ÚtimeÚsleepÚ
setFocusId)Ú
control_idÚdelayr   s   €€€r   Ú	set_focusz<AIChatRecommendationDialog._delayed_focus.<locals>.set_focus=  s@   ø€ ÝŒJ�uÑÔÐðØ—’ 
Ñ+Ô+Ð+Ð+Ð+øðØ��øøøó   —. ®3T©ÚtargetÚdaemonN)r§   ÚThreadÚstart)r   rÅ   rÆ   rÇ   s   ``` r   Ú_delayed_focusz)AIChatRecommendationDialog._delayed_focus6  sR   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	õ 	Ô 	°$Ð7Ñ7Ô7×=Ò=Ñ?Ô?Ð?Ð?Ð?r   c                 ó  — ddl m}  || ¦  «         | j        �rT| j                             dd¦  «        }|dk    rdn|| _        d}|                      d|¦  «         | j                             d	¦  «        }|d
k    r|                      ¦   «          d S t          | j        | j        ¦  «        | _        |  	                    ¦   «         }|p| j                             d¦  «        pd}| j
                             d|dœ¦  «         |                      dd¦  «         |                      d|¦  «         |                      d¦  «         |                      d¦  «         |                      d¬¦  «         d S d}|                      d|¦  «         |                      dddœdddœg¦  «         |                      d¦  «                             ¦   «          |                      d¦  «         |                      dd¦  «         |                      d¦  «         d S )Nr   )Úcapture_dialogr   r   ÚtvrK   u   Analyzuji vÃ¡Å¡ vÃ½bÄ›r...ÚAIr7   Úsection_rootÚinitial_messageu   PotÅ™ebuji doporuÄ�enÃ­.rt   rv   úWCS.AIChat.VisibleÚtrueÚTyé   zAnalyzuji...T©Úis_initial_contextu   Co chcete doporuÄ�it?ÚFilmyzset_mode:movie©rŠ   Úvalueu   SeriÃ¡lyzset_mode:serieséÐ  úWCS.AIChat.ShowInput)Úwcs.skin.contextrÐ   r   rC   r   Úappend_chat_messageÚ _start_simple_media_conversationr   r¯   Ú_get_context_instructionr¥   rx   ÚsetPropertyrÄ   Ú_start_button_loadingÚ_start_ai_conversationÚupdate_buttonsÚ
getControlÚresetÚclearProperty)r   rÐ   Úraw_media_typeÚwelcome_msgrE   rz   Úinitial_user_msgs          r   ÚonInitz!AIChatRecommendationDialog.onInitE  sZ  € Ø3Ð3Ð3Ð3Ð3Ð3Øˆ�tÑÔÐàŒ<ñ (	à!œ\×-Ò-¨l¸GÑDÔDˆNØ*8¸DÒ*@Ð*@˜h˜hÀnˆDŒOð 7ˆKØ×$Ò$ T¨;Ñ7Ô7Ð7ð ”\×%Ò% fÑ-Ô-ˆFð ˜Ò'Ð'Ø×5Ò5Ñ7Ô7Ð7Ø�õ $AÀÄÐRVÔR^Ñ#_Ô#_ˆDÔ ð #'×"?Ò"?Ñ"AÔ"AÐØ2Ðw°d´l×6FÒ6FÐGXÑ6YÔ6YÐwÐ]wÐØŒL×Ò¨Ð<LÐ MÐ MÑNÔNÐNð ×ÒÐ1°6Ñ:Ô:Ð:ð ×$Ò$ TÐ+;Ñ<Ô<Ð<ð �OŠO˜DÑ!Ô!Ð!ð ×&Ò& ~Ñ6Ô6Ð6ð ×'Ò'¸4Ð'Ñ@Ô@Ð@ØˆFð .ˆØ× Ò   {Ñ3Ô3Ð3ð 	×ÒØÐ(8Ð9Ð9Ø Ð+<Ð=Ð=ð
ñ 	ô 	ð 	ð 	�Š˜ÑÔ×#Ò#Ñ%Ô%Ð%ð 	×ÒÐ1Ñ2Ô2Ð2ð 	×ÒÐ-¨vÑ6Ô6Ð6ð 	�Š˜ÑÔÐÐÐr   c                 ó
  — |                       d¦  «        }|                     ¦   «         }|dk    rd|› d�}nd|› d�}||z   }|                     |¦  «         t          j        | j        ¬¦  «                             ¦   «          dS )z'Append message to chat history textbox.éè  rÒ   z[COLOR blue]AI:[/COLOR] ú
z[COLOR orange]Ty:[/COLOR] ©rÊ   N©rè   ÚgetTextÚsetTextr§   rÌ   Ú_auto_scroll_text_boxrÍ   )r   ÚsenderÚtextÚhistory_controlÚcurrent_textÚlineÚnew_texts          r   rá   z.AIChatRecommendationDialog.append_chat_messageŠ  sš   € àŸ/š/¨$Ñ/Ô/ˆØ&×.Ò.Ñ0Ô0ˆð �TŠ>ˆ>Ø6¨dÐ6Ð6Ð6ˆDˆDà8°Ð8Ð8Ð8ˆDà $Ñ&ˆØ×Ò Ñ)Ô)Ð)õ 	Ô Ô :Ð;Ñ;Ô;×AÒAÑCÔCÐCÐCÐCr   c                 óð   — |                       d¦  «        }|                     ¦   «         }d|› d�}||z   }|                     |¦  «         t          j        | j        ¬¦  «                             ¦   «          dS )z5Append system message to chat history (grey, italic).rð   z*[COLOR red]System:[/COLOR] [COLOR grey][I]z[/I][/COLOR]
rò   Nró   )r   rø   rù   rú   rû   rü   s         r   Úappend_system_messagez0AIChatRecommendationDialog.append_system_messageœ  s€   € àŸ/š/¨$Ñ/Ô/ˆØ&×.Ò.Ñ0Ô0ˆð Q¸DÐPÐPÐPˆà $Ñ&ˆØ×Ò Ñ)Ô)Ð)õ 	Ô Ô :Ð;Ñ;Ô;×AÒAÑCÔCÐCÐCÐCr   c                 ó”   — ddl } |j        d¦  «         	 |                      d¦  «        }|                     d¦  «         dS #  Y dS xY w)z/Helper to scroll text box to bottom with delay.r   Nçš™™™™™É?rð   i N  )rÂ   rÃ   rè   Úscroll)r   rÂ   rù   s      r   rö   z0AIChatRecommendationDialog._auto_scroll_text_boxª  sZ   € àˆˆˆØˆŒ
�3‰Œˆð	Ø"Ÿošo¨dÑ3Ô3ˆOà×"Ò" 5Ñ)Ô)Ð)Ð)Ð)øð	ØˆDˆDøøøs   –*A ÁAc                 óú   — |                       d¦  «        }|                     ¦   «          |D ]N}t          j        |d         ¬¦  «        }|                     d|d         ¦  «         |                     |¦  «         ŒOdS )zUpdate dynamic buttons list.rØ   rŠ   ©rŠ   rÝ   N)rè   ré   ÚxbmcguiÚListItemrä   ÚaddItem)r   ÚbuttonsÚlist_controlÚbtnÚitems        r   rç   z)AIChatRecommendationDialog.update_buttonsµ  sˆ   € ð —’ tÑ,Ô,ˆØ×ÒÑÔÐàð 	'ð 	'ˆCÝÔ#¨#¨g¬,Ð7Ñ7Ô7ˆDØ×Ò˜W c¨'¤lÑ3Ô3Ð3Ø× Ò  Ñ&Ô&Ð&Ð&ð	'ð 	'r   c                 óÖ  — ddl }d| _        |                      dd¦  «         |                      d|¦  «         g d¢}|                      d|                     |¦  «        ¦  «         |                      d	|                     |¦  «        ¦  «         |                      d
|                     |¦  «        ¦  «         |                      d|                     |¦  «        ¦  «         |                      d|                     |¦  «        ¦  «         |                      ¦   «         }|                      d|d         ¦  «         |                      d|d         ¦  «         |                      d|d         › ¦  «         |                      d|d         › ¦  «         |                      dd¦  «         |                      d¦  «         t          j        | j        ||f¬¦  «         	                    ¦   «          dS )z+Starts the Matrix Deconstruction animation.r   NFúWCS.AIChat.IsLoadingButtonsrÖ   úWCS.AIChat.GlitchText)ÚAÚBÚCzWCS.AIChat.Slot.ProviderzWCS.AIChat.Slot.ModelzWCS.AIChat.Slot.LoadzWCS.AIChat.Slot.ParamszWCS.AIChat.Slot.TimeúWCS.AIChat.ProviderÚproviderúWCS.AIChat.ModelÚmodelzWCS.AIChat.TempÚtempzWCS.AIChat.TopPÚtop_pzWCS.AIChat.NetLoadz0%i}  ©rÊ   rº   )
ÚrandomÚ_buttons_readyrä   ÚchoiceÚ_get_ai_display_valuesrÄ   r§   rÌ   Ú_matrix_animation_workerrÍ   )r   rŠ   r  ÚslotsÚparamss        r   rå   z0AIChatRecommendationDialog._start_button_loadingÀ  sÛ  € àˆˆˆà#ˆÔØ×ÒÐ6¸Ñ?Ô?Ð?Ø×ÒÐ0°%Ñ8Ô8Ð8ð  ��ˆØ×ÒÐ3°V·]²]À5Ñ5IÔ5IÑJÔJÐJØ×ÒÐ0°&·-²-ÀÑ2FÔ2FÑGÔGÐGØ×ÒÐ/°·²¸uÑ1EÔ1EÑFÔFÐFØ×ÒÐ1°6·=²=ÀÑ3GÔ3GÑHÔHÐHØ×ÒÐ/°·²¸uÑ1EÔ1EÑFÔFÐFð ×,Ò,Ñ.Ô.ˆØ×ÒÐ.°°zÔ0BÑCÔCÐCØ×ÒÐ+¨V°G¬_Ñ=Ô=Ð=Ø×ÒÐ*¨v°f¬~Ð,?Ñ@Ô@Ð@Ø×ÒÐ*¨v°g¬Ð,@ÑAÔAÐAØ×ÒÐ-¨tÑ4Ô4Ð4ð 	�Š˜ÑÔÐåÔ Ô =ÀUÈFÀOÐTÑTÔT×ZÒZÑ\Ô\Ð\Ð\Ð\r   c                 óè  — | j                              d¦  «        }|}d}d}d}d}	 |dk    rj| j                              d¦  «        }| j                              d¦  «        }| j                              d	¦  «        }| j                              d
¦  «        }�n¼|dk    rj| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }�nL|dk    ri| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }nÝ|dk    ri| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }nn|dk    rh| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        }n#  Y nxY w|                     ¦   «         ||||dœS ) z(Fetches all AI settings for HUD display.Úai_providerz0.7z0.9Ú2048ÚUnknownÚopenaiÚopenai_modelÚopenai_temperatureÚopenai_top_pÚopenai_max_output_tokensÚ	anthropicÚanthropic_modelÚanthropic_temperatureÚanthropic_top_pÚanthropic_max_tokensÚgoogleÚgoogle_modelÚgoogle_temperatureÚgoogle_top_pÚgoogle_max_tokensÚmistralÚmistral_modelÚmistral_temperatureÚmistral_top_pÚmistral_max_tokensÚgroqÚ
groq_modelÚgroq_temperatureÚ
groq_top_pÚgroq_max_tokens)r  r  r  r  Útokens)r   ra   rh   )r   r  Úp_keyr  r  r<  r  s          r   r  z1AIChatRecommendationDialog._get_ai_display_valuesÞ  s_  € à”:×(Ò(¨Ñ7Ô7ˆØˆð ˆØˆØˆØˆð	Ø˜8Ò#Ð#Øœ
×-Ò-¨nÑ=Ô=�Ø”z×,Ò,Ð-AÑBÔB�Øœ
×-Ò-¨nÑ=Ô=�Øœ×.Ò.Ð/IÑJÔJ�‘Ø˜[Ò(Ð(Øœ
×-Ò-Ð.?Ñ@Ô@�Ø”z×,Ò,Ð-DÑEÔE�Øœ
×-Ò-Ð.?Ñ@Ô@�Øœ×.Ò.Ð/EÑFÔF�‘Ø˜XÒ%Ð%Øœ
×-Ò-¨nÑ=Ô=�Ø”z×,Ò,Ð-AÑBÔB�Øœ
×-Ò-¨nÑ=Ô=�Øœ×.Ò.Ð/BÑCÔC��Ø˜YÒ&Ð&Øœ
×-Ò-¨oÑ>Ô>�Ø”z×,Ò,Ð-BÑCÔC�Øœ
×-Ò-¨oÑ>Ô>�Øœ×.Ò.Ð/CÑDÔD��Ø˜VÒ#Ð#Øœ
×-Ò-¨lÑ;Ô;�Ø”z×,Ò,Ð-?Ñ@Ô@�Øœ
×-Ò-¨lÑ;Ô;�Øœ×.Ò.Ð/@ÑAÔA�øøð	ØˆDøøøð !ŸšÑ(Ô(ØØØØð
ð 
ð 	
s   ¦H,I ÉIc                 óÒ  ‡‡— ddl }ddlŠdŠt          |¦  «        }d"ˆˆfd„	}t          d¦  «        D �]@}t	          |¦  «        }t          t          d|dz  ¦  «        ¦  «        D ]3}‰                     d|dz
  ¦  «        }	‰                     ‰¦  «        ||	<   Œ4|                      d	d
 	                    |¦  «        ¦  «         |                      d ||d         ¦  «        ¦  «         |                      d ||d         d¦  «        ¦  «         |dk    r|                      dd¦  «         n9|dk    r|                      dd¦  «         n|dk    r|                      dd¦  «          |j
        d¦  «         �ŒB |j         ¦   «         }
|                      d|d         ¦  «         |                      d|d         ¦  «         t          | dd¦  «        �sCdt           |j         ¦   «         dz  ¦  «        dz  z  }|                      d	d|› �¦  «         |                      dd¦  «         ‰                     ¦   «         dk     r'|                      d ||d         d¦  «        ¦  «         n|                      d|d         ¦  «         ‰                     ¦   «         dk     r'|                      d ||d         d¦  «        ¦  «         n|                      d|d         ¦  «          |j
        d¦  «          |j         ¦   «         |
z
  dk    rnt          | dd¦  «        �¯C|                      d d
¦  «         |                      d	d
¦  «         |                      dd
¦  «         |                      d!¦  «         dS )#z+Animating text dissolving into matrix code.r   Nz010101010100100101#@?&%<>/[]r¿   c           
      óB  •— t          | ¦  «        }t          t          dt          t	          | ¦  «        |z  ¦  «        ¦  «        ¦  «        D ]@}‰                     dt	          | ¦  «        dz
  ¦  «        }‰                     ‰¦  «        ||<   ŒAd                     |¦  «        S )Né   r   rp   )ÚlistÚrangeÚmaxr`   ÚlenÚrandintr  r'   )rø   ÚratioÚresultÚ_ÚidxÚcharsr  s        €€r   ÚscramblezEAIChatRecommendationDialog._matrix_animation_worker.<locals>.scramble  s†   ø€ Ý˜$‘Z”ZˆFÝ�3˜q¥#¥c¨$¡i¤i°%Ñ&7Ñ"8Ô"8Ñ9Ô9Ñ:Ô:ð 3ð 3�Ø—n’n Q­¨D©	¬	°A©Ñ6Ô6�Ø$Ÿmšm¨EÑ2Ô2��s‘�Ø—7’7˜6‘?”?Ð"r   é   r@  é   r  rp   r  r  r  r  g333333Ó?zWCS.AIChat.FunStatuszDeconstructing...é   zAnalyzing Neural Paths...é
   zParsing Context...çš™™™™™¹?r  Fú.é   é   Ú
GENERATINGzConstructing Response...çš™™™™™©?r   r  rØ   ©r¿   )rÂ   r  rD  rB  rA  rC  rE  r  rä   r'   rÃ   Úgetattrr`   rÄ   )r   Úoriginal_textr  rÂ   ÚlengthrK  r|   Úglitch_listrH  rI  Ú
start_waitÚdotsrJ  r  s               @@r   r  z3AIChatRecommendationDialog._matrix_animation_worker  sÀ  øø€ àˆˆˆØˆˆˆà.ˆÝ�]Ñ#Ô#ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#õ �r‘”ð 	ñ 	ˆAå˜}Ñ-Ô-ˆKÝ�3˜q &¨A¡+Ñ.Ô.Ñ/Ô/ð 8ð 8�Ø—n’n Q¨°©
Ñ3Ô3�Ø#)§=¢=°Ñ#7Ô#7�˜CÑ Ð Ø×ÒÐ4°b·g²g¸kÑ6JÔ6JÑKÔKÐKð ×ÒÐ2°H°H¸VÀJÔ=OÑ4PÔ4PÑQÔQÐQØ×ÒÐ/°°¸&À¼/È3Ñ1OÔ1OÑPÔPÐPð �AŠvˆv�t×'Ò'Ð(>Ð@SÑTÔTÐTÐTØ�a’�˜×)Ò)Ð*@ÐB]Ñ^Ô^Ð^Ð^Ø�b’�˜$×*Ò*Ð+AÐCWÑXÔXÐXàˆDŒJ�s‰OŒOˆO‰Oð �T”Y‘[”[ˆ
ð 	×ÒÐ.°°zÔ0BÑCÔCÐCØ×ÒÐ+¨V°G¬_Ñ=Ô=Ð=å˜$Ð 0°%Ñ8Ô8ñ 	à�#˜i˜dœi™kœk¨A™oÑ.Ô.°Ñ2Ñ3ˆDØ×ÒÐ4Ð6IÀ4Ð6IÐ6IÑJÔJÐJØ×ÒÐ3Ð5OÑPÔPÐPð �}Š}‰Œ Ò$Ð$Ø× Ò Ð!6¸¸ÀÈ
ÔASÐUXÑ8YÔ8YÑZÔZÐZÐZà× Ò Ð!6¸¸zÔ8JÑKÔKÐKà�}Š}‰Œ Ò%Ð%Ø× Ò Ð!3°X°X¸fÀW¼oÈsÑ5SÔ5SÑTÔTÐTÐTà× Ò Ð!3°V¸G´_ÑEÔEÐEàˆDŒJ�s‰OŒOˆOð ˆtŒy‰{Œ{˜ZÑ'¨"Ò,Ð,Øõ+ ˜$Ð 0°%Ñ8Ô8ñ 	ð0 	×ÒÐ6¸Ñ;Ô;Ð;Ø×ÒÐ0°"Ñ5Ô5Ð5Ø×ÒÐ/°Ñ4Ô4Ð4ð 	�Š˜ÑÔÐÐÐr   c                 óž  — |dk    �r2|                       d¦  «        }|                     ¦   «         }|sd S |                     d¦  «        }|                     ¦   «         }|                     d¦  «        r“|                     d¦  «        d         | _        d | _        g | _        d | _	        	 |                       d¦  «        }| 
                    d¦  «         n#  Y nxY w|                      |¦  «         |                      ¦   «          d S |                      |¦  «         |r|n|}|                      ||¬¦  «         d S |d	k    �r	 |                       d
¦  «        }t          |t          j        ¦  «        rA|                     ¦   «         }	|	r*| 
                    d¦  «         |                      |	¦  «         nD|                     ¦   «         }	|	r,| 
                    d¦  «         |                      |	¦  «         d S d S d S # t$          $ r# t'          j        dt&          j        ¦  «         Y d S t,          $ r-}
t'          j        d|
› �t&          j        ¦  «         Y d }
~
d S d }
~
ww xY w|dk    r|                      ¦   «          d S |dk    r|                      ¦   «          d S |dk    r|                      ¦   «          d S |dk    r|                      ¦   «          d S d S )NrØ   rÝ   z	set_mode:ú:r@  rð   rp   )Údisplay_texté¹  é¸  zb[plugin.video.milionar] Error: Control 3000 does not support getText() or is not an expected type.z:[plugin.video.milionar] Error handling Send button click: rÞ   éÔ  é¼  é   )rè   ÚgetSelectedItemÚgetPropertyÚgetLabelÚ
startswithÚsplitr   r   r¥   r¯   rõ   rå   râ   Úhandle_user_inputÚ
isinstancer  ÚControlEditrô   ÚAttributeErrorr+   r,   r-   r.   r/   Úhandle_recommendation_clickÚ_handle_preview_action_clickÚ_handle_nav_clickÚ_handle_icon_bar_click)r   Ú	controlIdr  r
  ÚvalrŠ   rù   Útext_for_llmÚinput_controlrø   r4   s              r   ÚonClickz"AIChatRecommendationDialog.onClickX  s`  € à˜ÒÑØŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØÐ˜˜à×"Ò" 7Ñ+Ô+ˆCØ—M’M‘O”OˆEð �~Š~˜kÑ*Ô*ð IØ"%§)¢)¨C¡.¤.°Ô"3�”ð  $�”Ø!�”Ø'+�Ô$ðØ&*§o¢o°dÑ&;Ô&;�OØ#×+Ò+¨BÑ/Ô/Ð/Ð/øðØ�Døøøà×*Ò*¨5Ñ1Ô1Ð1Ø×5Ò5Ñ7Ô7Ð7Ð7Ð7ð ×*Ò*¨5Ñ1Ô1Ð1ð '*Ð4˜s˜s¨u�ð ×&Ò& |À%Ð&ÑHÔHÐHÐHÐHð ˜$ÒÑðjØ $§¢°Ñ 5Ô 5�Ý˜m­WÔ-@ÑAÔAð 5Ø(×0Ò0Ñ2Ô2�DØð 5Ø%×-Ò-¨bÑ1Ô1Ð1Ø×.Ò.¨tÑ4Ô4Ð4øð
 )×0Ò0Ñ2Ô2�DØð 5Ø%×-Ò-¨bÑ1Ô1Ð1Ø×.Ò.¨tÑ4Ô4Ð4Ð4Ð4ð5ð 5è è øõ "ð Pð Pð PÝ”Ð}õ  @Dô  @Oñ  Pô  Pð  Pð  Pð  Pð  PÝð jð jð jÝ”ÐYÐVWÐYÐYÕ[_Ô[hÑiÔiÐiÐiÐiÐiÐiÐiÐiøøøøðjøøøð ˜$ÒÐØ×,Ò,Ñ.Ô.Ð.Ð.Ð.ð ˜$ÒÐØ×-Ò-Ñ/Ô/Ð/Ð/Ð/ð ˜$ÒÐØ×"Ò"Ñ$Ô$Ð$Ð$Ð$ð ˜$ÒÐØ×'Ò'Ñ)Ô)Ð)Ð)Ð)ð Ðs+   Â)*C ÃCÅB0G8 Ç8)IÈ$	IÈ-"IÉIc                 óÖ  — |                      ¦   «         }|t          j        k    r+|                      ¦   «         dk    rddlm}  || ¦  «        rdS | xj        dz  c_        |                      d¦  «         |t          j        t          j	        fv rø|                      ¦   «         }|dk    r™|  
                    d¦  «        }|                     ¦   «         }|t          j        k    r/| j        dk    r$| j        s|                      ¦   «          dS d| _        || _        t          j        d¦  «         |                      ¦   «          dS |d	k    r;|t          j	        k    r-|                      ¦   «          |                      d¦  «         dS dS dS |t          j        t          j        fv �rA|                      ¦   «         dk    rŒ|t          j        k    r-|                      d
d¦  «         |                      d¦  «         dS |t          j        k    r=| j        r	d| _        dS |                      dd¦  «         |                      d¦  «         dS dS |                      ¦   «         dk    r)|t          j        k    r|                      d¦  «         dS dS |                      ¦   «         dk    r@|t          j        k    r2t/          | dd¦  «        r	d| _        dS |                      ¦   «          dS dS dS |t          j        t          j        t          j        fv rá|                      ¦   «         dk    r|                      d¦  «         dS |  
                    d¦  «        }|                      d
¦  «        dk    s|                      ¦   «         dv rD|                     ¦   «         dk    r,|                      d
¦  «         |                      d¦  «         dS |                      ¦   «          |                       ¦   «          dS dS )z.Handle navigation actions for preview updates.rÞ   r   )Údialog_contextNr@  úWCS.AIPreview.ShowActionsFrU  rc  rÕ   rÖ   rØ   rb  ra  Ú_just_focused_textbox)ra  r`  rØ   )!ÚgetIdr  ÚACTION_CONTEXT_MENUÚ
getFocusIdrà   rx  r®   rê   ÚACTION_MOVE_LEFTÚACTION_MOVE_RIGHTrè   ÚgetSelectedPositionr³   r´   Ú_show_nav_sidebarrÂ   rÃ   Ú _update_preview_for_current_itemÚ_hide_nav_sidebarrÄ   ÚACTION_MOVE_UPÚACTION_MOVE_DOWNrä   rW  rz  Ú_handle_debug_triggerÚACTION_PREVIOUS_MENUÚACTION_NAV_BACKÚACTION_PARENT_DIRrf  ÚsizeÚ_clear_preview_propertiesr•   )r   ÚactionÚ	action_idrx  Ú
focused_idr  Úcurrent_poss          r   ÚonActionz#AIChatRecommendationDialog.onAction¤  s;  € à—L’L‘N”Nˆ	Ø�Ô3Ò3Ð3¸¿ºÑ8IÔ8IÈTÒ8QÐ8QØ7Ð7Ð7Ð7Ð7Ð7Øˆ~˜dÑ#Ô#ð Ø�ð 	ÐÔ˜aÑÐÔØ×ÒÐ6Ñ7Ô7Ð7ð �Ô1µ7Ô3LÐMÐMÐMØŸšÑ*Ô*ˆJØ˜TÒ!Ð!à#Ÿš¨tÑ4Ô4�Ø*×>Ò>Ñ@Ô@�ð ¥Ô 8Ò8Ð8¸TÔ=UÐYZÒ=ZÐ=ZØÔ4ð :Ø×.Ò.Ñ0Ô0Ð0Ø˜ð 5:˜Ô1ð ,7�Ô(õ ”
˜4Ñ Ô Ð Ø×5Ò5Ñ7Ô7Ð7Ð7Ð7ð ˜tÒ#Ð#¨	µWÔ5NÒ(NÐ(NØ×&Ò&Ñ(Ô(Ð(Ø—’ Ñ%Ô%Ð%Ø�ð $Ð#Ð(NÐ(Nð �7Ô1µ7Ô3KÐLÐLÑLØ�ŠÑ Ô  DÒ(Ð(Ø¥Ô 8Ò8Ð8à×%Ò%Ð&:¸FÑCÔCÐCØ—_’_ TÑ*Ô*Ð*Ð*Ð*Ø¥'Ô"8Ò8Ð8ð Ô1ð  Ø5:˜Ô2Ø˜Ø×%Ò%Ð&AÀ6ÑJÔJÐJØ—_’_ TÑ*Ô*Ð*Ð*Ð*ð 9Ð8ð —’Ñ"Ô" dÒ*Ð*Ø¥Ô 8Ò8Ð8Ø—O’O DÑ)Ô)Ð)Ø�Fð 9Ð8ð —’Ñ"Ô" dÒ*Ð*Ø¥Ô 8Ò8Ð8å˜tÐ%<¸eÑDÔDð Ø5:˜Ô2Ø˜Ø×.Ò.Ñ0Ô0Ð0Ø�Fð +Ð*Ø8Ð8ð �7Ô7½Ô9PÕRYÔRkÐlÐlÐlà�ŠÑ Ô  DÒ(Ð(Ø—’ Ñ%Ô%Ð%Ø�ð  Ÿ?š?¨4Ñ0Ô0ˆLØ× Ò Ð!5Ñ6Ô6¸&Ò@Ð@ÀDÇOÂOÑDUÔDUÐYkÐDkÐDkÐq}÷  rCò  rCñ  rEô  rEð  HIò  rIð  rIØ×"Ò"Ð#7Ñ8Ô8Ð8Ø—’ Ñ%Ô%Ð%Ø�ð ×*Ò*Ñ,Ô,Ð,Ø�JŠJ‰LŒLˆLˆLˆLð! mÐlr   c                 óº  — |dk    rd| j         dv rd| _        |                      d¦  «         |                      d¦  «         |                      d¦  «         |                      ¦   «          né|dk    rnâ|dv r+|                      d¦  «         |                      d¦  «         n³|d	v r|                      d¦  «         n™|d
k    rd| _        |                      d¦  «         nv|dk    rGd| _        |                      d¦  «         |                      d¦  «         |                      d¦  «         n)|                      d¦  «         |                      ¦   «          || _         dS )z@Handle focus changes - populate preview on recommendation hover.rÞ   )rØ   é¡  ra  r`  éé  éê  Try  rÕ   úWCS.NavSidebar.Visiblerb  )rc  rd  )rØ   r`  r“  r”  ra  r’  N)rµ   r´   rê   r‚  rz  rÄ   r‹  )r   rr  s     r   ÚonFocusz"AIChatRecommendationDialog.onFocus  sœ  € à˜ÒÐð Ô"Ð&JÐJÐJØ,0�Ô)à×ÒÐ:Ñ;Ô;Ð;Ø×ÒÐ3Ñ4Ô4Ð4Ø×ÒÐ7Ñ8Ô8Ð8Ø×1Ò1Ñ3Ô3Ð3Ð3à˜$ÒÐàà˜,Ð&Ð&à×ÒÐ:Ñ;Ô;Ð;Ø×ÒÐ3Ñ4Ô4Ð4Ð4àÐ2Ð2Ð2à×ÒÐ:Ñ;Ô;Ð;Ð;à˜$ÒÐà)-ˆDÔ&Ø×ÒÐ:Ñ;Ô;Ð;Ð;ð ˜$ÒÐà)-ˆTÔ&à×ÒÐ 4Ñ5Ô5Ð5à�_Š_˜TÑ"Ô"Ð"Ø×ÒÐ ;Ñ<Ô<Ð<Ð<ð ×ÒÐ:Ñ;Ô;Ð;Ø×*Ò*Ñ,Ô,Ð,ð (ˆÔÐÐr   c                 óB  ‡ ‡‡‡‡	‡
— 	 ‰                       d¦  «        }|                     ¦   «         }|s‰                      ¦   «          dS |                     d¦  «        Š	‰	s‰                      ¦   «          dS ‰	‰ j        k    rdS ‰ j        du}|                     d¦  «        p‰ j        pdŠ|                     d¦  «        p|                     ¦   «         Š|                     d¦  «        pdŠ
|                     d	¦  «        pdŠ|rI‰                      d
¦  «         ˆˆˆ ˆˆ	ˆ
fd„}t          j
        |d¬¦  «                             ¦   «          dS ‰                      ‰	‰‰‰
‰¦  «         dS # t          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)u;   NaÄ�te a zobrazÃ­ preview pro aktuÃ¡lnÄ› focusovanÃ½ titul.rÞ   NÚtmdb_idr   r   ÚtitleÚyearrp   ÚposterúWCS.AIPreview.Statec                  óŠ   •— dd l }  | j        d¦  «         ‰                     ¦   «          ‰                     ‰‰‰‰‰¦  «         d S )Nr   g      Ð?)rÂ   rÃ   r‹  Ú_apply_new_preview)rÂ   r   r›  r   r™  r˜  rš  s    €€€€€€r   Údelayed_updatezSAIChatRecommendationDialog._update_preview_for_current_item.<locals>.delayed_updateY  sR   ø€ Ø�K�K�KØ�D”J˜tÑ$Ô$Ð$Ø×2Ò2Ñ4Ô4Ð4Ø×+Ò+¨G°ZÀÈÈfÑUÔUÐUÐUÐUr   TrÉ   z.[plugin.video.milionar] Preview update error: )rè   re  r‹  rf  r­   r   rg  ÚgetArtrê   r§   rÌ   rÍ   rž  r.   r+   r,   r/   )r   r  r
  Úis_title_changerŸ  r4   r   r›  r™  r˜  rš  s   `     @@@@@r   r‚  z;AIChatRecommendationDialog._update_preview_for_current_item:  s  øøøøøø€ ð*	ZØŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØð Ø×.Ò.Ñ0Ô0Ð0Ø�à×&Ò& yÑ1Ô1ˆGØð Ø×.Ò.Ñ0Ô0Ð0Ø�ð ˜$Ô/Ò/Ð/Ø�ð #Ô3¸4Ð?ˆOð ×)Ò)¨,Ñ7Ô7ÐU¸4¼?ÐUÈgˆJØ×$Ò$ WÑ-Ô-Ð@°·²±´ˆEØ×#Ò# FÑ+Ô+Ð1¨rˆDØ—[’[ Ñ*Ô*Ð0¨bˆFàð Rà×"Ò"Ð#8Ñ9Ô9Ð9ðVð Vð Vð Vð Vð Vð Vð Vð Vð Võ Ô ¨¸tÐDÑDÔD×JÒJÑLÔLÐLÐLÐLð ×'Ò'¨°¸UÀDÈ&ÑQÔQÐQÐQÐQøåð 	Zð 	Zð 	ZÝŒHÐIÀaÐIÐIÍ4Ì=ÑYÔYÐYÐYÐYÐYÐYÐYÐYøøøøð	Zøøøs0   ˆ?E' Á	+E' Á6E' ÂCE' ÅE' Å'
FÅ1"FÆFc                 óF  ‡ ‡— ‰‰ _         ‰                      d|¦  «         ‰                      d|¦  «         ‰                      d|¦  «         ‰                      d|dk    rdnd¦  «         ‰                      d¦  «         ‰ xj        d	z  c_        ‰ j        }ˆ ˆfd
„}t	          j        ||fd¬¦  «                             ¦   «          ‰                      |‰||¦  «         ‰‰ j        v r"‰  	                    ‰ j        ‰         ¦  «         dS ‰                      d¦  «         ‰                      d¦  «         ‰                      d¦  «         ‰                      d¦  «         ‰                      d¦  «         t	          j        ‰ j
        ‰|f¬¦  «                             ¦   «          dS )u7   NastavÃ­ novÃ¡ preview data a spustÃ­ naÄ�tenÃ­ z TMDb.zWCS.AIPreview.TitlezWCS.AIPreview.YearúWCS.AIPreview.PosterzWCS.AIPreview.MediaTypeLabelr   ÚFilmu   SeriÃ¡lry  r@  c                 ó.  •— dd l } |j        d¦  «         ‰j        | k    rd S ‰j        ‰k    rd S 	 ‰                     ¦   «         dk    rd S ‰                     d¦  «        rd S n#  Y nxY w‰                     dd¦  «         ‰                     d¦  «         d S )Nr   g      @rÞ   rÕ   ry  rÖ   rb  )rÂ   rÃ   r®   r­   r}  rf  rä   rÄ   )ÚtokenrÂ   r   r˜  s     €€r   Úshow_buttons_laterzIAIChatRecommendationDialog._apply_new_preview.<locals>.show_buttons_latery  sÄ   ø€ ØˆKˆKˆKØˆDŒJ�s‰OŒOˆOð Ô! UÒ*Ð*Ø�ð Ô$¨Ò/Ð/Ø�ðà—?’?Ñ$Ô$¨Ò,Ð,Ø�Fà×#Ò#Ð$8Ñ9Ô9ð Ø�FðøðØ�øøøð ×ÒÐ8¸&ÑAÔAÐAØ�OŠO˜DÑ!Ô!Ð!Ð!Ð!s   ±A# ÁA# Á#A'T)rÊ   rº   rË   rœ  úWCS.AIPreview.FanartzWCS.AIPreview.InfoBlockúWCS.AIPreview.IsCompactúWCS.AIPreview.Plotr  N)r­   rä   rê   r®   r§   rÌ   rÍ   Ú_populate_preview_actionsr¬   Ú_apply_cached_preview_dataÚ_fetch_preview_details)r   r˜  r   r™  rš  r›  Úcurrent_tokenr§  s   ``      r   rž  z-AIChatRecommendationDialog._apply_new_previewh  sâ  øø€ à 'ˆÔð 	×ÒÐ.°Ñ6Ô6Ð6Ø×ÒÐ-¨tÑ4Ô4Ð4Ø×ÒÐ/°Ñ8Ô8Ð8Ø×ÒÐ7À:ÐQXÒCXÐCX¸¸Ð^gÑhÔhÐhð 	×ÒÐ6Ñ7Ô7Ð7ð 	ÐÔ˜aÑÐÔØÔ*ˆð	"ð 	"ð 	"ð 	"ð 	"ð 	"õ6 	ÔÐ 2¸-Ð9IÐRVÐWÑWÔW×]Ò]Ñ_Ô_Ð_ð 	×&Ò& z°7¸EÀ4ÑHÔHÐHð �dÔ)Ð)Ð)Ø×+Ò+¨DÔ,?ÀÔ,HÑIÔIÐIÐIÐIð ×ÒÐ4Ñ5Ô5Ð5Ø×ÒÐ5Ñ6Ô6Ð6Ø×ÒÐ8Ñ9Ô9Ð9Ø×ÒÐ8Ñ9Ô9Ð9Ø×ÒÐ3Ñ4Ô4Ð4åÔ DÔ$?ÀwÐPZÐF[Ð\Ñ\Ô\×bÒbÑdÔdÐdÐdÐdr   c                 óV   — g d¢}|D ]}|                       d|› �¦  «         Œd| _        dS )u$   VymaÅ¾e vÅ¡echny preview properties.)ÚTitleÚYearÚPosterÚFanartÚ	InfoBlockÚPlotÚ	IsCompactÚStatezWCS.AIPreview.N)rê   r­   )r   ÚpropsÚprops      r   r‹  z4AIChatRecommendationDialog._clear_preview_properties¦  sJ   € à`Ð`Ð`ˆØð 	8ð 	8ˆDØ×ÒÐ6°Ð6Ð6Ñ7Ô7Ð7Ð7Ø $ˆÔÐÐr   Tc                 ór  ‡ — |s‰                       dd¦  «         n‰                      d¦  «         ‰                      ¦   «          ‰                      ¦   «          ‰                       dd¦  «         ‰ j        D ]1}|d         ‰ j        k    r‰                       d|d         ¦  «          nŒ2‰                      d¦  «         t          ‰ dd	¦  «        }|d	k    r3	 ‰                      d¦  «        }| 	                    |¦  «         n#  Y nxY w|s/ˆ fd
„}t          j        |d¬¦  «                             ¦   «          dS dS )u°   ZobrazÃ­ navigaÄ�nÃ­ sidebar a naplnÃ­ poloÅ¾ky.
        
        Args:
            animate: Pokud False, potlaÄ�Ã­ slide animaci (pro plynulÃ© pÅ™epÃ­nÃ¡nÃ­ dialogÅ¯)
        úWCS.NavSidebar.NoAnimationrÖ   r•  r‰   zWCS.NavSidebar.ActiveLabelrŠ   rc  r£   r   c                  ól   •— t          j        d¦  «         	 ‰                      d¦  «         d S #  Y d S xY w)Nr¿   r»  )rÂ   rÃ   rê   rL   s   €r   Úenable_animation_laterzLAIChatRecommendationDialog._show_nav_sidebar.<locals>.enable_animation_laterÓ  s@   ø€ Ý”
˜3‘”�ðØ×&Ò&Ð'CÑDÔDÐDÐDÐDøðØ�D�DøøørÈ   TrÉ   N)rä   rê   Ú_populate_nav_sidebarÚ_populate_icon_barÚ	NAV_ITEMSr²   rÄ   rW  rè   Ú
selectItemr§   rÌ   rÍ   )r   Úanimater
  Únav_posr  r½  s   `     r   r�  z,AIChatRecommendationDialog._show_nav_sidebar±  s…  ø€ ð ð 	=Ø×ÒÐ9¸6ÑBÔBÐBÐBà×ÒÐ;Ñ<Ô<Ð<à×"Ò"Ñ$Ô$Ð$Ø×ÒÑ!Ô!Ð!Ø×ÒÐ1°6Ñ:Ô:Ð:à”Nð 	ð 	ˆDØ�DŒz˜TÔ1Ò1Ð1Ø× Ò Ð!=¸tÀG¼}ÑMÔMÐMØ�ð 2ð 	�Š˜ÑÔÐõ ˜$ °Ñ3Ô3ˆØ�QŠ;ˆ;ðØ#Ÿš¨tÑ4Ô4�Ø×'Ò'¨Ñ0Ô0Ð0Ð0øðØ�øøøð ð 	Qðð ð ð ð õ ÔÐ$:À4ÐHÑHÔH×NÒNÑPÔPÐPÐPÐPð	Qð 	Qs   Ã*C? Ã?Dc                 ó0   — |                       d¦  «         dS )u   Skryje navigaÄ�nÃ­ sidebar.r•  N)rê   rL   s    r   rƒ  z,AIChatRecommendationDialog._hide_nav_sidebarÝ  s   € à×ÒÐ3Ñ4Ô4Ð4Ð4Ð4r   c                 ó  — 	 |                       d¦  «        }|                     ¦   «          | j        D ]’}t          j        |d         ¬¦  «        }|                     d|d         i¦  «         |                     d|d         ¦  «         |d         | j        k    r|                     dd¦  «         |                     |¦  «         Œ“d
S # t          $ r-}t          j        d	|› �t          j        ¦  «         Y d
}~d
S d
}~ww xY w)u'   NaplnÃ­ navigaÄ�nÃ­ sidebar poloÅ¾kami.rc  rŠ   r  r‹   Únav_idr‰   ÚIsActiverÖ   z4[plugin.video.milionar] Nav sidebar populate error: N)rè   ré   rÀ  r  r  ÚsetArträ   r²   r  r.   r+   r,   r/   )r   r  Únav_itemr
  r4   s        r   r¾  z0AIChatRecommendationDialog._populate_nav_sidebará  s+  € ð	`ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð à œNð 	+ð 	+�ÝÔ'¨h°wÔ.?Ð@Ñ@Ô@�Ø—’˜V X¨fÔ%5Ð6Ñ7Ô7Ð7Ø× Ò  ¨8°D¬>Ñ:Ô:Ð:ð ˜D”> TÔ%9Ò9Ð9Ø×$Ò$ Z°Ñ8Ô8Ð8à×$Ò$ TÑ*Ô*Ð*Ð*ð	+ð 	+øõ ð 	`ð 	`ð 	`ÝŒHÐOÈAÐOÐOÕQUÔQ^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_øøøøð	`øøøs   ‚CC Ã
C>Ã"C9Ã9C>c                 óÌ  — 	 |                       d¦  «        }|                     ¦   «          ddddœddddœd	d
ddœg}|D ]k}t          j        |d         ¬¦  «        }|                     d|d         i¦  «         |                     d|d         ¦  «         |                     |¦  «         ŒldS # t          $ r-}t          j	        d|› �t          j
        ¦  «         Y d}~dS d}~ww xY w)u*   NaplnÃ­ horizontÃ¡lnÃ­ liÅ¡tu ikon (7200).rd  r•   r–   r—   rˆ   r’   r“   r”   r�   rÒ   r‘   rŠ   r  r‹   rÆ  r‰   z1[plugin.video.milionar] Icon bar populate error: N)rè   ré   r  r  rÈ  rä   r  r.   r+   r,   r/   )r   r  Ú
icon_itemsÚ	icon_itemr
  r4   s         r   r¿  z-AIChatRecommendationDialog._populate_icon_barô  s2  € ð	]ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð ð ¨Ð;RÐSÐSØ!¨KÐAZÐ[Ð[Ø%°Ð>VÐWÐWðˆJð (ð +ð +�	ÝÔ'¨i¸Ô.@ÐAÑAÔA�Ø—’˜V Y¨vÔ%6Ð7Ñ8Ô8Ð8Ø× Ò  ¨9°T¬?Ñ;Ô;Ð;Ø×$Ò$ TÑ*Ô*Ð*Ð*ð	+ð +øõ
 ð 	]ð 	]ð 	]ÝŒHÐLÈÐLÐLÍdÌmÑ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\øøøøð	]øøøs   ‚B(B, Â,
C#Â6"CÃC#c                 ód  — 	 |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|                     ¦   «         }|| j        k    r+|                      ¦   «          |                      d¦  «         dS |dk    r+|                      ¦   «          |                      d¦  «         dS |dk    r| j                             ¦   «          dS |  	                    ||¦  «         dS # t          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)u2   Zpracuje klik na poloÅ¾ku v navigaÄ�nÃ­m sidebaru.rc  NrÆ  rÞ   r•   r’   z)[plugin.video.milionar] Nav click error: )rè   re  rf  r€  r²   rƒ  rÄ   r   ÚopenSettingsÚ_switch_to_dialogr.   r+   r,   r/   )r   r  r
  rÆ  r    r4   s         r   rp  z,AIChatRecommendationDialog._handle_nav_click  s^  € ð	UØŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØð Ø�à×%Ò% hÑ/Ô/ˆFØ'×;Ò;Ñ=Ô=ˆLð ˜Ô-Ò-Ð-Ø×&Ò&Ñ(Ô(Ð(Ø—’ Ñ%Ô%Ð%Ø�ð ˜Ò Ð à×&Ò&Ñ(Ô(Ð(Ø—’ Ñ%Ô%Ð%Ø�à˜Ò#Ð#à”
×'Ò'Ñ)Ô)Ð)Ø�ð ×"Ò" 6¨<Ñ8Ô8Ð8Ð8Ð8øåð 	Uð 	Uð 	UÝŒHÐDÀÐDÐDÅdÄmÑTÔTÐTÐTÐTÐTÐTÐTÐTøøøøð	Uøøøs/   ‚+C8 ¯AC8 Â/C8 Â?C8 Ã C8 Ã8
D/Ä"D*Ä*D/c                 ó(  — 	 |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|dk    r+|                      ¦   «          |                      d¦  «         dS |dk    r| j                             ¦   «          dS d}t          | j        ¦  «        D ]\  }}|d         |k    r|} nŒ|  	                    ||¦  «         dS # t          $ r-}t          j        d	|› �t          j        ¦  «         Y d}~dS d}~ww xY w)
u?   Zpracuje klik na poloÅ¾ku v horizontÃ¡lnÃ­ liÅ¡tÄ› ikon (7200).rd  NrÆ  r•   rÞ   r’   r   r‰   z.[plugin.video.milionar] Icon bar click error: )rè   re  rf  rƒ  rÄ   r   rÎ  rw   rÀ  rÏ  r.   r+   r,   r/   )r   r  r
  rÆ  r    r|   rÉ  r4   s           r   rq  z1AIChatRecommendationDialog._handle_icon_bar_click+  sV  € ð	ZØŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØð Ø�à×%Ò% hÑ/Ô/ˆFð ˜Ò Ð Ø×&Ò&Ñ(Ô(Ð(Ø—’ Ñ%Ô%Ð%Ø�à˜Ò#Ð#Ø”
×'Ò'Ñ)Ô)Ð)Ø�ð ˆLÝ(¨¬Ñ8Ô8ð ð ‘��8Ø˜D”> VÒ+Ð+Ø#$�LØ�Eð ,ð
 ×"Ò" 6¨<Ñ8Ô8Ð8Ð8Ð8øåð 	Zð 	Zð 	ZÝŒHÐIÀaÐIÐIÍ4Ì=ÑYÔYÐYÐYÐYÐYÐYÐYÐYøøøøð	Zøøøs*   ‚+C ¯AC Á5C ÂAC Ã
DÃ$"DÄDr   c           	      ó  — | j                              |¦  «        }|sdS |                      ¦   «          |                      ¦   «          | j                             d¦  «        }t          j        d|› d|› d|› d�¦  «         dS )uN   ZavÅ™e aktuÃ¡lnÃ­ dialog a otevÅ™e novÃ½ podle nav_id s otevÅ™enÃ½m sidebarem.Nr‰   zRunPlugin(plugin://z?action=z!&show_nav_sidebar=1&nav_position=ú))ÚNAV_ACTIONSrC   r‹  r•   r   r%   r+   Úexecutebuiltin)r   rÆ  r    rŒ  Úaddon_ids        r   rÏ  z,AIChatRecommendationDialog._switch_to_dialogL  s�   € àÔ!×%Ò% fÑ-Ô-ˆØð 	ØˆFà×&Ò&Ñ(Ô(Ð(Ø�
Š
‰Œˆð ”:×*Ò*¨4Ñ0Ô0ˆÝÔÐ|°(Ð|Ð|ÀFÐ|Ð|ÐmyÐ|Ð|Ð|Ñ}Ô}Ð}Ð}Ð}r   c           
      óD	  — 	 t          ¦   «         }|dk    rdnd}d|› d|› �}|dddœ}t          j        ||d¬	¦  «        }|j        d
k    �r|                     ¦   «         }|                     d¦  «        r|                     dd¦  «        d›d�nd|dk    r.|                     d¦  «        r|                     dd¦  «        › d�ndd                     d„ |                     dg ¦  «        dd…         D ¦   «         ¦  «        |                     dd¦  «        |                     d¦  «        rd|                     d¦  «        › �nd|                     d¦  «        rd|                     d¦  «        › �nd|                     dd¦  «        dœ}	|dk    r•|                     dd¦  «        }
g }|
r|                     |
› d�¦  «         |                     d d¦  «        }|d!k    r|                     d"¦  «         n|d#v r|                     d$¦  «         d%                     |¦  «        |	d<   |                     di ¦  «        }|dk    rHd&„ |                     d'g ¦  «        D ¦   «         dd(…         }|rd)d                     |¦  «        › �nd|	d*<   nGd+„ |                     d,g ¦  «        D ¦   «         dd(…         }|rd-d                     |¦  «        › �nd|	d*<   |	                     d¦  «        rd.|	d         › d/�|	d0<   nd|	d0<   g }|                     d1|                     d2d¦  «        ¦  «        dd3…         }|r|                     |¦  «         |	d4         r|                     |	d4         ¦  «         |	d         r|                     |	d         ¦  «         |rd5d6                     |¦  «        z   d7z   |	d8<   nd|	d8<   g }|	d9         r|                     |	d9         ¦  «         |	d*         r|                     |	d*         ¦  «         |rd:d6                     |¦  «        z   d7z   |	d;<   nd|	d;<   |	| j        |<   |	                     d¦  «        sd<nd|	d=<   | j        |k    r|  	                    |	¦  «         dS dS dS # t          $ r-}t          j        d>|› �t          j        ¦  «         Y d}~dS d}~ww xY w)?u(   NaÄ�te rozÅ¡Ã­Å™enÃ© detaily z TMDb API.r   rÑ   úhttps://api.themoviedb.org/3/ú/úcs-CZÚcredits)Úapi_keyÚlanguageÚappend_to_responserN  ©r  ÚtimeoutéÈ   Úvote_averager   ú.1fz/10rp   Úruntimez minú, c                 ó   — g | ]
}|d          ‘ŒS ©Únamer„   )Ú.0Úgs     r   ú
<listcomp>zEAIChatRecommendationDialog._fetch_preview_details.<locals>.<listcomp>k  s   € Ð'VÐ'VÐ'V°a¨¨&¬	Ð'VÐ'VÐ'Vr   ÚgenresNrM  ÚoverviewÚposter_pathúhttps://image.tmdb.org/t/p/w500Úbackdrop_pathú https://image.tmdb.org/t/p/w1280Útagline)Úratingrã  ÚgenreÚplotr›  Úfanartrñ  Únumber_of_seasonsu    sezÃ³nÚstatuszReturning Seriesu   [COLOR green]PokraÄ�uje[/COLOR])ÚEndedÚCanceledu   [COLOR red]UkonÄ�en[/COLOR]z  |  c                 óP   — g | ]#}|                      d ¦  «        dk    ¯|d         ‘Œ$S )ÚjobÚDirectorrç  ©rC   ©rè  Úcs     r   rê  zEAIChatRecommendationDialog._fetch_preview_details.<locals>.<listcomp>…  s2   € Ð jÐ jÐ j¨qÈqÏuÊuÐUZÉ|Ì|Ð_iÒOiÐOi  6¤ÐOiÐOiÐOir   ÚcrewrR  u   ReÅ¾ie: Údirectorc                 ó   — g | ]
}|d          ‘ŒS ræ  r„   rþ  s     r   rê  zEAIChatRecommendationDialog._fetch_preview_details.<locals>.<listcomp>ˆ  s   € ÐNÐNÐN¨a  &¤	ÐNÐNÐNr   Ú
created_byu	   TvÅ¯rci: z[I][COLOR FFB0B0B0]z[/COLOR][/I]Úfmt_taglineÚrelease_dateÚfirst_air_daterS  rò  z[COLOR grey]u     â€¢  z[/COLOR]Úfmt_metadataró  z[COLOR FFAAAAAA]Úfmt_extendedrÖ   Ú
is_compactz-[plugin.video.milionar] Preview fetch error: )r   ÚrequestsrC   Ústatus_codeÚjsonr'   rx   r¬   r­   r¬  r.   r+   r,   r/   )r   r˜  r   rÛ  ÚendpointÚurlr  ÚrespÚdataÚ
cache_dataÚnum_seasonsÚruntime_partsr÷  rÚ  Ú	directorsÚcreatorsÚ
meta_partsrš  Ú	ext_partsr4   s                       r   r­  z1AIChatRecommendationDialog._fetch_preview_details[  s°  € ð[	YÝ&Ñ(Ô(ˆGØ",°Ò"7Ð"7�w�w¸TˆHØF°(ÐFÐF¸WÐFÐFˆCØ!(°gÐU^Ð_Ð_ˆFå”< ¨F¸AÐ>Ñ>Ô>ˆDØÔ 3Ò&Ñ&Ø—y’y‘{”{�ð JNÏÊÐR`ÑIaÔIaÐi §¢¨.¸!Ñ!<Ô!<ÐEÐEÐEÐEÐEÐgiØBLÐPWÒBWÐBWÐ\`×\dÒ\dÐenÑ\oÔ\oÐBW $§(¢(¨9°aÑ"8Ô"8Ð>Ð>Ð>Ð>ÐuwØ!ŸYšYÐ'VÐ'V¸4¿8º8ÀHÈbÑ;QÔ;QÐRTÐSTÐRTÔ;UÐ'VÑ'VÔ'VÑWÔWØ ŸHšH Z°Ñ4Ô4Ø]a×]eÒ]eÐfsÑ]tÔ]tÐ|ÐYÀÇÂÈÑ@WÔ@WÐYÐYÐYÐz|Ø`d×`hÒ`hÐixÑ`yÔ`yð  BÐ\ÀÇÂÈ/ÑAZÔAZÐ\Ð\Ð\ð  @BØ#Ÿxšx¨	°2Ñ6Ô6ðð �
ð  Ò(Ð(Ø"&§(¢(Ð+>ÀÑ"BÔ"B�KØ$&�MØ"ð FØ%×,Ò,°Ð-DÐ-DÐ-DÑEÔEÐEð "ŸXšX h°Ñ3Ô3�FØÐ!3Ò3Ð3Ø%×,Ò,Ð-NÑOÔOÐOÐOØÐ#8Ð8Ð8Ø%×,Ò,Ð-JÑKÔKÐKà,3¯LªL¸Ñ,GÔ,G�J˜yÑ)ð Ÿ(š( 9¨bÑ1Ô1�Ø Ò(Ð(Ø jÐ j°G·K²KÀÈÑ4KÔ4KÐ jÑ jÔ jÐkmÐlmÐkmÔ n�IØR[Ð-cÐ-N¸¿	º	À)Ñ8LÔ8LÐ-NÐ-NÐ-NÐac�J˜zÑ*Ð*àNÐN°4·8²8¸LÈ"Ñ3MÔ3MÐNÑNÔNÈrÐPQÈrÔR�HØRZÐ-bÐ-N¸¿ºÀ8Ñ9LÔ9LÐ-NÐ-NÐ-NÐ`b�J˜zÑ*ð —>’> )Ñ,Ô,ð 3Ø0iÀjÐQZÔF[Ð0iÐ0iÐ0i�J˜}Ñ-Ð-à02�J˜}Ñ-ð  �
Ø—x’x °·²Ð9IÈ2Ñ0NÔ0NÑOÔOÐPRÐQRÐPRÔS�Øð ,Ø×%Ò% dÑ+Ô+Ð+Ø˜hÔ'ð <Ø×%Ò% j°Ô&:Ñ;Ô;Ð;Ø˜iÔ(ð =Ø×%Ò% j°Ô&;Ñ<Ô<Ð<àð 4Ø1?À)Ç.Â.ÐQ[ÑB\ÔB\Ñ1\Ð_iÑ1i�J˜~Ñ.Ð.à13�J˜~Ñ.ð �	Ø˜gÔ&ð :Ø×$Ò$ Z°Ô%8Ñ9Ô9Ð9Ø˜jÔ)ð =Ø×$Ò$ Z°
Ô%;Ñ<Ô<Ð<àð 4Ø1CÀiÇnÂnÐU^ÑF_ÔF_Ñ1_ÐblÑ1l�J˜~Ñ.Ð.à13�J˜~Ñ.ð 0:�Ô# GÑ,ð :D¿ºÈ	Ñ9RÔ9RÐ+Z¨6¨6ÐXZ�
˜<Ñ(ð Ô(¨GÒ3Ð3Ø×3Ò3°JÑ?Ô?Ð?Ð?Ð?ðc 'Ð&ð` 4Ð3øõ ð 	Yð 	Yð 	YÝŒHÐHÀQÐHÐHÍ$Ì-ÑXÔXÐXÐXÐXÐXÐXÐXÐXøøøøð	Yøøøs   ‚Q Q( Ñ(
RÑ2"RÒRc                 óN  — |                       d|                     dd¦  «        ¦  «         |                       d|                     dd¦  «        ¦  «         |                       d|                     dd¦  «        ¦  «         |                       d|                     d	d¦  «        ¦  «         |                      d
¦  «         |                       d|                     dd¦  «        ¦  «         |                     d¦  «        r|                       d|d         ¦  «         |                     d¦  «        r|                       d|d         ¦  «         |                     d¦  «        dk    r|                       dd¦  «         n|                      d¦  «         |                       dd¦  «         dS )z*Aplikuje cache data na preview properties.zWCS.AIPreview.Tagliner  rp   zWCS.AIPreview.Metadatar  zWCS.AIPreview.Extendedr  rª  rô  zWCS.AIPreview.EpisodeInfozWCS.AIPreview.Ratingrò  r›  r£  rõ  r¨  r	  rÖ   r©  rœ  ÚShowN)rä   rC   rê   )r   r  s     r   r¬  z5AIChatRecommendationDialog._apply_cached_preview_dataº  s�  € ð 	×ÒÐ0°$·(²(¸=È"Ñ2MÔ2MÑNÔNÐNØ×ÒÐ1°4·8²8¸NÈBÑ3OÔ3OÑPÔPÐPØ×ÒÐ1°4·8²8¸NÈBÑ3OÔ3OÑPÔPÐPØ×ÒÐ-¨t¯xªx¸ÀÑ/CÔ/CÑDÔDÐDð 	×ÒÐ6Ñ7Ô7Ð7ð 	×ÒÐ/°·²¸(ÀBÑ1GÔ1GÑHÔHÐHà�8Š8�HÑÔð 	EØ×ÒÐ3°T¸(´^ÑDÔDÐDØ�8Š8�HÑÔð 	EØ×ÒÐ3°T¸(´^ÑDÔDÐDð �8Š8�LÑ!Ô! VÒ+Ð+Ø×ÒÐ6¸Ñ?Ô?Ð?Ð?à×ÒÐ8Ñ9Ô9Ð9ð 	×ÒÐ.°Ñ7Ô7Ð7Ð7Ð7r   õ	   PÅ™ehrÃ¡tÚplay)rŠ   rŒ  u   PÅ™ehrÃ¡t znovuu   PokraÄ�ovatÚnext_episodeÚplay_episodeÚDetailyÚdetailsu   PodobnÃ©Úsimilaru   SezÃ³nyÚseasonsÚadd_listu   Moje seriÃ¡lyÚKnihovnaÚadd_libraryÚSmazatÚremove_from_historyÚremove_from_listrÛ   Úcollection_moviesu   ZaÄ�Ã­t sledovatÚcontinue)r  Ú
play_againr)  r  r  r   r!  Úadd_list_movÚadd_list_serr$  Úremove_histÚremove_listÚ
col_moviesÚstart_series)r  r  r   r+  r$  )r  r!  r  r   r,  r$  r/  )r  r  r   r.  )r!  r  r   r.  )r0  r!  r  r   r.  )r)  r!  r  r   r.  )r*  r  r   r-  )r)  r  r  r   r-  r-  )
Úai_movieÚ	ai_seriesÚai_colÚ	col_movieÚ
col_seriesÚcol_series_startÚcol_series_continueÚ
hist_movieÚhist_seriesÚ
hist_otherÚ
hub_moviesr>   r   ©r7   r   Ú
hub_seriesrK   Úhub_mixÚmixedÚhub_colrJ   r@   Ú
hub_my_colr?   r8  r:   r9  Ú
hist_mixedr9   Úsimilar_movÚsimilar_serÚ
fav_actorsr;   Úfav_directorsr<   Úfav_writersr=   Ú
col_detailN)Údefault_movieÚdefault_seriesc                 ó  — 	 | j                              |¦  «        }|s(t          j        d|› d�t          j        ¦  «         dddœ}|d         | _        |d         | j        |dœ| _        t          | j        | j        ¦  «        | _        |r3| j	         
                    d	|d
œ¦  «         |                      d|¦  «         |                      |¬¦  «         dS # t          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)u  
        Unified metoda pro start AI konverzace s definovanÃ½m kontextem.
        Nahrazuje ruÄ�nÃ­ vytvÃ¡Å™enÃ­ context slovnÃ­ku a builderu.
        
        Args:
            context_key (str): KlÃ­Ä� do CONTEXT_REGISTRY (napÅ™. 'hist_movie')
            data (list|dict): Data pro kontext (seznam filmÅ¯, poloÅ¾ky historie atd.)
            user_text (str): VolitelnÃ½ text uÅ¾ivatele (pokud je None, pouÅ¾ije se defaultnÃ­ flow)
            is_initial (bool): Zda jde o poÄ�Ã¡teÄ�nÃ­ kontext (default True)
        z,[plugin.video.milionar] Uknown context key: z, falling back to movieNr   r<  r   r7   )r7   r   r  rt   rv   r×   rÙ   z5[plugin.video.milionar] start_ai_with_context error: )ÚCONTEXT_REGISTRYrC   r+   r,   r-   r   r   r   r¯   r¥   rx   rá   ræ   r.   r/   )r   Úcontext_keyr  Ú	user_textÚ
is_initialÚconfigr4   s          r   Ústart_ai_with_contextz0AIChatRecommendationDialog.start_ai_with_context  sN  € ð 	aØÔ*×.Ò.¨{Ñ;Ô;ˆFØð ?Ý”ÐlÈÐlÐlÐlÕnrÔn}Ñ~Ô~Ð~Ø"&°gÐ>Ð>�ð % \Ô2ˆDŒOð ˜vœØ"œoØðð ˆDŒLõ $AÀÄÐRVÔR^Ñ#_Ô#_ˆDÔ ð ð :Ø”×#Ò#¨VÀ	Ð$JÐ$JÑKÔKÐKØ×(Ò(¨¨yÑ9Ô9Ð9ð ×'Ò'¸:Ð'ÑFÔFÐFÐFÐFøåð 	að 	að 	aÝŒHÐPÈQÐPÐPÕRVÔR_Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ð`Ð`øøøøð	aøøøs   ‚CC Ã
DÃ"DÄDc                 óz  — g }ddl m}  || j                             |g ¦  «        ¦  «        }|D ]‹}| j                             |¦  «        }|rmt          j        |d         ¬¦  «        }|                     d|d         ¦  «         d|v r|                     d|d         i¦  «         | 	                    |¦  «         ŒŒ|S )u4   VytvoÅ™Ã­ seznam ListItemÅ¯ pro danÃ½ kontext akcÃ­.r   )Údrop_library_buttonrŠ   r  rŒ  r‹   )
Úwcs.library2.compatrS  ÚACTION_SETSrC   ÚACTIONS_REGISTRYr  r  rä   rÈ  rx   )r   rM  ÚitemsrS  Úaction_keysÚkeyrP  r
  s           r   Úbuild_action_itemsz-AIChatRecommendationDialog.build_action_itemsD  sÙ   € àˆØ;Ð;Ð;Ð;Ð;Ð;Ø)Ð)¨$Ô*:×*>Ò*>¸{ÈBÑ*OÔ*OÑPÔPˆØð 	#ð 	#ˆCØÔ*×.Ò.¨sÑ3Ô3ˆFØð #ÝÔ'¨f°W¬oÐ>Ñ>Ô>�Ø× Ò  ¨6°(Ô+;Ñ<Ô<Ð<Ø˜VÐ#Ð#Ø—K’K ¨°¬Ð 8Ñ9Ô9Ð9Ø—’˜TÑ"Ô"Ð"øØˆr   c                 ó  — 	 |                       d¦  «        }|                     ¦   «          |dk    rd}n	|dv rd}nd}|                      |¦  «        }|D ]|}|                     dt	          |¦  «        ¦  «         |                     d|¦  «         |                     d	|¦  «         |                     d
|¦  «         |                     |¦  «         Œ}dS # t          $ r-}	t          j        d|	› �t          j	        ¦  «         Y d}	~	dS d}	~	ww xY w)uP   NaplnÃ­ akÄ�nÃ­ tlaÄ�Ã­tka podle typu mÃ©dia (pouÅ¾Ã­vÃ¡ Unified Configuration).rb  r   r1  ©rK   rÑ   r2  r3  r˜  r™  rš  r   z/[plugin.video.milionar] Preview actions error: N)
rè   ré   rZ  rä   Ústrr  r.   r+   r,   r/   )
r   r   r˜  r™  rš  r  r   rW  r
  r4   s
             r   r«  z4AIChatRecommendationDialog._populate_preview_actionsS  sP  € ð	[ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð ð ˜WÒ$Ð$Ø$��ØÐ/Ð/Ð/Ø%��à"�ð ×+Ò+¨GÑ4Ô4ˆEð ð +ð +�Ø× Ò  ­C°©L¬LÑ9Ô9Ð9Ø× Ò  ¨%Ñ0Ô0Ð0Ø× Ò  ¨Ñ.Ô.Ð.Ø× Ò  ¨zÑ:Ô:Ð:Ø×$Ò$ TÑ*Ô*Ð*Ð*ð+ð +øõ ð 	[ð 	[ð 	[ÝŒHÐJÀqÐJÐJÍDÌMÑZÔZÐZÐZÐZÐZÐZÐZÐZøøøøð	[øøøs   ‚CC Ã
D
Ã"DÄD
c                 óÂ
  — 	 |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|dk    �r\| j                             |i ¦  «        }|                     d	d
¦  «        }	|                      d¦  «        }
|› d|› �}| j                             d¦  «        }t          d|dd||||
|	dddg ¬¦  «        }|                     ¦   «          t          |dd¦  «        }~|�r¬d|v �r©t          |pd
¦  «                             ¦   «         r,ddlm} |                     t          |¦  «        |¬¦  «         dS |d         }|                     dd
¦  «        }	 |||
|                     dd
¦  «        d||	|                     dd
¦  «        dœ}t!          j        | j        |¦  «         n9# t$          $ r,}t'          j        d|› �t&          j        ¦  «         Y d}~nd}~ww xY wd| j                             d¦  «        › d |› d!t,          j                             |¦  «        › d"t,          j                             |¦  «        › d#|rt,          j                             |¦  «        nd
› �
}t'          j        d$¦  «         t'          j        d%|› d&�¦  «         dS dS dS |d'k    rE|d(v rd)nd}d| j                             d¦  «        › d*|› d+|› �}t'          j        d,|› d&�¦  «         dS |d-k    r`dd.lm} d| j                             d¦  «        › d/|› d! ||¦  «        › �}|                      ¦   «          t'          j        d0|› d1�¦  «         dS |d2k    r:|dk    rdd3lm}  || j        ||¦  «         dS dd4lm}  || j        ||¦  «         dS |d5k    r;dd6lm } |dk    rdnd7}|dk    rd8nd9}| !                    d|||i| j        ¦  «         dS |d:k    r |d(v rd7| _"        d;|› d<|› d=�}nd| _"        d>|› d<|› d?�}d| _#        tI          | j"        | j#        ¦  «        | _%        |  &                    ¦   «          |  '                    d@¦  «         |  (                    dA¦  «         |  )                    |¦  «         dS |dBk    rLdd.lm} d| j                             d¦  «        › dC|› dD ||¦  «        › �}t'          j        dE|› d&�¦  «         dS dS # t$          $ r-}t'          j        dF|› �t&          j        ¦  «         Y d}~dS d}~ww xY w)Gu3   Zpracuje kliknutÃ­ na akÄ�nÃ­ tlaÄ�Ã­tko v preview.rb  NrŒ  r˜  r™  rš  r   r  rô  rp   r£  ú r   zai/DialogAIChatSearch.xmlÚDefaultÚ1080ir   F)	Úsearch_queryÚmovie_titleÚ
movie_yearÚ
poster_urlrô  r   Ú
is_episodeÚfrom_libraryÚsearch_resultsÚselected_resultÚidentr   )r  )Úpickrç  rò  ró  )r™  rš  r›  rò  r   r˜  rô  ró  z6[plugin.video.milionar] Error saving recently played: ú	plugin://r‰   z?action=play&ident=ú&name=z&tmdb_title=z&tmdb_year=zDialog.Close(all, true)z
PlayMedia(rÒ  r  r\  rÑ   z$?action=show_wcs_details&media_type=z	&tmdb_id=ú
RunPlugin(r!  ©Ú
quote_plusú)?action=display_series_seasons&series_id=ú(AlarmClock(OpenSeasons,Container.Update(ú),00:01,silent)r"  ©Úadd_movie_item_to_list©Úadd_series_item_to_listr$  ©ÚLibraryManagerrK   Úmovie_idÚ	series_idr   õ	   SeriÃ¡l 'z' (uf   ) mÄ› nadchl. HledÃ¡m podobnÃ½ seriÃ¡l - mÅ¯Å¾e mÃ­t jinou atmosfÃ©ru, ale aÅ¥ mÄ› to vtÃ¡hne stejnÄ›.úFilm 'up   ) mÄ› zaujal. Chci zaÅ¾Ã­t nÄ›co podobnÃ©ho. NemusÃ­ to bÃ½t stejnÃ½ Å¾Ã¡nr, ale aÅ¥ to mÃ¡ podobnou atmosfÃ©ru.rØ   u   HledÃ¡m podobnÃ©...r(  ú-?action=list_collection_movies&collection_id=ú&collection_name=úContainer.Update(z.[plugin.video.milionar] Preview action error: )*rè   re  rf  r¬   rC   r   r%   r	   ÚdoModalrW  r]  ÚisdigitÚwcs.library2r  Ú
play_movier`   r
   Úadd_recently_played_itemr.   r+   r,   r/   ÚurllibÚparserp  rÔ  Úurllib.parser•   Ú	wcs.ui.UIru  rw  Úwcs.libraryry  Úcheck_settings_and_add_itemr   r   r   r¯   r‹  rÄ   rå   rj  )r   r  r
  rŒ  r˜  r™  rš  r   r  rô  r›  Úqueryr¹   Úsearch_dialogÚselected_fileÚlibrary_playrj  rç  Ú	item_datar4   Úplay_urlÚm_typer  rp  ru  rw  ÚlibraryÚlib_media_typeÚid_keyÚinspiration_texts                                 r   ro  z7AIChatRecommendationDialog._handle_preview_action_clicko  sž  € ð]	ZØŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØð Ø�à×%Ò% hÑ/Ô/ˆFØ×&Ò& yÑ1Ô1ˆGØ×$Ò$ WÑ-Ô-ˆEØ×#Ò# FÑ+Ô+ˆDØ×)Ò)¨,Ñ7Ô7ˆJà˜ÒÑð "Ô0×4Ò4°W¸bÑAÔA�
Ø!—~’~ f¨bÑ1Ô1�Ø×)Ò)Ð*@ÑAÔA�ð !Ð)Ð) 4Ð)Ð)�ð
 "œZ×4Ò4°VÑ<Ô<�
Ý ,Ø/ØØØØ!&Ø %Ø#Ø%ØØ&Ø$Ø!&Ø#%ð!ñ !ô !�ð" ×%Ò%Ñ'Ô'Ð'õ !(¨Ð7HÈ$Ñ OÔ O�Ø!à ñ /B W°Ð%=Ñ%=å˜7˜= bÑ)Ô)×1Ò1Ñ3Ô3ð ØEÐEÐEÐEÐEÐEØ$×/Ò/µ°G±´À=Ð/ÑQÔQÐQØ˜à)¨'Ô2�EØ(×,Ò,¨V°RÑ8Ô8�Dðnà&+Ø%)Ø'-Ø'1§~¢~°hÀÑ'CÔ'CØ+2Ø(/Ø%)Ø&0§n¢n°W¸bÑ&AÔ&Að	&ð 	&˜õ #Ô;¸D¼JÈ	ÑRÔRÐRÐRøÝ$ð nð nð nÝœÐ!]ÐZ[Ð!]Ð!]Õ_cÔ_lÑmÔmÐmÐmÐmÐmÐmÐmøøøøðnøøøð!]¨D¬J×,CÒ,CÀDÑ,IÔ,Ið !]ð !]Ø).ð!]ð !]å(.¬×(?Ò(?ÀÑ(EÔ(Eð!]ð !]õ /5¬l×.EÒ.EÀeÑ.LÔ.Lð!]ð !]ð OSÐ-Z­V¬\×-DÒ-DÀTÑ-JÔ-JÐ-JÐXZð	!]ð !]�Hõ& Ô'Ð(AÑBÔBÐBÝÔ'Ð(@°XÐ(@Ð(@Ð(@ÑAÔAÐAÐAÐAð_/Bð /BÐ%=Ð%=ðb ˜9Ò$Ð$à!+Ð/?Ð!?Ð!?˜˜ÀW�Ø $¤*×"9Ò"9¸$Ñ"?Ô"?ÐÐÐekÐÐÐv}ÐÐ�ÝÔ#Ð$7°Ð$7Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8à˜9Ò$Ð$à3Ð3Ð3Ð3Ð3Ð3ð M $¤*×"9Ò"9¸$Ñ"?Ô"?ð  Mð  MÐjqð  Mð  Mð  zDð  zDð  EJñ  zKô  zKð  Mð  M�Ø—
’
‘”�ÝÔ#Ð$cÈsÐ$cÐ$cÐ$cÑdÔdÐdÐdÐdà˜:Ò%Ð%à Ò(Ð(Ø@Ð@Ð@Ð@Ð@Ð@Ø*Ð*¨4¬:°wÀÑFÔFÐFÐFÐFàAÐAÐAÐAÐAÐAØ+Ð+¨D¬J¸ÀÑGÔGÐGÐGÐGà˜=Ò(Ð(àAÐAÐAÐAÐAÐAØ,6¸'Ò,AÐ,A  Àx�Ø'1°WÒ'<Ð'<˜˜À+�Ø×3Ò3°\À>ÐSYÐ[bÐ4cÐeiÔeoÑpÔpÐpÐpÐpà˜9Ò$Ð$ð Ð!1Ð1Ð1Ø&.�D”Oð (j°5ð  (jð  (j¸Tð  (jð  (jð  (jÐ$Ð$à&-�D”Oð (q°ð  (qð  (q¸$ð  (qð  (qð  (qÐ$ð  $�”õ (EÀTÄ_ÐVZÔVbÑ'cÔ'c�Ô$ð ×.Ò.Ñ0Ô0Ð0Ø—’ Ñ%Ô%Ð%à×*Ò*Ð+@ÑAÔAÐAØ×&Ò&Ð'7Ñ8Ô8Ð8Ð8Ð8àÐ.Ò.Ð.à3Ð3Ð3Ð3Ð3Ð3ð \ $¤*×"9Ò"9¸$Ñ"?Ô"?ð  \ð  \Ðnuð  \ð  \ð  ISð  ISð  TYñ  IZô  IZð  \ð  \�ÝÔ#Ð$>¸Ð$>Ð$>Ð$>Ñ?Ô?Ð?Ð?Ð?ð	 /Ð.øõ ð 	Zð 	Zð 	ZÝŒHÐIÀaÐIÐIÍ4Ì=ÑYÔYÐYÐYÐYÐYÐYÐYÐYøøøøð	Zøøøs}   ‚+T' ¯E.T' ÆT' Æ>AH ÈT' È
IÈ"H=È8T' È=IÉB3T' Ë;A	T' ÍA$T' Î,$T' ÏT' Ï,?T' Ð-B$T' ÓAT' Ô'
UÔ1"UÕUc                 óð   — | j         dk    rdnd}|                      d|¦  «         | j                             d|dœ¦  «         t	          | j         | j        ¦  «        | _        |                      ¦   «          dS )u  
        SpustÃ­ jednoduchou konverzaci pro doporuÄ�enÃ­ filmÅ¯/seriÃ¡lÅ¯ bez kontextu.
        VolÃ¡ se z:
          - set_mode button (uÅ¾ivatel vybral Filmy/SeriÃ¡ly v AI chat rootu)
          - section_root kontext (uÅ¾ivatel dal "Poradit se s AI" v sekci Filmy/SeriÃ¡ly)
        r   u0   MÃ¡m chuÅ¥ na skvÄ›lÃ½ film. UkaÅ¾ mi, co mÃ¡Å¡.u4   HledÃ¡m seriÃ¡l, kterÃ½ mÄ› nepustÃ­. NÄ›jakÃ© tipy?r×   rt   rv   N)r   rá   r¥   rx   r   r   r¯   ræ   )r   Úuser_msgs     r   râ   z;AIChatRecommendationDialog._start_simple_media_conversation  s‰   € ð JNÌÐ\cÒIcÐIcÐEÐEð  j`ˆà× Ò   xÑ0Ô0Ð0ØŒ×Ò V¸ÐAÐAÑBÔBÐBõ  =¸T¼_ÈdÌlÑ[Ô[ˆÔð 	×#Ò#Ñ%Ô%Ð%Ð%Ð%r   Fc                 ó’   — |                       ¦   «          d}t          j        | j        |f¬¦  «        }|                     ¦   «          dS )zUStart AI conversation immediately after media type selection or on init with context.rp   r  N)Ú_start_thinking_animationr§   rÌ   Ú
_ai_workerrÍ   )r   rÚ   rN  Úts       r   ræ   z1AIChatRecommendationDialog._start_ai_conversation"  sG   € ð 	×&Ò&Ñ(Ô(Ð(ð ˆ	ÝÔ D¤O¸9¸,ÐGÑGÔGˆØ	�Š‰	Œ	ˆ	ˆ	ˆ	r   c                 ó  — | j                              ¦   «          d| _        |                      dd¦  «         |                      dd¦  «         t	          j        | j        ¬¦  «        | _        | j                             ¦   «          dS )z"Start the animated dots animation.r   úWCS.AIChat.StatusTextu   OdesÃ­lÃ¡m...úWCS.AIChat.Timerrp   rò   N)	r©   Úclearr«   rä   r§   rÌ   Ú_animate_dotsrª   rÍ   rL   s    r   rš  z4AIChatRecommendationDialog._start_thinking_animation-  s€   € àÔ×!Ò!Ñ#Ô#Ð#ØˆŒØ×ÒÐ0°/ÑBÔBÐBØ×ÒÐ+¨RÑ0Ô0Ð0Ý )Ô 0¸Ô8JÐ KÑ KÔ KˆÔØÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c                 ó‚  — | j                              ¦   «          | j        r"| j                             d¬¦  «         d| _        	 |                      d¦  «                             dd¦  «        }|r2|                      dd|› d�¦  «         |                      dd	¦  «         dS dS #  |                      dd	¦  «         Y dS xY w)
z!Stop the animated dots animation.r@  )rß  NrŸ  Úsrp   zza rž  õ
   PÅ™ipraven)r©   Úsetrª   r'   rf  ri   rä   )r   Ú
final_times     r   Ú_stop_thinking_animationz3AIChatRecommendationDialog._stop_thinking_animation6  sí   € àÔ×ÒÑ!Ô!Ð!ØÔ ð 	)ØÔ!×&Ò&¨qÐ&Ñ1Ô1Ð1Ø$(ˆDÔ!ð	DØ×)Ò)Ð*<Ñ=Ô=×EÒEÀcÈ2ÑNÔNˆJØð HØ× Ò Ð!3Ð5H¸:Ð5HÐ5HÐ5HÑIÔIÐIØ× Ò Ð!8¸,ÑGÔGÐGÐGÐGðHð Høð	DØ×ÒÐ4°lÑCÔCÐCÐCÐCÐCøøøs   ÁAB# Â#B>c                 óš  — ddl } |j         ¦   «         }| j                             ¦   «         sž |j         ¦   «         |z
  }|                      d|d›d�¦  «         |dk    rd}nd}| j        d	z  d
z  }d|z  }|                      d|› |› �¦  «         | xj        dz  c_         |j        d¦  «         | j                             ¦   «         ¯œdS dS )zAnimate status text and timer.r   NrŸ  râ  r£  g       @u   PÅ™ijÃ­mÃ¡mu
   OdesÃ­lÃ¡mrN  rS  rQ  rž  r@  rP  )rÂ   r©   Úis_seträ   r«   rÃ   )r   rÂ   Ú
start_timeÚelapsedÚcurrent_statusÚnum_dotsr\  s          r   r¡  z(AIChatRecommendationDialog._animate_dotsF  s  € àˆˆˆØ�T”Y‘[”[ˆ
ØÔ%×,Ò,Ñ.Ô.ð 	à�d”i‘k”k JÑ.ˆGØ×ÒÐ/°GÐ1BÐ1BÐ1BÐ1BÑCÔCÐCð ˜Š}ˆ}Ø"/��à".�ð œ¨1Ñ,°Ñ1ˆHØ˜‘>ˆDà×ÒÐ4¸Ð6OÈÐ6OÐ6OÑPÔPÐPàˆOŒO˜qÑ ˆOŒOØˆDŒJ�s‰OŒOˆOð% Ô%×,Ò,Ñ.Ô.ð 	ð 	ð 	ð 	ð 	r   c                 óH  — | j         sd| _         |r|n|}|                      d|¦  «         |                      dd¦  «         | j                             d|dœ¦  «         |                      ¦   «          t          j        | j        |f¬¦  «        }| 	                    ¦   «          dS )	uá   Process user input, update UI, and call AI.
        
        Args:
            user_text: Text kterÃ½ se poÅ¡le do LLM
            display_text: VolitelnÃ½ text pro zobrazenÃ­ v UI (pokud None, pouÅ¾ije se user_text)
        r   r×   rÕ   rÖ   rt   rv   r  N)
r   rá   rä   r¥   rx   rš  r§   rÌ   r›  rÍ   )r   rN  r_  Úui_textrœ  s        r   rj  z,AIChatRecommendationDialog.handle_user_input^  s´   € ð Œð 	&à%ˆDŒOð #/Ð=�,�,°IˆØ× Ò   wÑ/Ô/Ð/ð 	×ÒÐ-¨vÑ6Ô6Ð6ð 	Œ×Ò V¸	ÐBÐBÑCÔCÐCð 	×&Ò&Ñ(Ô(Ð(õ Ô D¤O¸9¸,ÐGÑGÔGˆØ	�Š‰	Œ	ˆ	ˆ	ˆ	r   c                 ó0  — | j         sdS | j                              d¦  «        }| j                              d¦  «        }| j                              dg ¦  «        }	 | j                             d¦  «        }|rt	          |¦  «        nd}n	#  d}Y nxY w| j        dk    rdnd	}|d
v r4|r2d„ |d|…         D ¦   «         }d                     |¦  «        }d|› d|› d�S |dk    rÀ|r¾|                     dg ¦  «        }	|                     dg ¦  «        }
t          |	¦  «        t          |
¦  «        }}|dz  ||dz  z
  }}||k     r|||z
  z  }|}n||k     r
|||z
  z  }|}d„ |	d|…         D ¦   «         }d„ |
d|…         D ¦   «         }d                     ||z   ¦  «        }d|› d�S |dk    �r|�rg }|d|…         D ]Ý}|                     dd¦  «        }|                     dd¦  «        }|                     d¦  «        dk    rv|                     dd¦  «        }|                     d¦  «        |                     d¦  «        }}|�4|�2d t	          |¦  «        d!›d"t	          |¦  «        d!›�}|d#|› d$|pd› d%�z  }|r	|d#|› d%�z  }|                     |¦  «         ŒÞd                     |¦  «        }d&|› d'�S |d(k    r1|r/d)„ |dd*…         D ¦   «         }d                     |¦  «        }d+|› d,�S |d-v rH|rFd.„ |D ¦   «         }d                     |¦  «        }d/d0d1d-œ}|                     |d2¦  «        }d3|› d4|› d5�S |d6k    rd7|› d8�S |d9k    r$| j                              d:d;¦  «        }d<|› d|› d=�S |d>k    rd?|› d@�S |dk    rdA|› dB�S |dCk    rdD|› dE�S |dFk    rdG|› dH�S dS )Iu»   
        ZÃ­skÃ¡ kontextovou instrukci pro AI na zÃ¡kladÄ› aktivnÃ­ho kontextu.
        Generuje specifickÃ© instrukce pro rÅ¯znÃ© typy kontextu (my_movies, genre, person, atd.).
        rp   r7   rÝ   r  Úai_context_history_limité   r   u   filmÅ¯u	   seriÃ¡lÅ¯)rŽ   r�   c                 ó’   — g | ]D}|                      d |                      d¦  «        ¦  «        › d|                      d¦  «        › d�‘ŒES )r™  rç  ú (rš  rÒ  rý  ©rè  r
  s     r   rê  zGAIChatRecommendationDialog._get_context_instruction.<locals>.<listcomp>‘  sP   € ÐqÐqÐqÐX\˜Ÿš '¨4¯8ª8°FÑ+;Ô+;Ñ<Ô<ÐSÐSÀÇÂÈÑ@PÔ@PÐSÐSÐSÐqÐqÐqr   Nrä  u   UÅ¾ivatel mÃ¡ v knihovnÄ› tyto z: u©   . Toto je jeho 'DNA vkusu'. Analyzuj to a najdi skrytÃ© klenoty, kterÃ© by mu nemÄ›ly uniknout. Nechci jen prostou podobnost, chci, abys vystihl atmosfÃ©ru jeho sbÃ­rky.r9   ÚmoviesrK   rR  c                 ój   — g | ]0}|                      d ¦  «        › d|                      d¦  «        › d�‘Œ1S )r™  r´  rš  rÒ  rý  )rè  Úms     r   rê  zGAIChatRecommendationDialog._get_context_instruction.<locals>.<listcomp>¤  s=   € ÐYÐYÐYÀ!˜1Ÿ5š5 ™>œ>Ð=Ð=¨Q¯UªU°6©]¬]Ð=Ð=Ð=ÐYÐYÐYr   c                 ój   — g | ]0}|                      d ¦  «        › d|                      d¦  «        › d�‘Œ1S )rç  r´  rš  rÒ  rý  )rè  r£  s     r   rê  zGAIChatRecommendationDialog._get_context_instruction.<locals>.<listcomp>¥  s=   € ÐXÐXÐXÀ˜1Ÿ5š5 ™=œ=Ð<Ð<¨A¯EªE°&©M¬MÐ<Ð<Ð<ÐXÐXÐXr   u*   UÅ¾ivatelova osobnÃ­ videotÃ©ka obsahuje: u|   . TvÃ½m Ãºkolem je najÃ­t prÅ¯niky v tomto vÃ½bÄ›ru a navrhnout dalÅ¡Ã­ tituly, kterÃ© perfektnÄ› zapadnou do tÃ©to mozaiky.r:   r™  rš  r   Úepisode_titleÚseasonÚepisodeÚSÚ02dÚEr´  r_  rÒ  u   Naposledy sledovanÃ© tituly: uy   . Na zÃ¡kladÄ› tohoto 'Ä�erstvÃ©ho' zÃ¡Å¾itku doporuÄ�, co si pustit dÃ¡l. UdrÅ¾ vlnu, nebo nabÃ­dni zajÃ­mavÃ½ kontrast.r?   c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )rç  u   NeznÃ¡mÃ¡ kolekcerý  rþ  s     r   rê  zGAIChatRecommendationDialog._get_context_instruction.<locals>.<listcomp>Á  s'   € ÐQÐQÐQ¸a�q—u’u˜VÐ%8Ñ9Ô9ÐQÐQÐQr   é2   u   UÅ¾ivatel sbÃ­rÃ¡ tyto sÃ¡gy: um   . MÃ¡ rÃ¡d komplexnÃ­ svÄ›ty a dlouhÃ© pÅ™Ã­bÄ›hy. DoporuÄ� mu dalÅ¡Ã­ epickÃ© filmovÃ© sÃ©rie nebo univerza.)r;   r<   r=   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ræ  rý  rµ  s     r   rê  zGAIChatRecommendationDialog._get_context_instruction.<locals>.<listcomp>Ç  s$   € Ð;Ð;Ð;¨$�T—X’X˜fÑ%Ô%Ð;Ð;Ð;r   Úherceu
   reÅ¾isÃ©ryu   scenÃ¡ristyÚ	osobnostiu   UÅ¾ivatelovy ikony jsou: uZ   . Najdi jejich nejlepÅ¡Ã­, moÅ¾nÃ¡ i mÃ©nÄ› znÃ¡mÃ¡ dÃ­la, a vysvÄ›tli, proÄ� v nich tito u    excelujÃ­.ró  u   UÅ¾ivatel mÃ¡ chuÅ¥ na Å¾Ã¡nr: uY   . Vyber absolutnÃ­ Å¡piÄ�ku tohoto Å¾Ã¡nru, ale zkus pÅ™ekvapit i nÄ›Ä�Ã­m netradiÄ�nÃ­m.ÚpersonÚperson_typeÚosobau   StÅ™edem zÃ¡jmu je u<   . DoporuÄ� dÃ­la, kterÃ¡ definujÃ­ kariÃ©ru tÃ©to osobnosti.Úcountryu   Cestujeme do zemÄ›: uX   . Vyber to nejlepÅ¡Ã­, co tamnÃ­ kinematografie nabÃ­zÃ­ - od klasik po souÄ�asnÃ© hity.u   Stroj Ä�asu nastaven na rok: u:   . Co byly tehdejÅ¡Ã­ hity a co obstÃ¡lo ve zkouÅ¡ce Ä�asu?r@   u   ZajÃ­mÃ¡ nÃ¡s sÃ¡ga: uN   . Pokud se uÅ¾ivateli lÃ­bÃ­ toto univerzum, co dalÅ¡Ã­ho by ho mohlo pohltit?Úcategoryu!   UÅ¾ivatel prohlÃ­Å¾Ã­ kategorii: u@   . DoporuÄ� tituly, kterÃ© tuto kategorii nejlÃ©pe reprezentujÃ­.)	r   rC   r   ra   r`   r   r'   rD  rx   ) r   Úctx_typeÚctx_valÚctx_dataÚlimit_settingÚlimitr\   ÚtitlesÚ
titles_strr¶  rK   Úm_countÚs_countÚtarget_mÚtarget_sÚm_titlesÚs_titlesÚall_strr
  r™  rš  Úep_titler»  r¼  Úep_strÚc_namesÚ	colls_strÚnamesÚ	names_strÚwhat_mapÚwhatÚp_types                                    r   rã   z3AIChatRecommendationDialog._get_context_instructionz  s‰  € ð
 Œ|ð 	Ø�2à”<×#Ò# FÑ+Ô+ˆØ”,×"Ò" 7Ñ+Ô+ˆØ”<×#Ò# F¨BÑ/Ô/ˆð	Ø œJ×1Ò1Ð2LÑMÔMˆMØ*7Ð?•C˜Ñ&Ô&Ð&¸RˆEˆEøð	ØˆEˆEˆEøøøà"&¤/°WÒ"<Ð"<�h�hÀ+ˆð Ð1Ð1Ð1°hÐ1ØqÐqÐ`hÐioÐjoÐioÔ`pÐqÑqÔqˆFØŸš 6Ñ*Ô*ˆJð z°[ð  zð  zÀJð  zð  zð  zð  zð Ð.Ò.Ð.°8Ð.Ø—\’\ (¨BÑ/Ô/ˆFØ—\’\ (¨BÑ/Ô/ˆFå" 6™{œ{­C°©K¬K�WˆGØ!&¨!¡¨U°U¸a±ZÑ-?�hˆHà˜Ò!Ð!Ø˜X¨Ñ/Ñ0�Ø"��Ø˜8Ò#Ð#Ø˜X¨Ñ/Ñ0�Ø"�àYÐYÀvÈiÈxÈiÔGXÐYÑYÔYˆHØXÐXÀfÈYÈhÈYÔFWÐXÑXÔXˆHØ—i’i ¨8Ñ 3Ñ4Ô4ˆGð FÀð  Fð  Fð  Fð  Fð Ð*Ò*Ñ*¨xÑ*ØˆFØ   % Ô(ð %ð %�ØŸš ¨"Ñ-Ô-�Ø—x’x ¨Ñ+Ô+�à—8’8˜LÑ)Ô)¨XÒ5Ð5Ø#Ÿxšx¨¸Ñ<Ô<�HØ&*§h¢h¨xÑ&8Ô&8¸$¿(º(À9Ñ:MÔ:M˜G�FØÐ)¨gÐ.AØ!I¥S¨¡[¤[Ð!IÐ!IÐ!Iµs¸7±|´|Ð!IÐ!IÐ!I˜ØÐ!@ fÐ!@Ð!@¨x¨~¸2Ð!@Ð!@Ð!@Ñ@˜àð *Ø˜\ $˜\˜\˜\Ñ)�EØ—’˜eÑ$Ô$Ð$Ð$àŸš 6Ñ*Ô*ˆJð y°:ð  yð  yð  yð  yð Ð)Ò)Ð)¨hÐ)ØQÐQÀ8ÈCÈRÈCÄ=ÐQÑQÔQˆGØŸ	š	 'Ñ*Ô*ˆIð m°Ið  mð  mð  mð  mð ÐVÐVÐVÐ[cÐVØ;Ð;°(Ð;Ñ;Ô;ˆEØŸ	š	 %Ñ(Ô(ˆIØ+2È,ÐlyÐzÐzˆHØ—<’< ¨+Ñ6Ô6ˆDð f¨yð  fð  fð  UYð  fð  fð  fð  fð ˜Ò Ð ð X°Wð  Xð  Xð  Xð  Xð ˜Ò!Ð!Ø”\×%Ò% m°WÑ=Ô=ˆFØx¨ÐxÐx°7ÐxÐxÐxÐxð ˜Ò"Ð"ð L¨'ð  Lð  Lð  Lð  Lð ˜ÒÐØv°7ÐvÐvÐvÐvð ˜Ò%Ð%ð C¨7ð  Cð  Cð  Cð  Cð ˜Ò#Ð#ð A°wð  Að  Að  Að  Aàˆrs   Á-B ÂBc                 óì  — | j         st          | j        | j        ¦  «        | _         | j                              ¦   «         }|                      ¦   «         }| j                              | j        |¬¦  «        }g }d}	 t          | j	         
                    d¦  «        pd¦  «        }n#  Y nxY w| j        �rL| j                             d¦  «        �r1| j                             d¦  «        }t          |t          ¦  «        rO|d |…         D ]C}|                     d¦  «        p|                     d¦  «        }	|	r|                     |	¦  «         ŒDn³t          |t          ¦  «        rž|                     dg ¦  «        d |dz  …         D ]-}
|                     d	|
                     d¦  «        › �¦  «         Œ.|                     d
g ¦  «        d |dz  …         D ]-}|                     d|                     d¦  «        › �¦  «         Œ.t!          j        ||||¬¦  «        \  }}}}|| _        || _        || _        |                      ¦   «         }|                     dd¦  «        |                     dd¦  «        |dœ| _        |                      ¦   «          |s|                      dd¦  «         d S dd l} |j        |d¬¦  «        }| j                             d|dœ¦  «         |                     dd¦  «        }|                      d|¦  «         |                      dd¦  «         |                      dd¦  «         |                     dg ¦  «        }|                     dg ¦  «        }|rLt          | j	         
                    d ¦  «        pd!¦  «        }d"|› d#�d$|› d%�d&œ}|                     d|¦  «         d'| _        |                      |¦  «         |r|                      |¦  «         d S |                       ¦   «          d S )(N©rz   r²  r±  r  r™  rç  r¶  rR  ú[Movie] rK   ú	[Series] )Úcontext_titlesÚcontext_limitr  r"  r  )r  r  ÚlatencyzWCS.AIChat.StatuszChyba komunikacer   F)Úensure_asciirs   rv   Úmessagerp   rÒ   r¤  rß   rÖ   r  ÚrecommendationsrT   rU   u   Chci dalÅ¡Ã­ dÃ¡vku inspirace (rÒ  u_   To bylo dobrÃ©, ale chci vÃ­c. PonoÅ™ se hloubÄ›ji do filmovÃ½ch archivÅ¯ a vytÃ¡hni dalÅ¡Ã­ch ue    NOVÃ�CH a UNIKÃ�TNÃ�CH titulÅ¯. PÅ™ekvap mÄ› nÄ›Ä�Ã­m neÄ�ekanÃ½m, co jsem v seznamu jeÅ¡tÄ› nemÄ›l.rÜ   T)!r¯   r   r   r   ro   rã   r~   r¥   r`   r   ra   rC   rk  rA  rx   ÚdictÚ
ai_handlerÚsend_chat_recommendationr°   r±   r¶   r  r·   r§  rä   r  Údumpsrá   Úinsertr  rç   Ú!fetch_and_display_recommendationsÚ_handle_no_recommendations)r   rN  Úsystem_promptrz   r{   rå  ræ  rÌ  r
  rœ  r¸  r£  r  ÚusageÚraw_responserç  Ú	ai_paramsr  Úfull_response_jsonÚai_msgr  Úrecsr^   Úmore_buttons                           r   r›  z%AIChatRecommendationDialog._ai_workerè  s�  € àÔ#ð 	`Ý#@ÀÄÐRVÔR^Ñ#_Ô#_ˆDÔ ð Ô,×@Ò@ÑBÔBˆð #×;Ò;Ñ=Ô=Ðð Ô'×6Ò6ØŒLØ 3ð 7ñ 
ô 
ˆð ˆØˆð	Ý ¤
× 5Ò 5Ð6PÑ QÔ QÐ WÐUWÑXÔXˆMˆMøð	ØˆDøøøàŒ<ñ 
	G˜DœL×,Ò,¨VÑ4Ô4ñ 
	GØ”|×'Ò'¨Ñ/Ô/ˆHÝ˜(¥DÑ)Ô)ð GØ$ ^ m ^Ô4ð 3ð 3�DØŸš Ñ)Ô)Ð=¨T¯XªX°fÑ-=Ô-=�AØÐ2˜.×/Ò/°Ñ2Ô2Ð2øð3õ ˜H¥dÑ+Ô+ð GØ!Ÿš h°Ñ3Ô3Ð4E°]ÀAÑ5EÐ4EÔFð Gð G�AØ"×)Ò)Ð*E°Q·U²U¸7±^´^Ð*EÐ*EÑFÔFÐFÐFØ!Ÿš h°Ñ3Ô3Ð4E°]ÀAÑ5EÐ4EÔFð Gð G�AØ"×)Ò)Ð*E°a·e²e¸F±m´mÐ*EÐ*EÑFÔFÐFÐFõ .8Ô-PØØØ)Ø'ð	.
ñ .
ô .
Ñ*ˆˆe�\ 7ð $(ˆÔ Ø$)ˆÔ!Ø".ˆÔØ×/Ò/Ñ1Ô1ˆ	à!Ÿš j°)Ñ<Ô<Ø—]’] 7¨IÑ6Ô6Øð(
ð (
ˆÔ$ð 	×%Ò%Ñ'Ô'Ð'àð 	Ø×ÒÐ0Ð2DÑEÔEÐEØˆFð 	ˆˆˆØ'˜TœZ¨¸5ÐAÑAÔAÐØŒ×Ò [Ð=OÐPÐPÑQÔQÐQð —’˜) RÑ(Ô(ˆð 	× Ò   vÑ.Ô.Ð.Ø×ÒÐ,¨lÑ;Ô;Ð;ð 	×ÒÐ/°Ñ8Ô8Ð8ð —(’(˜9 bÑ)Ô)ˆØ�xŠxÐ)¨2Ñ.Ô.ˆð ð 	+Ý˜tœz×4Ò4Ð5NÑOÔOÐUÐSUÑVÔVˆLàJ¸<ÐJÐJÐJð oð  |Hð  oð  oð  oðð ˆKð �NŠN˜1˜kÑ*Ô*Ð*ð #ˆÔØ×Ò˜GÑ$Ô$Ð$ð ð 	.Ø×2Ò2°4Ñ8Ô8Ð8Ð8Ð8ð ×+Ò+Ñ-Ô-Ð-Ð-Ð-s   Á:)B$ Â$B(c                 ó0   — |                       d¦  «         dS )u`   Zpracuje pÅ™Ã­pad kdy AI nevrÃ¡tÃ­ Å¾Ã¡dnÃ© tituly. MÅ¯Å¾e bÃ½t pÅ™etÃ­Å¾eno v child tÅ™Ã­dÃ¡ch.u#   Model nedoporuÄ�il Å¾Ã¡dnÃ© tituly.N)rþ   rL   s    r   rñ  z5AIChatRecommendationDialog._handle_no_recommendationsP  s   € à×"Ò"Ð#HÑIÔIÐIÐIÐIr   c                 óf   — t          j        | j        |f¬¦  «        }|                     ¦   «          dS )z"Fetch TMDB data and populate list.r  N)r§   rÌ   Ú_tmdb_workerrÍ   )r   rê  rœ  s      r   rð  z<AIChatRecommendationDialog.fetch_and_display_recommendationsU  s0   € õ Ô DÔ$5¸_Ð<NÐOÑOÔOˆØ	�Š‰	Œ	ˆ	ˆ	ˆ	r   c                 ór  — |                       d¦  «        }|                     ¦   «          g }|D �]Â}|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|dvr| j        }|                      |||¦  «        }|�r[|                     d¦  «        p|                     d¦  «        p|}	t          j        |	¬¦  «        }
|                     d¦  «        }|r|
                     d	d
|› �i¦  «         |
                     dt          |                     d¦  «        ¦  «        ¦  «         |
                     d|¦  «         |
                     d|                     d¦  «        p|                     d¦  «        pd¦  «         |dk    r3|
                     d|                     dd¦  «        d d…         ¦  «         nO|dk    r3|
                     d|                     dd¦  «        d d…         ¦  «         n|
                     dd¦  «         |
                     d|                     d|                     dd¦  «        ¦  «        ¦  «         | 
                    |
¦  «         |dv r~|                     |                     d¦  «        ||	|
                     d¦  «        |rd
|› �nd|                     d¦  «        rd|d         › �nd|                     dd¦  «        dœ¦  «         �ŒÄ|rV	 ddlm} |                     |¦  «         n9# t           $ r,}t#          j        d|› �t"          j        ¦  «         Y d }~nd }~ww xY w|                     ¦   «         dk    r@dd l} |j        d¦  «         |                      d¦  «         |                      d¦  «         d S |                      d ¦  «         d S )!NrÞ   r™  rš  r7   )r   rÑ   r@   rç  r  rí  r›  rî  r˜  r‰   r   rp   r   r  rS  rÑ   r  Úoriginal_titleÚoriginal_name)r   rÑ   rï  rð  rì  )r˜  r   r™  rš  r›  rõ  rô  r   )ÚRecommendationHistoryu(   [MilionÃ¡Å™ Skin] AI history not saved: r   rÕ   u'   Model doporuÄ�il neexistujÃ­cÃ­ tituly.)rè   ré   rC   r   Ú_search_tmdbr  r  rÈ  rä   r]  r  rx   rf  Úwcs.air   Úaddr.   r+   r,   r-   rŠ  rÂ   rÃ   rê   rÄ   rþ   )r   rê  r  ÚmatchedÚrecr™  rš  Úitem_media_typeÚ	tmdb_dataÚdisplay_titler
  r›  r   ÚexcrÂ   s                  r   rü  z'AIChatRecommendationDialog._tmdb_worker[  s  € Ø—’ tÑ,Ô,ˆØ×ÒÑÔÐØˆà"ð )	@ñ )	@ˆCØ—G’G˜GÑ$Ô$ˆEØ—7’7˜6‘?”?ˆDð "Ÿgšg f™oœoˆOØÐ&CÐCÐCØ#'¤?�ð ×)Ò)¨%°°ÑGÔGˆIàñ @à )§¢¨gÑ 6Ô 6Ð X¸)¿-º-ÈÑ:OÔ:OÐ XÐSX�ÝÔ'¨mÐ<Ñ<Ô<�Ø"Ÿš }Ñ5Ô5�Øð XØ—K’K Ð+UÈVÐ+UÐ+UÐ VÑWÔWÐWð × Ò  ­C°	·²¸dÑ0CÔ0CÑ,DÔ,DÑEÔEÐEØ× Ò  ¨Ñ?Ô?Ð?Ø× Ò  ¨)¯-ª-¸Ñ*@Ô*@Ð*_ÀIÇMÂMÐRXÑDYÔDYÐ*_Ð]_Ñ`Ô`Ð`à" gÒ-Ð-Ø×$Ò$ V¨Y¯]ª]¸>È2Ñ-NÔ-NÈrÐPQÈrÔ-RÑSÔSÐSÐSØ$¨Ò,Ð,Ø×$Ò$ V¨Y¯]ª]Ð;KÈRÑ-PÔ-PÐQSÐRSÐQSÔ-TÑUÔUÐUÐUà×$Ò$ V¨RÑ0Ô0Ð0Ø× Ò Ð!1°9·=²=ÐAQÐS\×S`ÒS`ÐapÐqsÑStÔStÑ3uÔ3uÑvÔvÐvà×$Ò$ TÑ*Ô*Ð*Ø" oÐ5Ð5Ø—N’NØ#,§=¢=°Ñ#6Ô#6ÀoØ!.¸×8HÒ8HÈÑ8PÔ8PØPVÐ"^Ð"LÀFÐ"LÐ"LÐ"LÐ\^à&/§m¢m°OÑ&DÔ&Dð$MÐ#bÀiÐP_ÔF`Ð#bÐ#bÐ#bØJLØ )§¢¨j¸"Ñ =Ô =ð$?ð $?ñ @ô @ð @ùð ð 	\ð\Ø8Ð8Ð8Ð8Ð8Ð8Ø%×)Ò)¨'Ñ2Ô2Ð2Ð2øÝð \ð \ð \Ý”ÐIÀCÐIÐIÍ4Ì?Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[øøøøð\øøøð ×ÒÑÔ Ò"Ð"àˆKˆKˆKØˆDŒJ�s‰OŒOˆOØ×ÒÐ3Ñ4Ô4Ð4Ø�OŠO˜DÑ!Ô!Ð!Ð!Ð!ð ×&Ò&Ð'PÑQÔQÐQÐQÐQs   Ë5L Ì
MÌ"MÍMc                 ó¬  — 	 t          ¦   «         }|dk    rd}n|dk    rd}nd}|d|dœ}|r|dk    r|dk    r||d<   n||d	<   t          j        d
|› �|d¬¦  «        }|j        dk    r2|                     ¦   «                              dg ¦  «        }|r|d         S n9# t
          $ r,}	t          j        d|	› �t          j        ¦  «         Y d}	~	nd}	~	ww xY wdS )z)Identify movie/series/collection in TMDB.r   zsearch/movier@   zsearch/collectionz	search/tvrÙ  )rÛ  rÜ  rŒ  rš  Úfirst_air_date_yearr×  rN  rÞ  rà  Úresultsr   zTMDB Error: N)	r   r
  rC   r  r  r.   r+   r,   r/   )
r   r™  rš  r   rÛ  r  r  r  r  r4   s
             r   r  z'AIChatRecommendationDialog._search_tmdb�  s*  € ð	8Ý&Ñ(Ô(ˆGØ˜WÒ$Ð$Ø)��Ø˜|Ò+Ð+Ø.��à&�à!(°gÈÐNÐNˆFØð :˜
 lÒ2Ð2Ø Ò(Ð(Ø&*�V˜F‘^�^à59�VÐ1Ñ2å”<Ð JÀÐ JÐ JÐSYÐcdÐeÑeÔeˆDØÔ 3Ò&Ð&ØŸ)š)™+œ+Ÿ/š/¨)°RÑ8Ô8�Øð &Ø" 1œ:Ð%øøÝð 	8ð 	8ð 	8ÝŒHÐ' AÐ'Ð'­¬Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7øøøøð	8øøøàˆts   ‚BB Â
CÂ%"CÃCc                 óh  — 	 | j         rl| j                             dd¦  «        }| j                             dd¦  «        }| j                             dd¦  «        }t          ||| j         |d¬¦  «         dS | j        sdS |                      ¦   «         }|                     dd¦  «        }|                     dd¦  «        }| j                             ¦   «         }|                      ¦   «         }| j                             | j	        |¬	¦  «        }|||d
œ}g }	| j
        �rH| j
                             d¦  «        �r-d}
| j
                             d¦  «        }t          |t          ¦  «        rO|d|
…         D ]C}|                     d¦  «        p|                     d¦  «        }|r|	                     |¦  «         ŒDn­t          |t          ¦  «        r˜|                     dg ¦  «        dd…         D ]-}|	                     d|                     d¦  «        › �¦  «         Œ.|                     dg ¦  «        dd…         D ]-}|	                     d|                     d¦  «        › �¦  «         Œ.t          ||||	d¬¦  «         dS # t           $ r-}t#          j        d|› �t"          j        ¦  «         Y d}~dS d}~ww xY w)zLManually trigger AI Debug Dialog with current context or last received data.r  r"  r  rç  r   T)rç  ÚforceNrâ  )Úsystemr{   r  r  r²  r™  rç  r¶  rO  rã  rK   rä  )rå  r  z-[plugin.video.milionar] Debug trigger error: )r¶   r·   rC   r   r¯   r  ro   rã   r~   r¥   r   rk  rA  rx   rë  r   r.   r+   r,   r/   )r   r  r  rç  rõ  rò  Úcontext_instrr{   Úrequest_datarå  rÎ  rÌ  r
  rœ  r¸  r£  r4   s                    r   r†  z0AIChatRecommendationDialog._handle_debug_trigger¸  s  € ð:	Yð Ô&ð ØÔ7×;Ò;¸JÈ	ÑRÔR�ØÔ4×8Ò8¸À)ÑLÔL�ØÔ6×:Ò:¸9ÀaÑHÔH�õ (ØØØÔ+Ø#Øðñ ô ð ð �ð Ô'ð Ø�ð ×3Ò3Ñ5Ô5ˆIØ —}’} Z°Ñ;Ô;ˆHØ—M’M '¨9Ñ5Ô5ˆEð !Ô0×DÒDÑFÔFˆMØ ×9Ò9Ñ;Ô;ˆMØÔ+×:Ò:¸4¼<Ð]jÐ:ÑkÔkˆHð (Ø$Øðð ˆLð  ˆNØŒ|ñ K ¤× 0Ò 0°Ñ 8Ô 8ñ KØ�Øœ<×+Ò+¨FÑ3Ô3�Ý˜h­Ñ-Ô-ð KØ (¨¨%¨Ô 0ð 7ð 7˜Ø ŸHšH WÑ-Ô-ÐA°·²¸&Ñ1AÔ1A˜ØÐ6˜n×3Ò3°AÑ6Ô6Ð6øð7õ   ­$Ñ/Ô/ð KØ%Ÿ\š\¨(°BÑ7Ô7¸¸¸Ô<ð Kð K˜Ø&×-Ò-Ð.I¸¿º¸w¹¼Ð.IÐ.IÑJÔJÐJÐJØ%Ÿ\š\¨(°BÑ7Ô7¸¸¸Ô<ð Kð K˜Ø&×-Ò-Ð.I¸!¿%º%À¹-¼-Ð.IÐ.IÑJÔJÐJÐJõ # 8¨U°LÐQ_ÐgkÐlÑlÔlÐlÐlÐløåð 	Yð 	Yð 	YÝŒHÐHÀQÐHÐHÍ$Ì-ÑXÔXÐXÐXÐXÐXÐXÐXÐXøøøøð	Yøøøs%   ‚A1I: Á5I: Á>G:I: É:
J1Ê"J,Ê,J1c                 ó   — |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }| j                             d¦  «        }|dk    s|d	k    r|                      |||||¦  «         dS |d
k    rp|dk    rO|                     d¦  «        pd}|                     d¦  «        pd}	ddlm}
  |
||||	ddddd| j        ¦
  «
         dS |                      |||||¦  «         dS |dk    rr|dk    rQ|                     d¦  «        pd}|                     d¦  «        pd}	ddlm}
  |
||||	ddddd| j        d¬¦  «         dS |                      |||||¦  «         dS |dk    r|  	                    d¦  «         dS dS )z$Handle click on recommendation card.rÞ   Nr˜  r™  rš  r   Úai_click_actionr@   u   Zobrazit menu akcÃ­zVyhledat na Websharer   rô  rp   r›  r   ©Úsearch_and_play_movieu   Vyhledat a pÅ™ehrÃ¡tT)ÚautoplayzZobrazit WCS detailyrb  )
rè   re  rf  r   ra   Ú_show_action_menur   Ú	wcs.utilsr  rÄ   )r   r  r
  r˜  r™  rš  r   Úclick_actionrô  r›  r  s              r   rn  z6AIChatRecommendationDialog.handle_recommendation_clickö  sQ  € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØÐ�V�Và×"Ò" 9Ñ-Ô-ˆØ× Ò  Ñ)Ô)ˆØ×Ò Ñ'Ô'ˆØ×%Ò% lÑ3Ô3ˆ
ð ”z×,Ò,Ð->Ñ?Ô?ˆð ˜Ò%Ð%¨Ð9NÒ)NÐ)NØ×"Ò" 7¨E°4¸ÀTÑJÔJÐJØˆFð Ð1Ò1Ð1à˜WÒ$Ð$à×'Ò'¨Ñ/Ô/Ð5°2�ØŸš XÑ.Ô.Ð4°"�Ø;Ð;Ð;Ð;Ð;Ð;Ø%Ð% e¨T°4¸ÀÀRÈÈRÐQSÐUYÔU_Ñ`Ô`Ð`Ð`Ð`ð ×&Ò& w°°t¸ZÈÑNÔNÐNÐNÐNàÐ3Ò3Ð3à˜WÒ$Ð$Ø×'Ò'¨Ñ/Ô/Ð5°2�ØŸš XÑ.Ô.Ð4°"�Ø;Ð;Ð;Ð;Ð;Ð;à%Ð% e¨T°4¸ÀÀRÈÈRÐQSÐUYÔU_ÐjnÐoÑoÔoÐoÐoÐoð ×&Ò& w°°t¸ZÈÑNÔNÐNÐNÐNàÐ3Ò3Ð3à�OŠO˜DÑ!Ô!Ð!Ð!Ð!ð 4Ð3r   c                 ón  — t          j        ¦   «         }|dk    �rdd|› �ddg}t          |d|› �|¦  «        }|dk    rLddlm}	 d	| j                             d
¦  «        › d|› d |	|¦  «        › �}
t          j        d|
› d�¦  «         d3S |dk    rd|› d�}|  	                    |¦  «         d3S |dk    r:d	| j                             d
¦  «        › d|› �}
t          j        d|
› d�¦  «         d3S |dk    r:d	| j                             d
¦  «        › d|› �}
t          j        d|
› d�¦  «         d3S d3S |dk    s|dk    �r<ddd|› �ddg}t          |d|› d|› d�|¦  «        }|dk    r:d	| j                             d
¦  «        › d|› �}t          j        d|› d�¦  «         d3S |dk    r`ddlm}	 d	| j                             d
¦  «        › d|› d |	|¦  «        › �}|  
                    ¦   «          t          j        d |› d!�¦  «         d3S |dk    r d"|› d|› d#�}|  	                    |¦  «         d3S |dk    rdd$lm}  || j        ||¦  «         d3S |d%k    r&dd&lm} |                     d|d'œ| j        ¦  «         d3S d3S dd(d|› �ddg}t          |d|› d|› d�|¦  «        }|dk    r:d	| j                             d
¦  «        › d)|› �}t          j        d|› d�¦  «         d3S |dk    rc|                     d*¦  «        pd+}|                     d,¦  «        pd+}dd-lm}  |||||d+d+d+d+d+| j        ¦
  «
         |  
                    ¦   «          d3S |dk    r d.|› d|› d/�}|  	                    |¦  «         d3S |dk    rdd0lm}  || j        ||¦  «         d3S |d%k    r&dd&lm} |                     d1|d2œ| j        ¦  «         d3S d3S )4u<   StandardnÃ­ modÃ¡lnÃ­ dialog s akcemi (pÅ¯vodnÃ­ chovÃ¡nÃ­).r@   zZobrazit filmy v kolekcizInspiruj se: u   PÅ™idat do Moje filmyu   PÅ™idat do knihovny KodizAkce: r   ro  rl  r‰   r~  r  r€  rÒ  r@  z	Kolekce 'uX   ' mÄ› bavÃ­. DoporuÄ� mi jinÃ© filmovÃ© sÃ¡gy nebo svÄ›ty, do kterÃ½ch se mohu ponoÅ™it.rR  z2?action=add_collection_to_my_movies&collection_id=rn  rM  z0?action=add_collection_to_library&collection_id=rK   rÑ   zZobrazit detailyu   Zobrazit sezÃ³nyu   PÅ™idat do Moje seriÃ¡lyr´  z/?action=show_wcs_details&media_type=tv&tmdb_id=rq  rm  rr  rs  r|  u`   )' se mi lÃ­bÃ­. HledÃ¡m dalÅ¡Ã­ seriÃ¡l, kterÃ½ mÄ› chytne a nepustÃ­ (binge-watch potenciÃ¡l).rv  rS  rx  )r   r{  r  z2?action=show_wcs_details&media_type=movie&tmdb_id=rô  rp   r›  r  r}  uZ   )' byl skvÄ›lÃ½ zÃ¡Å¾itek. DoporuÄ� mi nÄ›co dalÅ¡Ã­ho, co ve mÄ› zanechÃ¡ podobnÃ½ dojem.rt  r   )r   rz  N)r  ÚDialogÚcompat_selectrˆ  rp  r   r%   r+   rÔ  rj  r•   r‰  rw  rŠ  ry  r‹  rf  r   r  r  ru  )r   r˜  r™  rš  r   r
  ÚdialogÚoptsÚselrp  r  r–  Ú
detail_urlÚseasons_urlrw  r“  rô  r›  r  ru  s                       r   r  z,AIChatRecommendationDialog._show_action_menu)  s!  € å”Ñ!Ô!ˆà˜Ò%Ñ%ð +Ø' Ð'Ð'Ø'Ø*ð	ˆDõ   Ð(8°Ð(8Ð(8¸$Ñ?Ô?ˆCà�aŠxˆxà3Ð3Ð3Ð3Ð3Ð3ð \ $¤*×"9Ò"9¸$Ñ"?Ô"?ð  \ð  \Ðnuð  \ð  \ð  ISð  ISð  TYñ  IZô  IZð  \ð  \�ÝÔ#Ð$>¸Ð$>Ð$>Ð$>Ñ?Ô?Ð?Ð?Ð?Ø˜’�ð $O¨uð  $Oð  $Oð  $OÐ Ø×&Ò&Ð'7Ñ8Ô8Ð8Ð8Ð8Ø˜’�à| $¤*×"9Ò"9¸$Ñ"?Ô"?Ð|Ð|ÐszÐ|Ð|�ÝÔ#Ð$7°Ð$7Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8Ø˜’�àz $¤*×"9Ò"9¸$Ñ"?Ô"?ÐzÐzÐqxÐzÐz�ÝÔ#Ð$7°Ð$7Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8ð �ð
 ˜8Ò#Ð# z°TÒ'9Ñ'9ð #Ø"Ø' Ð'Ð'Ø*Ø*ðˆDõ   Ð(A°Ð(AÐ(A¸$Ð(AÐ(AÐ(AÀ4ÑHÔHˆCà�aŠxˆxð A¨¬×)@Ò)@ÀÑ)FÔ)Fð  Að  AÐw~ð  Að  A�
ÝÔ#Ð$>°Ð$>Ð$>Ð$>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø3Ð3Ð3Ð3Ð3Ð3ð U¨$¬*×*AÒ*AÀ$Ñ*GÔ*Gð  Uð  UÐryð  Uð  Uð  BLð  BLð  MRñ  BSô  BSð  Uð  U�Ø—
’
‘”�ÝÔ#Ð$kÈ{Ð$kÐ$kÐ$kÑlÔlÐlÐlÐlØ˜’�ð $_¨uð  $_ð  $_¸ð  $_ð  $_ð  $_Ð Ø×&Ò&Ð'7Ñ8Ô8Ð8Ð8Ð8Ø˜’�Ø=Ð=Ð=Ð=Ð=Ð=Ø'Ð'¨¬
°G¸UÑCÔCÐCÐCÐCØ˜’�ØAÐAÐAÐAÐAÐAØ×3Ò3À8ÐZaÐ4bÐ4bÐdhÔdnÑoÔoÐoÐoÐoð �ð #ØØ' Ð'Ð'Ø'Ø*ðˆDõ   Ð(A°Ð(AÐ(A¸$Ð(AÐ(AÐ(AÀ4ÑHÔHˆCà�aŠxˆxð D¨¬×)@Ò)@ÀÑ)FÔ)Fð  Dð  Dð  {Bð  Dð  D�
ÝÔ#Ð$>°Ð$>Ð$>Ð$>Ñ?Ô?Ð?Ð?Ð?Ø˜’�Ø×'Ò'¨Ñ/Ô/Ð5°2�ØŸš XÑ.Ô.Ð4°"�Ø;Ð;Ð;Ð;Ð;Ð;Ø%Ð% e¨T°4¸ÀÀRÈÈRÐQSÐUYÔU_Ñ`Ô`Ð`Ø—
’
‘”���Ø˜’�ð $V¨Eð  $Vð  $V°Tð  $Vð  $Vð  $VÐ Ø×&Ò&Ð'7Ñ8Ô8Ð8Ð8Ð8Ø˜’�Ø<Ð<Ð<Ð<Ð<Ð<Ø&Ð& t¤z°7¸EÑBÔBÐBÐBÐBØ˜’�ØAÐAÐAÐAÐAÐAØ×3Ò3À7ÐX_Ð4`Ð4`ÐbfÔblÑmÔmÐmÐmÐmð �r   rV  )T)r   )NNTr   r   )6r€   r�   r‚   rÀ  rÓ  r   r¾   rÎ   rî   rá   rþ   rö   rç   rå   r  r  rv  r�  r–  r‚  rž  r‹  r�  rƒ  r¾  r¿  rp  rq  rÏ  r­  r¬  rV  rU  rL  rQ  rZ  r«  ro  râ   ræ   rš  r§  r¡  rj  rã   r›  rñ  rð  rü  r  r†  rn  r  Ú__classcell__)r¼   s   @r   r†   r†   ê   s�  ø€ € € € € ð #Ð-FÐPkÐlÐlØÐ!>ÐHcÐdÐdØÐ%BÐL_Ð`Ð`Ø \Ð;NÐOÐOØ ^Ð=QÐRÐRØ¨ÐAYÐZÐZØ KÐ9RÐSÐSØ Ð3JÐKÐKð	€Ið 8Ø'Ø'ØØ'Ø0ðð €Kð#*ð #*ð #*ð #*ð #*ðR	%ð 	%ð 	%ð@ð @ð @ð @ðCð Cð CðJDð Dð Dð$Dð Dð Dð	ð 	ð 	ð	'ð 	'ð 	'ð]ð ]ð ]ð<.
ð .
ð .
ð`Hð Hð HðTJ*ð J*ð J*ðXbð bð bðH/(ð /(ð /(ðd,Zð ,Zð ,Zð\<eð <eð <eð|%ð %ð %ð(Qð (Qð (Qð (QðX5ð 5ð 5ð`ð `ð `ð&]ð ]ð ]ð(!Uð !Uð !UðFZð Zð ZðB~ð ~ð ~ð ~ð]Yð ]Yð ]Yð~8ð 8ð 8ð> #.¸Ð@Ð@Ø"3¸vÐFÐFØ"/¸>ÐJÐJØ"3¸~ÐNÐNØ"+°yÐAÐAØ",¸	ÐBÐBØ"+°yÐAÐAØ".¸*ÐEÐEØ"1¸ZÐHÐHØ",¸ÐFÐFØ"*Ð6KÐLÐLØ"*Ð6HÐIÐIØ")Ð5HÐIÐIØ"4À
ÐKÐKðð Ðð$ RÐQÐQØ]Ð]Ð]Ø�.ØBÐBÐBØFÐFÐFØ\Ð\Ð\Ø[Ð[Ð[ØIÐIÐIØXÐXÐXØ$�oðð €Kðà \ÀÐIÐIðð 	 \ÀÐJÐJðð 	 \ÀÐIÐIð	ð
 	Ð%9ÈÐVÐVðð 	Ð%5À\ÐRÐRðð 	Ð%6ÀgÐNÐNðð 	Ð%6ÀhÐOÐOðð 	Ð%6ÀgÐNÐNðð 	Ð%5ÀWÐMÐMðð 	Ð%5ÀXÐNÐNðð  	Ð(=ÈWÐUÐUð!ð& 	 Y¸gÐFÐFð'ð( 	 Y¸hÐGÐGð)ð. 	Ð%6ÀgÐNÐNð/ð0 	Ð%9ÈÐQÐQð1ð2 	Ð%7ÀwÐOÐOð3ð4 	 \ÀÐIÐIð5ð: &*¸ÐAÐAØ%)¸ÐBÐBð=ð ð ÐðB+að +að +að +aðZð ð ð[ð [ð [ð8_Zð _Zð _ZðB&ð &ð &ð$	ð 	ð 	ð 	ð&ð &ð &ðDð Dð Dð ð ð ð0ð ð ð ð8lð lð lð\f.ð f.ð f.ðPJð Jð Jð
ð ð ð@Rð @Rð @RðDð ð ð6<Yð <Yð <Yð|1"ð 1"ð 1"ðfWnð Wnð Wnð Wnð Wnð Wnð Wnr   r†   )$rT  r   r  r+   r  r   Ú
xbmcpluginr  r§   r
  r&   rÂ   r   r  r   rì  Úwcs.metadata.TMDbClientr   Úwcsr   Úwcs.uir   Úwcs.ui.dialogs.DialogWcsSearchr	   r
   rˆ  r†  Úwcs.websharer   Úwebshare_apiÚwcs.ai.DialogAIDebugRequestr   r   r   ÚWindowXMLDialogr†   r„   r   r   ú<module>r,     s¡  ðØ >Ð >Ð >Ð >Ð >Ð >Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WðQð Qð Qð Qð Qñ Qô Qð QðfVnð Vnð Vnð Vnð Vn Ô!8ñ Vnô Vnð Vnð Vnð Vnr   