§
   ÜûÁÅWjã                   óž   — d 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  G d	„ d
¦  «        Z	 dd„ZdS )zó
DialogAddMedia - Unified dialog for adding media (series or movies) to channels/cinemas.

This module provides:
- AddMediaDialog: Controller for inline add media dialog
- create_add_media_controller: Factory function for creating controllers
é    N)Ú
quote_plus)Ú	user_data)Úget_cache_manager©Úget_tmdb_api_key)Ú
AIProvider)ÚAIRecommendationPromptBuilderc                   óŒ  — e Zd ZdZi 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!“d"d#“d$d%d&œ¥Zi d'd(“dd“dd	“d
d“dd“dd“dd“d)d*“dd“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d%“Z	 dTd:„Zd;„ Zd<„ Zd=„ Z	d>„ Z
d?„ Zd@„ ZdA„ ZdB„ ZdC„ ZdD„ ZdE„ ZdUdF„ZdG„ ZdH„ ZdI„ ZdJ„ ZdK„ ZdL„ ZdM„ ZdN„ ZdO„ ZdP„ ZdQ„ ZdR„ ZdS„ Zd8S )VÚAddMediaDialogz‹
    Controller for the inline Add Media dialog.
    
    Supports both series (TV) and movies (Cinema) based on media_type parameter.
    é   ÚAkceé   u   DobrodruÅ¾nÃ½é   u
   AnimovanÃ½é#   ÚKomedieéP   ÚKrimiéc   ÚDokumenté   ÚDramaiÿ)  u   RodinnÃ½é   ÚFantasyé$   u   HistorickÃ½é   ÚHorori¢(  u   HudebnÃ­i°%  u	   ZÃ¡hadnÃ½iý)  u   RomantickÃ½in  zSci-Fii*  zTV Filmé5   ÚThrilleru
   VÃ¡leÄ�nÃ½ÚWestern)i *  é%   i*  u   Akce a dobrodruÅ¾stvÃ­i
*  u   DÄ›tskÃ½i*  u   ZprÃ¡vyi*  ÚRealityi*  zSci-Fi a fantasyi*  Ú
Telenovelai*  z	Talk Showi*  u   VÃ¡leÄ�nÃ½ a politickÃ½r    NÚtvc                 óN  — || _         || _        || _        || _        || _        || _        d| _        | j        r+| j        r$| j                             | j        ¦  «        | _        g | _        t          ¦   «         | _
        d| _        d| _        |dk    r| j        n| j        | _        dS )aÖ  
        Initialize the Add Media dialog controller.
        
        Args:
            parent_window: Parent dialog instance (MyTVDialog or MyCinemaDialog)
            addon: xbmcaddon.Addon instance
            channel_manager: MediaChannelManager instance
            channel_id: ID of the channel to add media to
            on_close_callback: Optional callback function called when dialog closes
            media_type: 'tv' for series, 'cinema' for movies
        NFÚcinema)ÚparentÚaddonÚchannel_managerÚ
channel_idÚ_on_close_callbackÚ
media_typeÚchannelÚget_channel_by_idÚ_itemsr   Ú_cacheÚ_media_addedÚ
_is_activeÚMOVIE_GENRE_MAPÚTV_GENRE_MAPÚ	GENRE_MAP)ÚselfÚparent_windowr'   r(   r)   Úon_close_callbackr+   s          úc/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/DialogAddMedia.pyÚ__init__zAddMediaDialog.__init__1   s°   € ð $ˆŒØˆŒ
Ø.ˆÔØ$ˆŒØ"3ˆÔØ$ˆŒð ˆŒØÔð 	S D¤Oð 	SØÔ/×AÒAÀ$Ä/ÑRÔRˆDŒLð ˆŒÝ'Ñ)Ô)ˆŒØ!ˆÔØˆŒð 2<¸xÒ1GÐ1G˜Ô-Ð-ÈTÔM^ˆŒˆˆó    c                 óþ  — d| _         d| _        | j        dk    rd}nd}| j                             dd¦  «         | j                             d|¦  «         | j                             d	¦  «         | j                             d
¦  «         t          d¦  «        D ]d}t          j        d¦  «         | j         	                    d¦  «         t          j        d¦  «         | j         
                    ¦   «         dk    r dS ŒedS )z!Show the inline Add Media dialog.TFr%   õA   Vyberte filmy z vaÅ¡Ã­ uloÅ¾enÃ© knihovny a pÅ™idejte je do kina.õG   Vyberte seriÃ¡ly z vaÅ¡Ã­ uloÅ¾enÃ© knihovny a pÅ™idejte je do kanÃ¡lu.úWCS.MyTV.AddDialog.ActiveÚtrueúWCS.MyTV.AddDialog.DescriptionúWCS.MyTV.AddDialog.ListingModeúWCS.MyTV.AddDialog.ListingTitleé   éd   éñ#  é2   N)r1   r0   r+   r&   ÚsetPropertyÚclearPropertyÚrangeÚxbmcÚsleepÚ
setFocusIdÚ
getFocusId)r5   ÚdescÚattempts      r8   ÚshowzAddMediaDialog.showS   s   € àˆŒØ!ˆÔð Œ?˜hÒ&Ð&ØVˆDˆDà\ˆDàŒ×ÒÐ ;¸VÑDÔDÐDØŒ×ÒÐ @À$ÑGÔGÐGØŒ×!Ò!Ð"BÑCÔCÐCØŒ×!Ò!Ð"CÑDÔDÐDå˜Q‘x”xð 	ð 	ˆGÝŒJ�s‰OŒOˆOØŒK×"Ò" 4Ñ(Ô(Ð(ÝŒJ�r‰NŒNˆNØŒ{×%Ò%Ñ'Ô'¨4Ò/Ð/Ø��ð 0ð		ð 	r:   c                 ó   — d| _         | j                             d¦  «         | j                             d¦  «         | j                             d¦  «         | j                             d¦  «         | j                             d¦  «         |                      ¦   «          | j        rO	 |                      ¦   «          n9# t
          $ r,}t          j        d|› �t          j        ¦  «         Y d}~nd}~ww xY w| j         	                    d	¦  «         dS )
z!Hide the inline Add Media dialog.Fr>   rA   rB   r@   ú!WCS.MyTV.AddDialog.ActionsVisiblez-[AddMediaDialog] Error in on_close callback: NiŒ#  )
r1   r&   rH   Ú_clear_ai_loading_propertiesr*   Ú	ExceptionrJ   ÚlogÚLOGERRORrL   )r5   Úes     r8   ÚhidezAddMediaDialog.hidej   s"  € àˆŒØŒ×!Ò!Ð"=Ñ>Ô>Ð>ØŒ×!Ò!Ð"BÑCÔCÐCØŒ×!Ò!Ð"CÑDÔDÐDØŒ×!Ò!Ð"BÑCÔCÐCØŒ×!Ò!Ð"EÑFÔFÐFà×)Ò)Ñ+Ô+Ð+àÔ"ð 	]ð]Ø×'Ò'Ñ)Ô)Ð)Ð)øÝð ]ð ]ð ]Ý”ÐLÈÐLÐLÍdÌmÑ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\øøøøð]øøøð 	Œ×Ò˜tÑ$Ô$Ð$Ð$Ð$s   Â&B; Â;
C1Ã"C,Ã,C1c                 ó   — | j         S )z.Return True if the dialog is currently active.)r1   ©r5   s    r8   Ú	is_activezAddMediaDialog.is_active}   s
   € àŒÐr:   c                 ó   — | j         S )z>Return True if any media was added during this dialog session.©r0   rZ   s    r8   Úwas_media_addedzAddMediaDialog.was_media_added�   ó   € àÔ Ð r:   c                 ó   — | j         S )z2Return True if any media was added (legacy alias).r]   rZ   s    r8   Úwas_series_addedzAddMediaDialog.was_series_added†   r_   r:   c                 ó2  — | j         sdS |                     ¦   «         }|t          j        k    �r5| j                             ¦   «         dk    �r| j                             d¦  «        }|                     ¦   «         }d|cxk    rt          | j	        ¦  «        k     rÈn nÅddl
m} | j	        |         |c| _        | _        |                     ¦   «         }|                     | j        dk    rdnd|                     d¦  «        |                     ¦   «         d	œ|                     | j        dk    rd
nd¦  «        | j        f|                     d¦  «        | j        fdœ¬¦  «         dS |dv r¯| j                             d¦  «        r|                      ¦   «          dS | j                             d¦  «        rO| j                             d¦  «         | j                             d¦  «         | j                             d¦  «         n|                      ¦   «          dS dS )z3Handle user input actions. Returns True if handled.Féû#  r   )Úcontextr%   Úmovier#   Útmdb_id)ÚtypeÚtmdbÚtitleià  iá  i�~  )r,   Úsimilar)ÚactionsT)é
   é\   rR   rA   rB   rE   )r1   ÚgetIdÚxbmcguiÚACTION_CONTEXT_MENUr&   rM   Ú
getControlÚgetSelectedPositionÚlenr.   Úwcs.skinrd   Ú_selected_itemÚ_selected_posÚgetSelectedItemÚ	open_menur+   ÚgetPropertyÚgetLabelÚtextÚ_action_add_to_channelÚ_action_find_similarÚ_hide_action_buttonsrH   rL   rX   )r5   ÚactionÚ	action_idÚcontrolÚindexrd   Úselecteds          r8   ÚonActionzAddMediaDialog.onActionŠ   s;  € àŒð 	Ø�5à—L’L‘N”Nˆ	à�Ô3Ò3Ñ3¸¼×8NÒ8NÑ8PÔ8PÐTXÒ8XÑ8XØ”k×,Ò,¨TÑ2Ô2ˆGØ×/Ò/Ñ1Ô1ˆEØ�EÐ,Ð,Ò,Ð,�C ¤Ñ,Ô,Ò,Ð,Ð,Ð,Ð,Ø,Ð,Ð,Ð,Ð,Ð,Ø:>¼+ÀeÔ:LÈeÐ7�Ô# TÔ%7Ø"×2Ò2Ñ4Ô4�Ø×!Ò!°d´oÈÒ6QÐ6Q¨7¨7ÐW[Ø+3×+?Ò+?À	Ñ+JÔ+JÐU]×UfÒUfÑUhÔUhð#jð #jà7>·|²|ÈTÌ_Ð`hÒMhÐMhÀEÀEÐnsÑ7tÔ7tØ7;Ô7Rð7Tà7>·|²|ÀEÑ7JÔ7JÈDÔLeÐ6fð+hð +hð "ñ iô ið ið
 �4à˜Ð Ð ØŒ{×&Ò&Ð'JÑKÔKð Ø×)Ò)Ñ+Ô+Ð+Ø�tØ”×(Ò(Ð)IÑJÔJð Ø”×)Ò)Ð*JÑKÔKÐKØ”×)Ò)Ð*KÑLÔLÐLØ”×&Ò& tÑ,Ô,Ð,Ð,à—	’	‘”�Ø�4àˆur:   c                 ó¨  — | j         sdS |dk    r|                      ¦   «          dS |dk    r|                      d¦  «         dS |dk    r|                      d¦  «         dS |dk    r|                      d	¦  «         dS |d
k    r|                      d¦  «         dS |dk    r|                      ¦   «          dS |dk    r|                      ¦   «          dS dS )z-Handle click events. Returns True if handled.Fið#  TrE   Ú
my_libraryéò#  Úsearchéó#  Útmdb_recommendationséô#  Úai_recommendationsrc   é$  )r1   rX   Ú_show_media_listingÚ_show_action_buttonsÚ_execute_selected_action)r5   Ú	controlIds     r8   ÚonClickzAddMediaDialog.onClick­   s	  € àŒð 	Ø�5à˜ÒÐØ�IŠI‰KŒKˆKØ�4Ø˜$ÒÐØ×$Ò$ \Ñ2Ô2Ð2Ø�4Ø˜$ÒÐØ×$Ò$ XÑ.Ô.Ð.Ø�4Ø˜$ÒÐØ×$Ò$Ð%;Ñ<Ô<Ð<Ø�4Ø˜$ÒÐØ×$Ò$Ð%9Ñ:Ô:Ð:Ø�4Ø˜$ÒÐØ×%Ò%Ñ'Ô'Ð'Ø�4Ø˜$ÒÐØ×)Ò)Ñ+Ô+Ð+Ø�4àˆur:   c                 óš   — | j         sdS | j        dk    rdddddœ}ndd	d
ddœ}||v r#| j                             d||         ¦  «         dS dS )z,Handle focus changes to update descriptions.Nr%   r<   u%   Vyhledejte film podle nÃ¡zvu na TMDb.u3   ZÃ­skejte doporuÄ�enÃ­ na zÃ¡kladÄ› filmÅ¯ v kinÄ›.u4   Nechte AI navrhnout filmy podle vaÅ¡ich preferencÃ­.)rE   r‡   r‰   r‹   r=   u(   Vyhledejte seriÃ¡l podle nÃ¡zvu na TMDb.u8   ZÃ­skejte doporuÄ�enÃ­ na zÃ¡kladÄ› seriÃ¡lÅ¯ v kanÃ¡lu.u7   Nechte AI navrhnout seriÃ¡ly podle vaÅ¡ich preferencÃ­.r@   )r1   r+   r&   rG   )r5   r‘   Údescriptionss      r8   ÚonFocuszAddMediaDialog.onFocusÊ   s�   € àŒð 	ØˆFàŒ?˜hÒ&Ð&àYØ=ØKØLð	ð ˆLˆLð `Ø@ØPØOð	ð ˆLð ˜Ð$Ð$ØŒK×#Ò#Ð$DÀlÐS\ÔF]Ñ^Ô^Ð^Ð^Ð^ð %Ð$r:   c                 óî  — g }d}|dk    rî| j         dk    r;d}t          j        | j        ¦  «        }|s| j                             dd¦  «         dS n:d}t          j        | j        ¦  «        }|s| j                             dd¦  «         dS | j                             d	|¦  «         | j                             d
|¦  «         || _        t          j
        | j        |fd¬¦  «                             ¦   «          dS |dk    �rÓ| j         dk    rÔd}t          j        ¦   «                              dt          j        ¬¦  «        }|sdS 	 dt#          ¦   «         › dt%          |¦  «        › �}t'          j        |d¬¦  «        }|                     ¦   «                              dg ¦  «        }�n# t,          $ r-}t/          j        d|› �t.          j        ¦  «         Y d}~dS d}~ww xY wd}t          j        ¦   «                              dt          j        ¬¦  «        }|sdS 	 dt#          ¦   «         › dt%          |¦  «        › �}t'          j        |d¬¦  «        }|                     ¦   «                              dg ¦  «        }n:# t,          $ r-}t/          j        d|› �t.          j        ¦  «         Y d}~dS d}~ww xY w|s| j                             dd¦  «         dS �n2|dk    �rP| j         dk    �r°d}| j        r| j        j        s| j                             dd¦  «         dS g }	t9          ¦   «         }
d„ | j        j        D ¦   «         }| j        j        dd…         D �]}|                     d¦  «        }	 d |› d!t#          ¦   «         › d"�}t'          j        |d¬¦  «        }|                     ¦   «                              dg ¦  «        }|D ]o}t;          |                     d¦  «        ¦  «        }||
vrG||vrC|
                     |¦  «         |                     d#d¦  «        |d$<   |	                     |¦  «         ŒpŒß# t,          $ r-}t/          j        d%|› �t.          j        ¦  «         Y d}~�Œd}~ww xY w|	s| j                             d&d'¦  «         dS |	dd(…         }�nod}| j        r| j        j        s| j                             d)d¦  «         dS g }	t9          ¦   «         }
d*„ | j        j        D ¦   «         }| j        j        dd…         D ]ý}|                     d¦  «        }	 d+|› d!t#          ¦   «         › d"�}t'          j        |d¬¦  «        }|                     ¦   «                              dg ¦  «        }|D ]V}t;          |                     d¦  «        ¦  «        }||
vr.||vr*|
                     |¦  «         |	                     |¦  «         ŒWŒÅ# t,          $ r,}t/          j        d%|› �t.          j        ¦  «         Y d}~Œöd}~ww xY w|	s| j                             d&d'¦  «         dS |	dd(…         }nÛ|d,k    rÕ| j         dk    r3d-}| j        r| j        j        s| j                             d.d¦  «         dS n2d-}| j        r| j        j        s| j                             d/d¦  «         dS | j                             d	|¦  «         | j                             d
d0¦  «         t          j
        | j         d¬1¦  «                             ¦   «          dS |sdS || _        | j                             d	|¦  «         | j                             d
|¦  «         |  !                    |¦  «         | j         "                    d2¦  «         dS )3z(Show media listing for the given source.Ú r†   r%   u   Z mojÃ­ knihovnyu   Å½Ã¡dnÃ© uloÅ¾enÃ© filmyÚwarningNu   Å½Ã¡dnÃ© uloÅ¾enÃ© seriÃ¡lyrA   rB   T)ÚtargetÚargsÚdaemonrˆ   u   VyhledÃ¡vÃ¡nÃ­ na TMDbzHledat film)rg   ú2https://api.themoviedb.org/3/search/movie?api_key=ú&language=cs-CZ&query=rl   ©ÚtimeoutÚresultsz[AddMediaDialog] Search error: zHledat serialú/https://api.themoviedb.org/3/search/tv?api_key=zNic nenalezenorŠ   u   DoporuÄ�enÃ­ z TMDbu   Kino nemÃ¡ Å¾Ã¡dnÃ© filmyc                 óR   — h | ]$}t          |                     d ¦  «        ¦  «        ’Œ%S ©Úid©ÚstrÚget©Ú.0Úms     r8   ú	<setcomp>z5AddMediaDialog._show_media_listing.<locals>.<setcomp>"  ó*   € ÐQÐQÐQ°A�s 1§5¢5¨¡;¤;Ñ/Ô/ÐQÐQÐQr:   é   r¤   ú#https://api.themoviedb.org/3/movie/z/recommendations?api_key=ú&language=cs-CZri   Únamez-[AddMediaDialog] TMDb recommendations error: zZadna doporuceniÚinfoé   u   KanÃ¡l nemÃ¡ Å¾Ã¡dnÃ© seriÃ¡lyc                 óR   — h | ]$}t          |                     d ¦  «        ¦  «        ’Œ%S r£   r¥   ©r©   Úss     r8   r«   z5AddMediaDialog._show_media_listing.<locals>.<setcomp>A  r¬   r:   ú https://api.themoviedb.org/3/tv/rŒ   õ   DoporuÄ�enÃ­ od AIu%   Kino nemÃ¡ Å¾Ã¡dnÃ© filmy pro kontextu*   KanÃ¡l nemÃ¡ Å¾Ã¡dnÃ© seriÃ¡ly pro kontextu   NaÄ�Ã­tÃ¡m AI doporuÄ�enÃ­...©r™   r›   rc   )#r+   r   Úload_tmdb_moviesr'   r&   Ú_show_toastÚload_tmdb_seriesrG   r.   Ú	threadingÚThreadÚ_enrich_library_itemsÚstartro   ÚDialogÚinputÚINPUT_ALPHANUMr   r   Úrequestsr§   ÚjsonrT   rJ   rU   rV   r,   Ú
media_listÚsetr¦   ÚaddÚappendÚ_fetch_ai_recommendationsÚ_populate_listrL   )r5   ÚsourceÚitemsri   Úmy_itemsÚsearch_queryÚurlÚresponserW   Úall_recsÚseen_idsÚcurrent_idsre   Úmovie_idÚrecsÚrecÚrec_idÚseriesÚ	series_ids                      r8   rŽ   z"AddMediaDialog._show_media_listingá   s±  € àˆØˆà�\Ò!Ð!ØŒ (Ò*Ð*Ø*�Ý$Ô5°d´jÑAÔA�Øð Ø”K×+Ò+Ð,FÈ	ÑRÔRÐRØ�Fðð +�Ý$Ô5°d´jÑAÔA�Øð Ø”K×+Ò+Ð,IÈ9ÑUÔUÐUØ�FàŒK×#Ò#Ð$DÀfÑMÔMÐMØŒK×#Ò#Ð$EÀuÑMÔMÐMØ"ˆDŒKåÔ DÔ$>ÀhÀ[ÐY]Ð^Ñ^Ô^×dÒdÑfÔfÐfØˆFà�xÒÑØŒ (Ò*Ð*Ø0�Ý&œ~Ñ/Ô/×5Ò5°mÍ'ÔJ`Ð5ÑaÔa�Ø#ð Ø�Fðð TÕO_ÑOaÔOað  Tð  Tõ  zDð  EQñ  zRô  zRð  Tð  T�CÝ'œ|¨C¸Ð<Ñ<Ô<�HØ$ŸMšM™OœO×/Ò/°	¸2Ñ>Ô>�E‘EøÝ ð ð ð Ý”HÐB¸qÐBÐBÅDÄMÑRÔRÐRØ�F�F�F�F�Føøøøðøøøð 1�Ý&œ~Ñ/Ô/×5Ò5°oÍGÔLbÐ5ÑcÔc�Ø#ð Ø�Fðð QÕL\ÑL^ÔL^ð  Qð  Qõ  wAð  BNñ  wOô  wOð  Qð  Q�CÝ'œ|¨C¸Ð<Ñ<Ô<�HØ$ŸMšM™OœO×/Ò/°	¸2Ñ>Ô>�E�EøÝ ð ð ð Ý”HÐB¸qÐBÐBÅDÄMÑRÔRÐRØ�F�F�F�F�Føøøøðøøøð ð Ø”×'Ò'Ð(8¸)ÑDÔDÐDØ�ñð Ð-Ò-Ñ-ØŒ (Ò*Ñ*Ø-�Ø”|ð ¨4¬<Ô+Bð Ø”K×+Ò+Ð,GÈÑSÔSÐSØ�Fà�Ý™5œ5�ØQÐQ¸¼Ô9PÐQÑQÔQ�à!œ\Ô4°R°a°RÔ8ð eñ e�EØ$Ÿyšy¨™œ�Hðeð KÀHð  Kð  KÕgwÑgyÔgyð  Kð  Kð  K˜Ý#+¤<°¸RÐ#@Ñ#@Ô#@˜Ø'Ÿ}š}™œ×2Ò2°9¸bÑAÔA˜Ø#'ð 5ð 5˜CÝ%(¨¯ª°©¬Ñ%7Ô%7˜FØ%¨XÐ5Ð5¸&ÈÐ:SÐ:SØ (§¢¨VÑ 4Ô 4Ð 4à.1¯gªg°g¸rÑ.BÔ.B  F¡Ø (§¢°Ñ 4Ô 4Ð 4øð5øõ %ð eð eð eÝœÐ!TÐQRÐ!TÐ!TÕVZÔVcÑdÔdÐdÐdÐdÐdÐdÑdøøøøðeøøøð  ð Ø”K×+Ò+Ð,>ÀÑGÔGÐGØ�FØ   " œ�‘ð .�Ø”|ð ¨4¬<Ô+Bð Ø”K×+Ò+Ð,LÈiÑXÔXÐXØ�Fà�Ý™5œ5�ØQÐQ¸¼Ô9PÐQÑQÔQ�à"œlÔ5°b°q°bÔ9ð eð e�FØ &§
¢
¨4Ñ 0Ô 0�Ið
eð IÀð  Ið  IÕeuÑewÔewð  Ið  Ið  I˜Ý#+¤<°¸RÐ#@Ñ#@Ô#@˜Ø'Ÿ}š}™œ×2Ò2°9¸bÑAÔA˜Ø#'ð 5ð 5˜CÝ%(¨¯ª°©¬Ñ%7Ô%7˜FØ%¨XÐ5Ð5¸&ÈÐ:SÐ:SØ (§¢¨VÑ 4Ô 4Ð 4Ø (§¢°Ñ 4Ô 4Ð 4øð	5øõ
 %ð eð eð eÝœÐ!TÐQRÐ!TÐ!TÕVZÔVcÑdÔdÐdÐdÐdÐdÐdÐdøøøøðeøøøð  ð Ø”K×+Ò+Ð,>ÀÑGÔGÐGØ�FØ   " œ��àÐ+Ò+Ð+ØŒ (Ò*Ð*Ø,�Ø”|ð ¨4¬<Ô+Bð Ø”K×+Ò+Ð,SÐU^Ñ_Ô_Ð_Ø�Fðð -�Ø”|ð ¨4¬<Ô+Bð Ø”K×+Ò+Ð,XÐZcÑdÔdÐdØ�FàŒK×#Ò#Ð$DÀfÑMÔMÐMØŒK×#Ò#Ð$EÐGfÑgÔgÐgåÔ DÔ$BÈ4ÐPÑPÔP×VÒVÑXÔXÐXØˆFàð 	ØˆFàˆŒØŒ×ÒÐ @À&ÑIÔIÐIØŒ×ÒÐ AÀ5ÑIÔIÐIØ×Ò˜EÑ"Ô"Ð"ØŒ×Ò˜tÑ$Ô$Ð$Ð$Ð$sd   ÅAF% Æ%
GÆ/"GÇGÈAI8 É8
J/Ê"J*Ê*J/Í+CP1Ð1
Q(Ð;"Q#Ñ#Q(ÔB,W×
W=×"W8×8W=c                 ó  — | j                              d¦  «        }|                     ¦   «          |                      ¦   «         }g }| j        dk    rdnd}|D �]Ö}|                     d¦  «        }|s-|                     |¦  «         |                      |||¦  «         ŒG|› d|› �}| j                             |¦  «        }	|	r-|                     |	¦  «         |                      ||	|¦  «         Œ—	 d|› d|› d	t          ¦   «         › d
�}
t          j        |
d¬¦  «        }|j        dk    rs|                     ¦   «         }|dk    rd|v r|d         |d<   | j                             ||d¬¦  «         |                     |¦  «         |                      |||¦  «         n,|                     |¦  «         |                      |||¦  «         �Œr# t          $ rY}t          j        d|› �t          j        ¦  «         |                     |¦  «         |                      |||¦  «         Y d}~�ŒÐd}~ww xY w|| _        | j                             ¦   «          |                     ¦   «         dk    r| j                              d¦  «         dS dS )z7Enrich library items with TMDb metadata (async worker).rc   r%   re   r#   r¤   Ú_detail_zhttps://api.themoviedb.org/3/ú/ú	?api_key=r¯   rC   rž   éÈ   ri   r°   i€:	 )Úttl_secondsz#[AddMediaDialog] TMDb fetch error: Nr   )r&   rq   ÚresetÚ_get_current_channel_idsr+   r§   rÈ   Ú_add_item_to_listr/   r   rÃ   Ústatus_coderÄ   rÆ   rT   rJ   rU   Ú
LOGWARNINGr.   ÚflushÚsizerL   )r5   rÌ   Úlist_controlrÓ   ÚenrichedÚapi_typeÚitemrf   Ú	cache_keyÚcachedrÏ   rÐ   Ú	full_datarW   s                 r8   r¾   z$AddMediaDialog._enrich_library_itemsq  sÈ  € à”{×-Ò-¨dÑ3Ô3ˆØ×ÒÑÔÐà×3Ò3Ñ5Ô5ˆØˆà"œo°Ò9Ð9�7�7¸tˆàð 	Lñ 	LˆDØ—h’h˜t‘n”nˆGØð Ø—’ Ñ%Ô%Ð%Ø×&Ò& |°T¸;ÑGÔGÐGØà#Ð6Ð6¨WÐ6Ð6ˆIØ”[—_’_ YÑ/Ô/ˆFàð LØ—’ Ñ'Ô'Ð'Ø×&Ò& |°V¸[ÑIÔIÐIÐIðLØz¸(ÐzÐzÀWÐzÐzÕWgÑWiÔWiÐzÐzÐz�CÝ'œ|¨C¸Ð;Ñ;Ô;�HØÔ+¨sÒ2Ð2Ø$,§M¢M¡O¤O˜	à# wÒ.Ð.°7¸iÐ3GÐ3GØ09¸'Ô0B˜I fÑ-ØœŸš¨	°9È)˜ÑTÔTÐTØ Ÿš¨	Ñ2Ô2Ð2Ø×.Ò.¨|¸YÈÑTÔTÐTÐTà Ÿš¨Ñ-Ô-Ð-Ø×.Ò.¨|¸TÀ;ÑOÔOÐOùøÝ ð Lð Lð LÝ”HÐFÀ1ÐFÐFÍÌÑXÔXÐXØ—O’O DÑ)Ô)Ð)Ø×*Ò*¨<¸¸{ÑKÔKÐKÐKÐKÐKÐKÑKøøøøðLøøøð
 ˆŒØŒ×ÒÑÔÐà×ÒÑÔ Ò"Ð"ØŒK×"Ò" 4Ñ(Ô(Ð(Ð(Ð(ð #Ð"s   Ã.CGÇ
H+ÇAH&È&H+c           
      ó´  ‡ ‡‡‡‡‡ ‡!— ddl Š!ddlŠddl}‰!                      ¦   «         Št          j        ¦   «         Š t          d¦  «        Š‰ j        dk    rg d¢Šng d¢Š	 t          ¦   «         }|                     ¦   «         pd}| 	                    ¦   «         pd}n#  d}d}Y nxY w‰ j
                             d	d
¦  «         ‰ j
                             d|¦  «         ‰ j
                             d|¦  «         ‰ j
                             dd¦  «         ‰ j
                             dd¦  «         ‰ j
                             d‰                     ‰¦  «        ¦  «         	 ‰ j
                             d¦  «         n#  Y nxY wˆˆˆˆ ˆˆ ˆ!fd„}t          j        |d¬¦  «        }|                     ¦   «          	 ‰ j
                             dd¦  «         t          ‰ j        j        ¦  «        }‰ j        dk    rBd|dœ}t%          d|¦  «        }	d„ |D ¦   «         }
dd                     |
dd…         ¦  «        › �}nAd|dœ}t%          d|¦  «        }	d „ |D ¦   «         }
d!d                     |
dd…         ¦  «        › �}|	                     ¦   «         }‰ j
                             dd"¦  «         |                     |› d#|› �‰ j        dk    rd$nd%¬&¦  «        \  }}|sE‰                      ¦   «          ‰                      ¦   «          ‰ j
                             d'd(¦  «         dS ‰ j
                             dd)¦  «         	 |                     |¦  «        }|                     d*g ¦  «        }nT# |j        $ rG ‰                      ¦   «          ‰                      ¦   «          ‰ j
                             d+d,¦  «         Y dS w xY w|sW‰                      ¦   «          ‰                      ¦   «          ‰ j        dk    rd-nd.}‰ j
                             d/|› �d(¦  «         dS ‰ j
                             dd0¦  «         ‰                      ¦   «         }g }t;          |¦  «        D ]Í\  }}|                     d1¦  «        p|                     d2¦  «        }|                     d3¦  «        }‰ j
                             dd4|d5z   › d6t=          |¦  «        › d7|pd8› �¦  «         ‰                      ||¦  «        }|r;tA          |                     d9¦  «        ¦  «        }||vr| !                    |¦  «         ŒÎ‰                      ¦   «          |sD‰                      ¦   «          ‰ j        dk    rd-nd:}‰ j
                             d;|› d<�d(¦  «         dS ‰                      ¦   «          |‰ _"        d=}‰ j
                             d>|¦  «         ‰  #                    |¦  «         ‰ j
                             d?¦  «         dS # tH          $ rp}‰                      ¦   «          ‰                      ¦   «          tK          j&        d@|› �tJ          j'        ¦  «         ‰ j
                             dAd,¦  «         Y d}~dS d}~ww xY w)Bz(Fetch AI recommendations (async worker).r   Nz$0123456789ABCDEF@#$%&*!?<>[]{}|/\~`^r%   )u   HledÃ¡m v archivech kinau   Konzultuji s filmovou akademiÃ­u   Analyzuji Å¾Ã¡nry a reÅ¾isÃ©ryõ   ProchÃ¡zÃ­m databÃ¡ze TMDbõ   HledÃ¡m skrytÃ© perly)u!   HledÃ¡m v multivesmÃ­ru seriÃ¡lÅ¯zKonzultuji s Netflixemu   Analyzuji Å¾Ã¡nry a tropyrï   rð   ÚAIÚDefaultúWCS.MyTV.AddDialog.AILoadingr?   úWCS.MyTV.AddDialog.ProviderúWCS.MyTV.AddDialog.ModelúWCS.MyTV.AddDialog.AIStatusu   PÅ™ipravuji doporuÄ�enÃ­...úWCS.MyTV.AddDialog.Timerz0.0súWCS.MyTV.AddDialog.FunStatusi"$  c                  ó   •— d} d}‰	                      ¦   «         sô	 ‰
                     ¦   «         ‰z
  }‰j                             d|d›d�¦  «         d                     ‰                     ‰d¬¦  «        ¦  «        }‰j                             d|¦  «         |d	z  }|dz  dk    r6| d	z   t          ‰¦  «        z  } ‰j                             d
‰|          ¦  «         ‰
                     d¦  «         n#  Y d S xY w‰	                      ¦   «         ¯òd S d S )Nr   r÷   z.1frµ   r—   r²   )ÚkúWCS.MyTV.AddDialog.GlitchTexté   rø   gš™™™™™¹?)Úis_setÚtimer&   rG   ÚjoinÚchoicesrs   rK   )Úfun_idxÚtickÚelapsedÚglitch_textÚfun_messagesÚglitch_charsÚrandomr5   Ú
start_timeÚstop_animationrþ   s       €€€€€€€r8   Úanimation_workerzBAddMediaDialog._fetch_ai_recommendations.<locals>.animation_workerÒ  s.  ø€ ØˆGØˆDØ$×+Ò+Ñ-Ô-ð ðØ"Ÿiši™kœk¨JÑ6�GØ”K×+Ò+Ð,FÈ7ÐHYÐHYÐHYÐHYÑZÔZÐZà"$§'¢'¨&¯.ª.¸È¨.Ñ*LÔ*LÑ"MÔ"M�KØ”K×+Ò+Ð,KÈ[ÑYÔYÐYà˜A‘I�DØ˜b‘y A’~�~Ø#*¨Q¡;µ#°lÑ2CÔ2CÑ"C˜Øœ×/Ò/Ð0NÐP\Ð]dÔPeÑfÔfÐfà—J’J˜s‘O”O�O�OøðØ�E�Eøøøð %×+Ò+Ñ-Ô-ð ð ð ð ð s   ›CC0 Ã0C5Tr¸   u   OdesÃ­lÃ¡m dotaz na AI...Ú	my_movies)rg   ÚdataÚmoviesc                 ó¸   — g | ]W}|                      d ¦  «        s|                      d¦  «        ¯,|                      d ¦  «        p|                      dd¦  «        ‘ŒXS )r°   ri   r—   ©r§   r¨   s     r8   ú
<listcomp>z<AddMediaDialog._fetch_ai_recommendations.<locals>.<listcomp>ñ  s_   € Ð{Ð{Ð{ÀqÐ[\×[`Ò[`ÐagÑ[hÔ[hÐ{Ðlm×lqÒlqÐryÑlzÔlzÐ{˜qŸušu V™}œ}ÐB°·²°g¸rÑ0BÔ0BÐ{Ð{Ð{r:   u.   Na zÃ¡kladÄ› tÄ›chto filmÅ¯ doporuÄ� dalÅ¡Ã­: ú, rl   Ú	my_seriesrØ   c                 ód   — g | ]-}|                      d ¦  «        ¯|                      d d¦  «        ‘Œ.S ©r°   r—   r  r´   s     r8   r  z<AddMediaDialog._fetch_ai_recommendations.<locals>.<listcomp>ö  s5   € ÐWÐWÐW°QÈÏÊÈvÉÌÐW˜qŸušu V¨RÑ0Ô0ÐWÐWÐWr:   u1   Na zÃ¡kladÄ› tÄ›chto seriÃ¡lÅ¯ doporuÄ� dalÅ¡Ã­: u   AI pÅ™emÃ½Å¡lÃ­...z

User: Úmycinema_recommendationÚmytv_recommendation)Ú
usage_typeu   AI nevrÃ¡tila odpovÄ›Ä�r˜   u   ZpracovÃ¡vÃ¡m odpovÄ›Ä�...Úrecommendationsu    AI odpovÄ›Ä� nenÃ­ validnÃ­ JSONÚerrorÚfilmyu   seriÃ¡lyu   AI nedoporuÄ�ila Å¾Ã¡dnÃ© u   VyhledÃ¡vÃ¡m na TMDb...ri   Úoriginal_titleÚyearzTMDb: rü   rÜ   z - z...r¤   ÚserialyzNenalezeny z na TMDbr·   rB   rc   z+[AddMediaDialog] AI recommendations error: zChyba AI doporuceni)(rþ   r  rÄ   r¼   ÚEventÚlistr+   r   Úget_current_providerÚget_current_modelr&   rG   ÚchoicerL   r½   r¿   r,   rÅ   r	   rÿ   Úbuild_system_promptÚsend_promptrÆ   rS   rº   Úloadsr§   ÚJSONDecodeErrorrá   Ú	enumeraters   Ú_search_tmdbr¦   rÈ   r.   rÊ   rT   rJ   rU   rV   )"r5   rÄ   Úai_providerÚprovider_nameÚ
model_namer
  Úanim_threadÚmedia_itemsrd   Úprompt_builderÚmedia_namesÚuser_msgÚsystem_promptrÐ   Úusager  r  Ú
media_namerÓ   Ú
tmdb_itemsÚirÖ   Ú	rec_titleÚrec_yearÚ	tmdb_dataÚitem_idri   rW   r  r  r  r  r	  rþ   s"   `                           @@@@@@r8   rÉ   z(AddMediaDialog._fetch_ai_recommendations¢  s=  øøøøøøø€ àˆˆˆØˆˆˆØˆˆˆà—Y’Y‘[”[ˆ
Ý"œÑ*Ô*ˆåÐCÑDÔDˆàŒ?˜hÒ&Ð&ðð ð ˆLˆLðð ð ˆLð	#Ý$™,œ,ˆKØ'×<Ò<Ñ>Ô>ÐFÀ$ˆMØ$×6Ò6Ñ8Ô8ÐE¸IˆJˆJøð	#Ø ˆMØ"ˆJˆJˆJøøøàŒ×ÒÐ >ÀÑGÔGÐGØŒ×ÒÐ =¸}ÑMÔMÐMØŒ×ÒÐ :¸JÑGÔGÐGØŒ×ÒÐ =Ð?\Ñ]Ô]Ð]ØŒ×ÒÐ :¸FÑCÔCÐCØŒ×ÒÐ >ÀÇÂÈlÑ@[Ô@[Ñ\Ô\Ð\ð	ØŒK×"Ò" 4Ñ(Ô(Ð(Ð(øð	ØˆDøøøð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ(  Ô&Ð.>ÀtÐLÑLÔLˆØ×ÒÑÔÐðV	DØŒK×#Ò#Ð$AÐC^Ñ_Ô_Ð_å˜tœ|Ô6Ñ7Ô7ˆKàŒ (Ò*Ð*Ø#.¸ÐDÐD�Ý!>¸xÈÑ!QÔ!Q�Ø{Ð{ÈKÐ{Ñ{Ô{�ØiÈDÏIÊIÐVaÐbeÐceÐbeÔVfÑLgÔLgÐiÐi��à#.¸ÐDÐD�Ý!>¸xÈÑ!QÔ!Q�ØWÐW¸+ÐWÑWÔW�ØlÈtÏyÊyÐYdÐehÐfhÐehÔYiÑOjÔOjÐlÐl�à*×>Ò>Ñ@Ô@ˆMàŒK×#Ò#Ð$AÐCWÑXÔXÐXà)×5Ò5Ø Ð6Ð6¨HÐ6Ð6Ø8<¼È8Ò8SÐ8SÐ4Ð4ÐYnð 6ñ pô p‰OˆH�eð ð Ø×"Ò"Ñ$Ô$Ð$Ø×1Ò1Ñ3Ô3Ð3Ø”×'Ò'Ð(AÀ9ÑMÔMÐMØ�àŒK×#Ò#Ð$AÐC_Ñ`Ô`Ð`ðØ—z’z (Ñ+Ô+�Ø"&§(¢(Ð+<¸bÑ"AÔ"A��øØÔ'ð ð ð Ø×"Ò"Ñ$Ô$Ð$Ø×1Ò1Ñ3Ô3Ð3Ø”×'Ò'Ð(JÈGÑTÔTÐTØ��ð	øøøð #ð Ø×"Ò"Ñ$Ô$Ð$Ø×1Ò1Ñ3Ô3Ð3Ø(,¬¸8Ò(CÐ(C˜W˜WÈ�
Ø”×'Ò'Ð(QÀZÐ(QÐ(QÐS\Ñ]Ô]Ð]Ø�àŒK×#Ò#Ð$AÐC\Ñ]Ô]Ð]à×7Ò7Ñ9Ô9ˆKØˆJå# OÑ4Ô4ð 5ð 5‘��3ØŸGšG GÑ,Ô,ÐI°·²Ð8HÑ0IÔ0I�	ØŸ7š7 6™?œ?�à”×'Ò'Ð(EØP˜Q˜q™SÐPÐP¥3 Ñ#7Ô#7ÐPÐP¸IÐ<NÈÐPÐPñRô Rð Rð !×-Ò-¨i¸ÑBÔB�	Øð 5Ý! )§-¢-°Ñ"5Ô"5Ñ6Ô6�GØ kÐ1Ð1Ø"×)Ò)¨)Ñ4Ô4Ð4øà×ÒÑ Ô Ð àð Ø×1Ò1Ñ3Ô3Ð3Ø(,¬¸8Ò(CÐ(C˜W˜WÈ�
Ø”×'Ò'Ð(J°jÐ(JÐ(JÐ(JÈIÑVÔVÐVØ�à×-Ò-Ñ/Ô/Ð/à$ˆDŒKØ(ˆEØŒK×#Ò#Ð$EÀuÑMÔMÐMØ×Ò 
Ñ+Ô+Ð+ØŒK×"Ò" 4Ñ(Ô(Ð(Ð(Ð(øåð 	Dð 	Dð 	DØ×ÒÑ Ô Ð Ø×-Ò-Ñ/Ô/Ð/ÝŒHÐFÀ1ÐFÐFÍÌÑVÔVÐVØŒK×#Ò#Ð$9¸7ÑCÔCÐCÐCÐCÐCÐCÐCÐCøøøøð		Døøøsl   Á:B ÂB"ÅE6 Å6E:Æ3E"W ÌW Ì3+M ÍW ÍAN0Î,W Î/N0Î0AW ÐE&W Õ4A'W ×
Y×'A%YÙYc                 ó  — |sdS 	 | j         dk    r,dt          ¦   «         › dt          |¦  «        › �}|r|d|› �z  }n+dt          ¦   «         › dt          |¦  «        › �}|r|d|› �z  }t          j        |d¬	¦  «        }|                     ¦   «                              d
g ¦  «        }|r$|d         }| j         dk    rd|v r|d         |d<   |S dS # t          $ r-}t          j        d|› �t          j	        ¦  «         Y d}~dS d}~ww xY w)z1Search TMDb for media by title and optional year.Nr%   rœ   r�   z&year=r¡   z&first_air_date_year=rC   rž   r    r   ri   r°   z$[AddMediaDialog] TMDb search error: )
r+   r   r   rÃ   r§   rÄ   rT   rJ   rU   rä   )r5   ri   r  rÏ   rÐ   r    ÚresultrW   s           r8   r(  zAddMediaDialog._search_tmdbA  s�  € àð 	Ø�4ð	ØŒ (Ò*Ð*ð IÕK[ÑK]ÔK]ð  Ið  IÕuð  AFñ  vGô  vGð  Ið  I�Øð +Ø˜? D˜?˜?Ñ*�Cøð FÕHXÑHZÔHZð  Fð  FÕr|ð  ~Cñ  sDô  sDð  Fð  F�Øð :ØÐ9°4Ð9Ð9Ñ9�CÝ”| C°Ð3Ñ3Ô3ˆHØ—m’m‘o”o×)Ò)¨)°RÑ8Ô8ˆGØð Ø  œ�à”? hÒ.Ð.°7¸fÐ3DÐ3DØ%+¨G¤_�F˜6‘NØ�Ø�4øÝð 	ð 	ð 	ÝŒHÐ?¸AÐ?Ð?ÅÄÑQÔQÐQØ�4�4�4�4�4øøøøð	øøøs   †CC Ã
DÃ"D Ä Dc                 ór  — | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         dS )	z(Clear all AI loading related properties.ró   rö   r÷   rû   rø   rô   rõ   N)r&   rH   rZ   s    r8   rS   z+AddMediaDialog._clear_ai_loading_properties[  s©   € àŒ×!Ò!Ð"@ÑAÔAÐAØŒ×!Ò!Ð"?Ñ@Ô@Ð@ØŒ×!Ò!Ð"<Ñ=Ô=Ð=ØŒ×!Ò!Ð"AÑBÔBÐBØŒ×!Ò!Ð"@ÑAÔAÐAØŒ×!Ò!Ð"?Ñ@Ô@Ð@ØŒ×!Ò!Ð"<Ñ=Ô=Ð=Ð=Ð=r:   c                 ó8  — 	 | j                              d¦  «        }|                     ¦   «          |                      ¦   «         }|D ]}|                      |||¦  «         ŒdS # t
          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)z#Populate the media listing control.rc   z([AddMediaDialog] Error populating list: N)	r&   rq   rà   rá   râ   rT   rJ   rU   rV   )r5   rÌ   rç   rÓ   Ú	item_datarW   s         r8   rÊ   zAddMediaDialog._populate_liste  sÌ   € ð
	TØœ;×1Ò1°$Ñ7Ô7ˆLØ×ÒÑ Ô Ð à×7Ò7Ñ9Ô9ˆKà"ð Mð M�	Ø×&Ò& |°YÀÑLÔLÐLÐLðMð Møõ ð 	Tð 	Tð 	TÝŒHÐCÀÐCÐCÅTÄ]ÑSÔSÐSÐSÐSÐSÐSÐSÐSøøøøð	Tøøøs   ‚AA" Á"
BÁ,"BÂBc           
      óP  — 	 |                      d¦  «        p|                      dd¦  «        }t          j        |¬¦  «        }|                      d¦  «        p|                      dd¦  «        }|r|                     d¦  «        sd|› �}|                      d	¦  «        p|                      d
d¦  «        }|r|                     d¦  «        sd|› �}| j        dk    rdnd}|                     |p||pddœ¦  «         |                     dt          |                      dd¦  «        ¦  «        ¦  «         | j        dk    r-|                      dd¦  «        p|                      dd¦  «        }	n,|                      dd¦  «        p|                      dd¦  «        }	|                     d|	rt          |	¦  «        dd…         nd¦  «         |                      d¦  «        p|                      d¦  «        pd}
|                     d|
r*t          t          t          |
¦  «        d¦  «        ¦  «        nd¦  «         |                      dd¦  «        p|                      dd¦  «        }|                     d|¦  «         |                      dg ¦  «        }|r|  
                    |¦  «        }n`|                      d d¦  «        p|                      d!d¦  «        }t          |t          ¦  «        rd"                     d#„ |D ¦   «         ¦  «        }|                     d |r|nd¦  «         t          |                      d¦  «        ¦  «        |v r|                     d$d%¦  «         |                     |¦  «         dS # t          $ r-}t!          j        d&|› �t           j        ¦  «         Y d}~dS d}~ww xY w)'z&Add a single item to the list control.r°   ri   r—   ©ÚlabelÚposter_pathÚposterÚhttpzhttps://image.tmdb.org/t/p/w500Úbackdrop_pathÚfanartz https://image.tmdb.org/t/p/w1280r%   zVspecial://home/addons/plugin.video.milionar/resources/media/placeholder_movie_card.pngzSspecial://home/addons/plugin.video.milionar/resources/media/placeholder_tv_card.jpgzOspecial://home/addons/plugin.video.milionar/resources/media/fanart_fallback.jpg)rC  rF  rf   r¤   Úrelease_dater  Úfirst_air_dateNé   Úvote_averageÚratingr   rü   Ú0ÚoverviewÚplotÚ	genre_idsÚgenreÚgenresr  c                 ód   — g | ]-}t          |t          ¦  «        ¯|                     d d¦  «        ‘Œ.S r  )Ú
isinstanceÚdictr§   )r©   Úgs     r8   r  z4AddMediaDialog._add_item_to_list.<locals>.<listcomp>�  s8   € Ð,kÐ,kÐ,kÀ1ÕWaÐbcÕeiÑWjÔWjÐ,k¨Q¯UªU°6¸2Ñ->Ô->Ð,kÐ,kÐ,kr:   Úis_addedr?   z$[AddMediaDialog] Error adding item: )r§   ro   ÚListItemÚ
startswithr+   ÚsetArtrG   r¦   ÚroundÚfloatÚ_map_genre_idsrS  r  rÿ   ÚaddItemrT   rJ   rU   rV   )r5   rç   r>  rÓ   r°   rê   rC  rF  ÚplaceholderÚyear_valÚ
rating_valÚplot_valrQ  Úgenre_namesrW   s                  r8   râ   z AddMediaDialog._add_item_to_lists  sæ  € ð0	PØ—=’= Ñ(Ô(ÐF¨I¯MªM¸'À2Ñ,FÔ,FˆDÝÔ#¨$Ð/Ñ/Ô/ˆDà—]’] =Ñ1Ô1ÐP°Y·]²]À8ÈRÑ5PÔ5PˆFØð D˜f×/Ò/°Ñ7Ô7ð DØC¸6ÐCÐC�à—]’] ?Ñ3Ô3ÐR°y·}²}ÀXÈrÑ7RÔ7RˆFØð E˜f×/Ò/°Ñ7Ô7ð EØD¸FÐDÐD�àvzô  wFð  JRò  wRð  wRÐrÐrð  XmˆKà�KŠKØ Ð/ KØ ÐuÐ$uðð ñ ô ð ð
 ×Ò˜Y­¨I¯MªM¸$ÀÑ,CÔ,CÑ(DÔ(DÑEÔEÐEð Œ (Ò*Ð*Ø$Ÿ=š=¨¸Ñ<Ô<ÐYÀ	ÇÂÈfÐVXÑ@YÔ@Y��à$Ÿ=š=Ð)9¸2Ñ>Ô>Ð[À)Ç-Â-ÐPVÐXZÑB[ÔB[�Ø×Ò˜V¸(Ð%J¥S¨¡]¤]°2°A°2Ô%6Ð%6ÈÑKÔKÐKà"Ÿš ~Ñ6Ô6ÐV¸)¿-º-ÈÑ:QÔ:QÐVÐUVˆJØ×Ò˜XÈ:Ð'^¥s­5µ°zÑ1BÔ1BÀAÑ+FÔ+FÑ'GÔ'GÐ'GÐ[^Ñ_Ô_Ð_à —}’} Z°Ñ4Ô4ÐQ¸	¿ºÀfÈbÑ8QÔ8QˆHØ×Ò˜V XÑ.Ô.Ð.à—]’] ;°Ñ3Ô3ˆFØð mØ"×1Ò1°&Ñ9Ô9��à'Ÿmšm¨G°RÑ8Ô8ÐW¸I¿MºMÈ(ÐTVÑ<WÔ<W�Ý˜k­4Ñ0Ô0ð mØ"&§)¢)Ð,kÐ,kÈÐ,kÑ,kÔ,kÑ"lÔ"l�KØ×Ò˜W°[Ð&H k kÀbÑIÔIÐIå�9—=’= Ñ&Ô&Ñ'Ô'¨;Ð6Ð6Ø× Ò  ¨VÑ4Ô4Ð4à× Ò  Ñ&Ô&Ð&Ð&Ð&øÝð 	Pð 	Pð 	PÝŒHÐ?¸AÐ?Ð?ÅÄÑOÔOÐOÐOÐOÐOÐOÐOÐOøøøøð	Pøøøs   ‚M*M. Í.
N%Í8"N Î N%c                 ób   ‡ — ˆ fd„|dd…         D ¦   «         }|rd                      |¦  «        ndS )zMap TMDb genre IDs to names.c                 óX   •— g | ]&}|‰j         v ¯‰j                              |d ¦  «        ‘Œ'S )r—   )r4   r§   )r©   Úgidr5   s     €r8   r  z1AddMediaDialog._map_genre_ids.<locals>.<listcomp>©  s9   ø€ Ð_Ð_Ð_°ÈÐPTÔP^ÐI^ÐI^�”×#Ò# C¨Ñ,Ô,ÐI^ÐI^ÐI^r:   Né   r  r—   )rÿ   )r5   rO  Únamess   `  r8   r\  zAddMediaDialog._map_genre_ids§  s@   ø€ à_Ð_Ð_Ð_¸	À"À1À"¼Ð_Ñ_Ô_ˆØ#(Ð0ˆt�yŠy˜ÑÔÐ¨bÐ0r:   c                 óp   — | j         r"| j         j        rd„ | j         j        D ¦   «         S t          ¦   «         S )z.Get set of media IDs currently in the channel.c                 óR   — h | ]$}t          |                     d ¦  «        ¦  «        ’Œ%S r£   r¥   r¨   s     r8   r«   z:AddMediaDialog._get_current_channel_ids.<locals>.<setcomp>¯  s*   € ÐFÐFÐF¨•C˜Ÿš˜d™œÑ$Ô$ÐFÐFÐFr:   )r,   rÅ   rÆ   rZ   s    r8   rá   z'AddMediaDialog._get_current_channel_ids¬  s<   € àŒ<ð 	G˜DœLÔ3ð 	GØFÐF¨d¬lÔ.EÐFÑFÔFÐFÝ‰uŒuˆr:   c                 ó¦  — 	 | j                              d¦  «        }|                     ¦   «         }|dk     s| j        sdS | j        |         | _        || _        | j                              d¦  «        }|                     ¦   «          | j        dk    rg d¢}ng d¢}|D ]E\  }}t          j	        |¬¦  «        }| 
                    d	|¦  «         |                     |¦  «         ŒF| j          
                    d
d¦  «         | j                              d¦  «         dS # t          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)z5Show action buttons for the currently selected media.rc   r   Nr�   r%   ))u   PÅ™idat do kinaÚadd_to_channel)z
Moje filmyÚadd_to_my_library©u   PodobnÃ©Úfind_similar))u   MÅ¯j kanÃ¡lrk  )u   Moje seriÃ¡lyrl  rm  )u	   HrÃ¡t hruÚ	play_gamer@  r€   rR   r?   z/[AddMediaDialog] Error showing action buttons: )r&   rq   rr   r.   ru   rv   rà   r+   ro   rW  rG   r]  rL   rT   rJ   rU   rV   )	r5   rç   Úselected_posÚaction_listrk   rA  r€   rê   rW   s	            r8   r�   z#AddMediaDialog._show_action_buttons²  s‘  € ð$	[Øœ;×1Ò1°$Ñ7Ô7ˆLØ'×;Ò;Ñ=Ô=ˆLà˜aÒÐ t¤{ÐØ�à"&¤+¨lÔ";ˆDÔØ!-ˆDÔàœ+×0Ò0°Ñ6Ô6ˆKØ×ÒÑÔÐàŒ (Ò*Ð*ðð ð ��ðð ð �ð %,ð *ð *Ñ ��yÝÔ'¨eÐ4Ñ4Ô4�Ø× Ò  ¨iÑ8Ô8Ð8Ø×#Ò# DÑ)Ô)Ð)Ð)àŒK×#Ò#Ð$GÈÑPÔPÐPØŒK×"Ò" 4Ñ(Ô(Ð(Ð(Ð(øåð 	[ð 	[ð 	[ÝŒHÐJÀqÐJÐJÍDÌMÑZÔZÐZÐZÐZÐZÐZÐZÐZøøøøð	[øøøs   ‚;D ¿CD Ä
EÄ#"EÅEc                 ón   — | j                              d¦  «         | j                              d¦  «         dS )z3Hide action buttons and return focus to media list.rR   rc   N)r&   rH   rL   rZ   s    r8   r~   z#AddMediaDialog._hide_action_buttonsÚ  s5   € àŒ×!Ò!Ð"EÑFÔFÐFØŒ×Ò˜tÑ$Ô$Ð$Ð$Ð$r:   c                 óD  — 	 | j                              d¦  «        }|                     ¦   «         }|dk     rdS |                     |¦  «        }|                     d¦  «        }|                      ¦   «          |dk    r|                      ¦   «          dS |dk    r|                      ¦   «          dS |dk    r|                      ¦   «          dS |dk    r|  	                    ¦   «          dS dS # t          $ r-}t          j        d	|› �t          j        ¦  «         Y d}~dS d}~ww xY w)
z9Execute the selected action from the action buttons list.r�   r   Nr€   rk  rl  rn  ro  z)[AddMediaDialog] Error executing action: )r&   rq   rr   ÚgetListItemry   r~   r|   Ú_action_add_to_my_libraryr}   Ú_action_play_gamerT   rJ   rU   rV   )r5   rq  rp  Úselected_itemr€   rW   s         r8   r�   z'AddMediaDialog._execute_selected_actionß  s`  € ð	UØœ+×0Ò0°Ñ6Ô6ˆKØ&×:Ò:Ñ<Ô<ˆLà˜aÒÐØ�à'×3Ò3°LÑAÔAˆMØ%×1Ò1°+Ñ>Ô>ˆIà×%Ò%Ñ'Ô'Ð'àÐ,Ò,Ð,Ø×+Ò+Ñ-Ô-Ð-Ð-Ð-ØÐ1Ò1Ð1Ø×.Ò.Ñ0Ô0Ð0Ð0Ð0Ø˜nÒ,Ð,Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+Ø˜kÒ)Ð)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð *Ð)øõ ð 	Uð 	Uð 	UÝŒHÐDÀÐDÐDÅdÄmÑTÔTÐTÐTÐTÐTÐTÐTÐTøøøøð	Uøøøs/   ‚4C( ¸AC( ÂC( Â.C( Ã
C( Ã(
DÃ2"DÄDc                 óL  — t          | d¦  «        r| j        sdS | j                             ¦   «         }t          |                     d¦  «        ¦  «        }|                      ¦   «         }||v r/| j        dk    rdnd}| j                             |› d�d¦  «         dS | j        dk    r|  	                    |¦  «        }| j
                             | j        |¦  «         	 | j                             d	¦  «        }|                     | j        ¦  «        }|                     d
d¦  «         n#  Y nxY w| j
                             | j        ¦  «        | _        d| _        |                     d¦  «        p|                     dd¦  «        }| j                             d|› d�d¦  «         dS )z-Add the selected media to the channel/cinema.ru   Nr¤   r%   ÚFilmu   SeriÃ¡lu    uÅ¾ je v kanÃ¡lur±   rc   rV  r?   Tr°   ri   r—   ú'u   ' pÅ™idÃ¡noÚsuccess)Úhasattrru   Úcopyr¦   r§   rá   r+   r&   rº   Ú_enrich_movie_datar(   Útoggle_media_in_channelr)   rq   rt  rv   rG   r-   r,   r0   )r5   rw  Úmedia_idrÓ   r3  rç   Ú	list_itemr°   s           r8   r|   z%AddMediaDialog._action_add_to_channelù  s²  € å�tÐ-Ñ.Ô.ð 	°dÔ6Ið 	ØˆFàÔ+×0Ò0Ñ2Ô2ˆÝ�}×(Ò(¨Ñ.Ô.Ñ/Ô/ˆà×3Ò3Ñ5Ô5ˆØ�{Ð"Ð"Ø#'¤?°hÒ#>Ð#>˜˜ÀIˆJØŒK×#Ò# zÐ$DÐ$DÐ$DÀfÑMÔMÐMØˆFð Œ?˜hÒ&Ð&Ø ×3Ò3°MÑBÔBˆMàÔ×4Ò4°T´_ÀmÑTÔTÐTð	Øœ;×1Ò1°$Ñ7Ô7ˆLØ$×0Ò0°Ô1CÑDÔDˆIØ×!Ò! *¨fÑ5Ô5Ð5Ð5øð	ØˆDøøøàÔ+×=Ò=¸d¼oÑNÔNˆŒØ ˆÔà× Ò  Ñ(Ô(ÐJ¨M×,=Ò,=¸gÀrÑ,JÔ,JˆØŒ×ÒÐ 5 DÐ 5Ð 5Ð 5°yÑAÔAÐAÐAÐAs   ÃA
D( Ä(D,c                 ó6  — ddl }ddlm} |                     d¦  «        }|s|S 	  || j        ¦  «        }d|› d|› d�} |j        |d¬	¦  «        }|j        d
k    r‰|                     ¦   «         }|                     d¦  «        r|d         |d<   |                     d¦  «        r|d         |d<   |                     d¦  «        r |                     d¦  «        s|d         |d<   n4# t          $ r'}	ddl}
 |
j	        d|	› �|
j
        ¦  «         Y d}	~	nd}	~	ww xY w|S )zEFetch additional movie data (tagline, runtime) from TMDb details API.r   Nr   r¤   r®   rÝ   r¯   rl   rž   rÞ   ÚtaglineÚruntimerM  z-[AddMediaDialog] Error enriching movie data: )rÃ   Úwcs.metadata.TMDbClientr   r§   r'   rã   rÄ   rT   rJ   rU   rä   )r5   Ú
movie_datarÃ   r   rÔ   Úapi_keyÚdetails_urlrÐ   ÚdetailsrW   rJ   s              r8   r~  z!AddMediaDialog._enrich_movie_data  s…  € àˆˆˆØ<Ð<Ð<Ð<Ð<Ð<à—>’> $Ñ'Ô'ˆØð 	ØÐð	[Ø&Ð& t¤zÑ2Ô2ˆGØkÀÐkÐkÐSZÐkÐkÐkˆKØ#�x”| K¸Ð<Ñ<Ô<ˆHàÔ# sÒ*Ð*Ø"Ÿ-š-™/œ/�ð —;’;˜yÑ)Ô)ð ?Ø,3°IÔ,>�J˜yÑ)ð —;’;˜yÑ)Ô)ð ?Ø,3°IÔ,>�J˜yÑ)ð —;’;˜zÑ*Ô*ð A°:·>²>À*Ñ3MÔ3Mð AØ-4°ZÔ-@�J˜zÑ*øøåð 	[ð 	[ð 	[ØˆKˆKˆKØˆDŒHÐHÀQÐHÐHÈ$Ì/ÑZÔZÐZÐZÐZÐZÐZÐZøøøøð	[øøøð Ðs   ¥B?C% Ã%
DÃ/DÄDc                 ó¢  ‡— t          | d¦  «        r| j        sdS | j        }| j        dk    �rg|                     d¦  «        |                     d¦  «        p|                     dd¦  «        |                     dd¦  «        |                     d¦  «        |                     d	¦  «        |                     d
d¦  «        |                     dd¦  «        |                     dd¦  «        dœŠt	          j        | j        ¦  «        pg }t          ˆfd„|D ¦   «         ¦  «        r| j         	                    dd¦  «         dS | 
                    d‰¦  «         t	          j        | j        |¦  «         | j         	                    d‰d         › d�d¦  «         dS |                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d	¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        dœŠt	          j        | j        ¦  «        pg }t          ˆfd„|D ¦   «         ¦  «        r| j         	                    dd¦  «         dS | 
                    d‰¦  «         t	          j        | j        |¦  «         | j         	                    d‰d         › d�d¦  «         dS )z)Add the selected media to user's library.ru   Nr%   r¤   r°   ri   r—   rB  rE  rG  rM  rJ  r   )r¤   r°   ri   rB  rE  rG  rM  rJ  c              3   óŠ   •K  — | ]=}t          |                     d ¦  «        ¦  «        t          ‰d          ¦  «        k    V — Œ>dS ©r¤   Nr¥   )r©   rª   Ú
media_datas     €r8   ú	<genexpr>z;AddMediaDialog._action_add_to_my_library.<locals>.<genexpr>Q  óG   øè è € ÐOÐOÀ•3�q—u’u˜T‘{”{Ñ#Ô#¥s¨:°dÔ+;Ñ'<Ô'<Ò<ÐOÐOÐOÐOÐOÐOr:   zFilm uz je v knihovner±   rz  z' pridano do Moje filmyr{  rH  )r¤   r°   rB  rE  rH  rM  rJ  c              3   óŠ   •K  — | ]=}t          |                     d ¦  «        ¦  «        t          ‰d          ¦  «        k    V — Œ>dS rŒ  r¥   )r©   rµ   r�  s     €r8   rŽ  z;AddMediaDialog._action_add_to_my_library.<locals>.<genexpr>e  r�  r:   zSerial uz je v knihovnez' pridano do Moje serialy)r|  ru   r+   r§   r   r¹   r'   Úanyr&   rº   ÚinsertÚstore_tmdb_moviesr»   Ústore_tmdb_series)r5   rw  Úexistingr�  s      @r8   ru  z(AddMediaDialog._action_add_to_my_library<  sâ  ø€ å�tÐ-Ñ.Ô.ð 	°dÔ6Ið 	ØˆFàÔ+ˆàŒ?˜hÒ&Ñ&à#×'Ò'¨Ñ-Ô-Ø%×)Ò)¨&Ñ1Ô1ÐS°]×5FÒ5FÀwÐPRÑ5SÔ5SØ&×*Ò*¨7°BÑ7Ô7Ø,×0Ò0°Ñ?Ô?Ø!.×!2Ò!2°?Ñ!CÔ!CØ -× 1Ò 1°.À"Ñ EÔ EØ)×-Ò-¨j¸"Ñ=Ô=Ø -× 1Ò 1°.À!Ñ DÔ Dð	ð 	ˆJõ !Ô1°$´*Ñ=Ô=ÐCÀˆHåÐOÐOÐOÐOÀhÐOÑOÔOÑOÔOð Ø”×'Ò'Ð(?ÀÑHÔHÐHØ�à�OŠO˜A˜zÑ*Ô*Ð*ÝÔ'¨¬
°HÑ=Ô=Ð=ØŒK×#Ò#Ð$S¨
°6Ô(:Ð$SÐ$SÐ$SÐU^Ñ_Ô_Ð_Ð_Ð_ð $×'Ò'¨Ñ-Ô-Ø%×)Ò)¨&Ñ1Ô1Ø,×0Ò0°Ñ?Ô?Ø!.×!2Ò!2°?Ñ!CÔ!CØ"/×"3Ò"3Ð4DÀbÑ"IÔ"IØ)×-Ò-¨j¸"Ñ=Ô=Ø -× 1Ò 1°.À!Ñ DÔ Dðð ˆJõ !Ô1°$´*Ñ=Ô=ÐCÀˆHåÐOÐOÐOÐOÀhÐOÑOÔOÑOÔOð Ø”×'Ò'Ð(AÀ6ÑJÔJÐJØ�à�OŠO˜A˜zÑ*Ô*Ð*ÝÔ'¨¬
°HÑ=Ô=Ð=ØŒK×#Ò#Ð$U¨
°6Ô(:Ð$UÐ$UÐ$UÐW`ÑaÔaÐaÐaÐar:   c                 ó�  ‡— t          | d¦  «        r| j        sdS | j                             d¦  «        }|sdS 	 | j        dk    rd|› dt	          ¦   «         › d�}nd|› dt	          ¦   «         › d�}t          j        |d	¬
¦  «        }|                     ¦   «                              dg ¦  «        }|s| j                             dd¦  «         dS | j        dk    r|D ]}d|v r|d         |d<   Œ|  	                    ¦   «         Šˆfd„|D ¦   «         }|s| j                             dd¦  «         dS |dd…         | _
        | j                             dd¦  «         |                      | j
        ¦  «         dS # t          $ rH}t          j        d|› �t          j        ¦  «         | j                             dd¦  «         Y d}~dS d}~ww xY w)zFind similar media on TMDb.ru   Nr¤   r%   r®   z/similar?api_key=r¯   r¶   rl   rž   r    zZadne podobne nenalezenor±   ri   r°   c                 ó\   •— g | ](}t          |                     d ¦  «        ¦  «        ‰v¯&|‘Œ)S r£   r¥   )r©   rµ   rÓ   s     €r8   r  z7AddMediaDialog._action_find_similar.<locals>.<listcomp>Š  s5   ø€ ÐRÐRÐR˜a­c°!·%²%¸±+´+Ñ.>Ô.>ÀkÐ.QÐ.Q˜Ð.QÐ.QÐ.Qr:   zVsechny podobne uz mateé   rB   ÚPodobnez%[AddMediaDialog] Find similar error: zChyba pri hledani podobnychr  )r|  ru   r§   r+   r   rÃ   rÄ   r&   rº   rá   r.   rG   rÊ   rT   rJ   rU   rV   )	r5   r€  rÏ   rÐ   rj   rê   ÚfilteredrW   rÓ   s	           @r8   r}   z#AddMediaDialog._action_find_similarm  s&  ø€ å�tÐ-Ñ.Ô.ð 	°dÔ6Ið 	ØˆFàÔ&×*Ò*¨4Ñ0Ô0ˆØð 	ØˆFð 	LØŒ (Ò*Ð*Øz¸HÐzÐzÕWgÑWiÔWiÐzÐzÐz��àw¸ÐwÐwÕTdÑTfÔTfÐwÐwÐw�å”| C°Ð4Ñ4Ô4ˆHØ—m’m‘o”o×)Ò)¨)°RÑ8Ô8ˆGàð Ø”×'Ò'Ð(BÀFÑKÔKÐKØ�ð Œ (Ò*Ð*Ø#ð 5ð 5�DØ $��Ø'+¨G¤}˜˜V™øà×7Ò7Ñ9Ô9ˆKØRÐRÐRÐR 7ÐRÑRÔRˆHàð Ø”×'Ò'Ð(AÀ6ÑJÔJÐJØ�à" 3 B 3œ-ˆDŒKØŒK×#Ò#Ð$EÀyÑQÔQÐQØ×Ò ¤Ñ,Ô,Ð,Ð,Ð,øåð 	Lð 	Lð 	LÝŒHÐ@¸QÐ@Ð@Å$Ä-ÑPÔPÐPØŒK×#Ò#Ð$AÀ7ÑKÔKÐKÐKÐKÐKÐKÐKÐKøøøøð	Løøøs&   ºBE3 ÃAE3 Ä-AE3 Å3
GÅ==G Ç Gc           	      óš  — | j         dk    rdS t          | d¦  «        r| j        sdS | j                             d¦  «        }| j                             dd¦  «        }|sdS |                      ¦   «          | j                             ¦   «          ddlm} | 	                    | 
                    |d	t          |¦  «        ¬
¦  «        ¦  «         dS )z:Launch Millionaire game for the selected series (TV only).r%   Nru   r¤   r°   r—   r   )ÚmillionairerØ   )ri   r+   rf   )r+   r|  ru   r§   rX   r&   ÚcloseÚ	wcs.gamesrœ  r¿   ÚSubjectr¦   )r5   rÙ   Úseries_namerœ  s       r8   rv  z AddMediaDialog._action_play_game˜  sß   € àŒ?˜hÒ&Ð&ØˆFå�tÐ-Ñ.Ô.ð 	°dÔ6Ið 	ØˆFàÔ'×+Ò+¨DÑ1Ô1ˆ	ØÔ)×-Ò-¨f°bÑ9Ô9ˆàð 	ØˆFð 	�	Š	‰ŒˆØŒ×ÒÑÔÐà)Ð)Ð)Ð)Ð)Ð)Ø×Ò˜+×-Ò-°KÈHÕ^aÐbkÑ^lÔ^lÐ-ÑmÔmÑnÔnÐnÐnÐnr:   ©Nr#   )N) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   r3   r9   rP   rX   r[   r^   ra   r„   r’   r•   rŽ   r¾   rÉ   r(  rS   rÊ   râ   r\  rá   r�   r~   r�   r|   r~  ru  r}   rv  © r:   r8   r   r      s~  € € € € € ðð ðØ
ˆFðØ˜ðØ)+¨\ðØ;=¸yðà
ˆGðà˜ðà%'¨ðà27¸ðð 	ˆIðð ˜=ðð +-¨gðð 8=¸jðð 	ˆkð	ð ! -ð	ð 25°hð	ð
 	ˆyðð
 ˜jðð
 2>À9ðð ð €OðØÐ'ðØ)+¨\ðØ;=¸yðà
ˆGðà˜ðà%'¨ðà27¸ðð 	ˆzðð   ðð /4°Yðð 	ˆyð	ð  Ð!3ð	ð 6;¸Lð	ð
 	ˆ{ðð
 "Ð#<ðð
 ?AÀ)ð€Lð 59ð _ð  _ð  _ð  _ðDð ð ð.%ð %ð %ð&ð ð ð!ð !ð !ð
!ð !ð !ð!ð !ð !ðFð ð ð:_ð _ð _ð.N%ð N%ð N%ð`/)ð /)ð /)ðb]Dð ]Dð ]Dð~ð ð ð ð4>ð >ð >ðTð Tð Tð2Pð 2Pð 2Pðh1ð 1ð 1ð
ð ð ð&[ð &[ð &[ðP%ð %ð %ð
Uð Uð Uð4Bð Bð Bð@!ð !ð !ðF/bð /bð /bðb)Lð )Lð )LðVoð oð oð oð or:   r   r#   c                 ó*   — t          | |||||¦  «        S )aÎ  
    Factory function for creating AddMediaDialog controller.
    
    Args:
        parent_window: Parent dialog instance
        addon: xbmcaddon.Addon instance
        channel_manager: MediaChannelManager instance
        channel_id: ID of the channel to add media to
        on_close_callback: Optional callback function called when dialog closes
        media_type: 'tv' for series, 'cinema' for movies
    
    Returns:
        AddMediaDialog instance
    )r   )r6   r'   r(   r)   r7   r+   s         r8   Úcreate_add_media_controllerr¨  ¯  s#   € õ  ˜-¨°ÀØ+¨Zñ9ô 9ð 9r:   r¡  )r¥  rJ   ro   Ú	xbmcaddonr¼   rÃ   Úurllib.parser   Úwcsr   Úwcs.cachingr   r…  r   Úwcs.ai.AIProviderr   Ú!wcs.ai.DialogAIChatRecommendationr	   r   r¨  r¦  r:   r8   ú<module>r¯     s  ððð ð €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø (Ð (Ð (Ð (Ð (Ð (Ø KÐ KÐ KÐ KÐ KÐ KðSoð Soð Soð Soð Soñ Soô Soð Soðp EIð9ð 9ð 9ð 9ð 9ð 9r:   