§
   Rú öÜ–i½ã                   ó,  — 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m	Z	 d dl
mZ d dlmZmZ d dlmZmZ d dlmZ 	 d dlmZmZmZ d	Zn## e$ r d
Z e j        de j        ¦  «         Y nw xY wd dlmZ d dlmZ d dlm Z   G d„ de¦  «        Z!dd„Z"dS )é    N©Ú
quote_plus)ÚAIChatRecommendationDialogÚAIRecommendationPromptBuilder)ÚMediaChannelManager)ÚAddMediaDialogÚcreate_add_media_controller)Ú	user_dataÚutils)Úget_cache_manager)ÚImageÚImageFilterÚ	ImageDrawTFz3[MyTV] PIL not available - collage/effects disabled©ÚChannelHistory)ÚProgressManager)ÚPlaylistBuilderc                   ó`  ‡ — e Zd ZdZdZdZdZdZdZˆ fd„Z	dfd
„Z
d„ Zd„ Zdgd„Zd„ Zd„ Zdgd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdhd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zˆ fd„Zˆ fd „Zd!„ Zd"„ Z d#„ Z!d$„ Z"d%„ Z#d&„ Z$d'„ Z%did)„Z&d*„ Z'd+„ Z(d,„ Z)d-„ Z*d.„ Z+d/„ Z,d0„ Z-d1„ Z.d2„ Z/d3„ Z0d4„ Z1d5„ Z2d6„ Z3d7„ Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8d<„ Z9d=„ Z:d>„ Z;d?„ Z<d@„ Z=dA„ Z>dB„ Z?dC„ Z@dD„ ZAdjdF„ZBdG„ ZCdgdH„ZDdI„ ZEdJ„ ZFdK„ ZGdL„ ZHdM„ ZIdhdN„ZJdO„ ZKdP„ ZLdQ„ ZMdR„ ZNdhdS„ZOdT„ ZPdU„ ZQdV„ ZRdW„ ZSdX„ ZTdY„ ZU	 	 dkd\„ZVd]„ ZWd^„ ZXdld_„ZYd`„ ZZda„ Z[db„ Z\dc„ Z]dd„ Z^de„ Z_ˆ xZ`S )mÚ
MyTVDialogr   é   é   é   é   é   c                 óì  •— |                      dd ¦  «        | _        |                      dd¦  «        | _        |                      dd¦  «        | _        |                      dd¦  «        | _         t          t          | ¦  «        j        ||g|¢R i |¤Ž || _        d| _	        t          | j        ¦  «        | _        d| _        t          ¦   «         | _        | j                             ¦   «          d | _        d S )	NÚinitial_channel_idÚcontext_uidÚ Úcontext_rowÚinitial_editFÚmy_tvr   )ÚpopÚ_initial_channel_idÚ_context_uidÚ_context_rowÚ_initial_editÚsuperr   Ú__init__Ú_xml_filenameÚ_nav_section_idÚMyTVChannelManagerÚaddonÚchannel_managerÚcurrent_channel_indexr   Ú_cacheÚmaintenanceÚ_toast_timer)ÚselfÚxml_filenameÚ
addon_pathÚargsÚkwargsÚ	__class__s        €ú_/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/DialogMyTV.pyr(   zMyTVDialog.__init__$   sê   ø€ à#)§:¢:Ð.BÀDÑ#IÔ#IˆÔ Ø"ŸJšJ }°bÑ9Ô9ˆÔØ"ŸJšJ }°bÑ9Ô9ˆÔØ#ŸZšZ¨¸Ñ>Ô>ˆÔØ(��j˜$ÑÔÔ(¨°zÐSÀDÐSÐSÐSÈFÐSÐSÐSØ)ˆÔØ&ˆÔÝ1°$´*Ñ=Ô=ˆÔØ%&ˆÔ"õ (Ñ)Ô)ˆŒð 	Œ×ÒÑ!Ô!Ð!ð !ˆÔÐÐó    Úinfoç      @c                 ó\  — ddl }| j        r| j                             ¦   «          |                      d|¦  «         |                      d|¦  «         |                      dd¦  «         |                     || j        ¦  «        | _        d| j        _        | j                             ¦   «          dS )u  
        ZobrazÃ­ vlastnÃ­ toast notifikaci v pravÃ©m hornÃ­m rohu.
        
        Args:
            message: Text zprÃ¡vy
            toast_type: 'info', 'success', 'warning', 'error'
            duration: Doba zobrazenÃ­ v sekundÃ¡ch (default 3.0)
        r   NúWCS.Toast.MessageúWCS.Toast.TypeúWCS.Toast.VisibleÚtrueT)Ú	threadingr1   ÚcancelÚsetPropertyÚTimerÚ_hide_toastÚdaemonÚstart)r2   ÚmessageÚ
toast_typeÚdurationrA   s        r8   Ú_show_toastzMyTVDialog._show_toast9   sº   € ð 	ÐÐÐð Ôð 	'ØÔ×$Ò$Ñ&Ô&Ð&ð 	×ÒÐ,¨gÑ6Ô6Ð6Ø×ÒÐ)¨:Ñ6Ô6Ð6Ø×ÒÐ,¨fÑ5Ô5Ð5ð &ŸOšO¨H°dÔ6FÑGÔGˆÔØ#'ˆÔÔ ØÔ×ÒÑ!Ô!Ð!Ð!Ð!r9   c                 ó”   ‡ — ‰                       d¦  «         ddl}ˆ fd„}|                     d|¦  «                             ¦   «          dS )zSkryje toast notifikaci.r?   r   Nc                  ó\   •— ‰                       d¦  «         ‰                       d¦  «         d S )Nr=   r>   ©ÚclearProperty©r2   s   €r8   Úclear_toast_dataz0MyTVDialog._hide_toast.<locals>.clear_toast_dataW   s3   ø€ Ø×ÒÐ2Ñ3Ô3Ð3Ø×ÒÐ/Ñ0Ô0Ð0Ð0Ð0r9   ç333333Ó?)rO   rA   rD   rG   )r2   rA   rQ   s   `  r8   rE   zMyTVDialog._hide_toastR   sf   ø€ à×ÒÐ.Ñ/Ô/Ð/àÐÐÐð	1ð 	1ð 	1ð 	1ð 	1ð 	�Š˜Ð-Ñ.Ô.×4Ò4Ñ6Ô6Ð6Ð6Ð6r9   c                 ó´  — |                       ¦   «          |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      d	d
¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         d| _        | j        rEt	          | j                             ¦   «         ¦  «        D ]\  }}|j        | j        k    r	|| _         nŒ|                      d¦  «         |                      d¦  «         |                      d¦  «         |                      d¦  «         	 |  	                    d¦  «        }| 
                    ¦   «          n#  Y nxY w|                      ¦   «          | j        | j        k    r*|                      ¦   «         s|                      dd¦  «         | j        | j        k    r|                      ¦   «          | j        | j        k    r(|                      ¦   «         r|                      ¦   «          |                      ¦   «          |                      d¬¦  «         | j        | j        | j        fvr|                      ¦   «          | j        r|                      d¬¦  «         n|                      d¦  «         dt+          | d d!¦  «        v r|                      d"¦  «         | j                             ¦   «         s|                      ¦   «          d S | j        r|                      ¦   «          d S d S )#NúWCS.AIChat.TitlezMyTV - televize budoucnostizWCS.AIChat.Statusu   PÅ™ipravenozWCS.Button.Playu   Å½ivÃ© vysÃ­lÃ¡nÃ­úWCS.Button.PlayEpõ   PÅ™ehrÃ¡t epizoduzWCS.Button.PlaySeriesu   PÅ™ehrÃ¡t seriÃ¡lzWCS.Button.Deleteu   Odebrat kanÃ¡lzWCS.Button.DeleteConfirmu   Opravdu smazat kanÃ¡l?zWCS.Row1.Labelu   Moje kanÃ¡lyúWCS.Row3.Labelu   Moje seriÃ¡lyr   úWCS.MyTV.Background.CustomúWCS.MyTV.Background.ReadyúWCS.MyTV.DeleteSeriesConfirmúWCS.MyTV.DeleteConfirmé(#  r@   T©Ú	set_focusF)ÚanimateúWCS.AIChat.VisibleÚappletvr)   r   é,#  )Ú_reset_staterC   r.   r#   Ú	enumerater-   Úget_all_channelsÚidrO   Ú
getControlÚresetÚ_setup_background_propertiesÚ_bg_modeÚ	BG_STATICÚ _is_background_processing_neededÚBG_COLLAGE_POSTERSÚ_update_backgroundÚ_update_program_queuesÚrefresh_channels_viewÚ_show_nav_on_initÚ_show_nav_sidebarÚgetattrÚ
setFocusIdÚ_create_new_channelr&   Ú_show_series_grid_dialog)r2   ÚindexÚchannelÚprogram_lists       r8   ÚonInitzMyTVDialog.onInit]   s¡  € Ø×ÒÑÔÐØ×ÒÐ+Ð-JÑKÔKÐKØ×ÒÐ,¨mÑ<Ô<Ð<ð 	×ÒÐ*Ð,@ÑAÔAÐAØ×ÒÐ,Ð.AÑBÔBÐBØ×ÒÐ0Ð2EÑFÔFÐFØ×ÒÐ,Ð.>Ñ?Ô?Ð?Ø×ÒÐ3Ð5MÑNÔNÐNð 	×ÒÐ)¨>Ñ:Ô:Ð:Ø×ÒÐ)¨?Ñ;Ô;Ð;ð &'ˆÔ"ØÔ#ð 	Ý"+¨DÔ,@×,QÒ,QÑ,SÔ,SÑ"TÔ"Tð ð ‘��wØ”: Ô!9Ò9Ð9Ø16�DÔ.Ø�Eð :ð
 	×ÒÐ7Ñ8Ô8Ð8Ø×ÒÐ6Ñ7Ô7Ð7ð 	×ÒÐ9Ñ:Ô:Ð:Ø×ÒÐ3Ñ4Ô4Ð4ð	ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð Ð øð	ØˆDøøøð 	×)Ò)Ñ+Ô+Ð+ð Œ=˜DœNÒ*Ð*°4×3XÒ3XÑ3ZÔ3ZÐ*Ø×ÒÐ8¸&ÑAÔAÐAð Œ=˜DÔ3Ò3Ð3Ø×#Ò#Ñ%Ô%Ð%ð Œ=˜DœNÒ*Ð*¨t×/TÒ/TÑ/VÔ/VÐ*Ø×#Ò#Ñ%Ô%Ð%ð 	×#Ò#Ñ%Ô%Ð%ð 	×"Ò"¨TÐ"Ñ2Ô2Ð2ð Œ= ¤°Ô1HÐ IÐIÐIØ×#Ò#Ñ%Ô%Ð%ð Ô!ð 	5Ø×"Ò"¨5Ð"Ñ1Ô1Ð1Ð1à×ÒÐ3Ñ4Ô4Ð4ð �  o°rÑ:Ô:Ð:Ð:Ø�OŠO˜DÑ!Ô!Ð!ð Ô#×4Ò4Ñ6Ô6ð 	,Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&ØÔð 	,Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+ð	,ð 	,s   Æ)F- Æ-F1Fc                 óÌ  — | j                              ¦   «         }|                      d¦  «        }|                     ¦   «          |D ]s}t	          j        |j        ¬¦  «        }|j        r|j        nd}|                     d|i¦  «         | 	                    d|j
        ¦  «         |                     |¦  «         Œtt	          j        d¬¦  «        }|                     ddi¦  «         | 	                    dd	¦  «         |                     |¦  «         | j        |                     ¦   «         k    rd
| _        |                     ¦   «         d
k    r„|                     | j        ¦  «         | j        r;|                     ¦   «         | j        k    rt#          j        d| j        › d�d¦  «         |                      ¦   «          |                      ¦   «          |                      ¦   «          dS )z'Populate the bottom list with channels.éÐ  ©ÚlabelúSspecial://home/addons/plugin.video.milionar/resources/media/placeholder_tv_card.jpgÚposterÚ
channel_idr   úIspecial://home/addons/plugin.video.milionar/resources/media/plus_card.pngÚis_create_buttonr@   r   zSetFocus(2000,z
,absolute)TN)r-   re   rg   rh   ÚxbmcguiÚListItemÚnameÚiconÚsetArtrC   rf   ÚaddItemr.   ÚsizeÚ
selectItemr#   ÚgetSelectedPositionÚxbmcÚexecutebuiltinÚupdate_editor_viewÚrefresh_program_viewÚ_populate_my_series_list)r2   r^   ÚchannelsÚlist_controlÚchÚitemr‡   Úcreate_items           r8   rp   z MyTVDialog.refresh_channels_view±   sï  € àÔ'×8Ò8Ñ:Ô:ˆØ—’ tÑ,Ô,ˆØ×ÒÑÔÐàð 	'ð 	'ˆBÝÔ#¨"¬'Ð2Ñ2Ô2ˆDà œgð  A�2”7�7ð  ,AˆDØ�KŠK˜ 4Ð(Ñ)Ô)Ð)Ø×Ò˜\¨2¬5Ñ1Ô1Ð1Ø× Ò  Ñ&Ô&Ð&Ð&õ Ô&¨RÐ0Ñ0Ô0ˆØ×Ò˜HÐ&qÐrÑsÔsÐsØ×ÒÐ 2°FÑ;Ô;Ð;Ø×Ò˜[Ñ)Ô)Ð)ð Ô%¨×):Ò):Ñ)<Ô)<Ò<Ð<Ø)*ˆDÔ&à×ÒÑÔ Ò"Ð"Ø×#Ò# DÔ$>Ñ?Ô?Ð?ØÔ'ð c¨L×,LÒ,LÑ,NÔ,NÐRVÔRlÒ,lÐ,låÔ#Ð$[°TÔ5OÐ$[Ð$[Ð$[Ð]aÑbÔbÐbØ×#Ò#Ñ%Ô%Ð%Ø×%Ò%Ñ'Ô'Ð'ð 	×%Ò%Ñ'Ô'Ð'Ð'Ð'r9   c           	      ó”  — |                       d¦  «        }|                     ¦   «         }|dk     rdS |                     |¦  «        }|                     d¦  «        dk    r)|                       d¦  «                             ¦   «          dS |                     d¦  «        }| j                             |¦  «        }|                       d¦  «        }|                     ¦   «          |�rd|j        D ]í}t          j	        | 
                    d¦  «        ¬	¦  «        }| 
                    d
¦  «        p| 
                    d¦  «        }	|	r|	                     d¦  «        sd|	› �}	n|	sd}	|                     d|	i¦  «         |                     dt          | 
                    d¦  «        ¦  «        ¦  «         |                     d|¦  «         |                     |¦  «         Œît          j	        d¬	¦  «        }
|
                     ddi¦  «         |
                     dd¦  «         |
                     d|¦  «         |                     |
¦  «         dS dS )z+Update grid 3000 based on selected channel.r|   r   Nrƒ   r@   éŒ#  r�   r†   r}   Úposter_pathr€   Úhttpúhttps://image.tmdb.org/t/p/w500r   Ú	series_idrf   u   PÅ™idat seriÃ¡lr‚   Úis_add_button)rg   rŒ   ÚgetListItemÚgetPropertyrh   r-   Úget_channel_by_idÚseries_listr„   r…   ÚgetÚ
startswithrˆ   rC   Ústrr‰   )r2   r“   Úidxr•   r�   rx   Úgrid_controlÚseriesÚs_itemr€   Úadd_items              r8   r�   zMyTVDialog.update_editor_viewÕ   sS  € à—’ tÑ,Ô,ˆØ×.Ò.Ñ0Ô0ˆØ�Š7ˆ7ØˆFà×'Ò'¨Ñ,Ô,ˆð ×ÒÐ.Ñ/Ô/°6Ò9Ð9Ø�OŠO˜DÑ!Ô!×'Ò'Ñ)Ô)Ð)àˆFà×%Ò% lÑ3Ô3ˆ
ØÔ&×8Ò8¸ÑDÔDˆà—’ tÑ,Ô,ˆØ×ÒÑÔÐàñ 	+à!Ô-ð -ð -�Ý Ô)°·
²
¸6Ñ0BÔ0BÐCÑCÔC�ØŸš MÑ2Ô2ÐJ°f·j²jÀÑ6JÔ6J�Øð t &×"3Ò"3°FÑ";Ô";ð tØHÀÐHÐH�V�VØð tØs�Và—’˜x¨Ð0Ñ1Ô1Ð1Ø×"Ò" ;µ°F·J²J¸tÑ4DÔ4DÑ0EÔ0EÑFÔFÐFØ×"Ò" <°Ñ<Ô<Ð<Ø×$Ò$ VÑ,Ô,Ð,Ð,õ Ô'Ð.?Ð@Ñ@Ô@ˆHØ�OŠO˜XÐ'rÐsÑtÔtÐtØ× Ò  °&Ñ9Ô9Ð9Ø× Ò  ¨zÑ:Ô:Ð:Ø× Ò  Ñ*Ô*Ð*Ð*Ð*ð)	+ð 	+r9   c                 óx  — | j                              ¦   «         }|D �]œ}|j        }t          |d¦  «        r|j        ng }|sŒ&d|› �}| j                             |¦  «        }|sŒHg }d}|D ]Ù}	|	                     di ¦  «        }
|
                     dd¦  «        }t          |
                     dd¦  «        pd¦  «        }t          |
                     dd¦  «        pd¦  «        }|r|s|                     |	¦  «         Œ’t          j
        ||¦  «        \  }}||k    p||k    o||k    }|r|d	z  }ŒÄ|                     |	¦  «         ŒÚ|dk    rS| j                             ||d
¬¦  «         t          j        d|› d|› dt          |¦  «        › d�t          j        ¦  «         t          j        ||| j        ¦  «         �ŒždS )aL  Queue-based program update: remove watched episodes, keep rest, append new.
        
        For each channel with cached program:
        1. Remove episodes where progress has advanced past them (watched)
        2. Keep remaining episodes in their current order
        3. If count < upcoming_count, mark for async append
        r¡   Úprogram_list_r   Ú
propertiesÚtmdb_idr   ÚseasonÚepisoder   é€Q ©Úttl_secondsz[MyTV] Queue update channel z
: removed z
 watched, z
 remainingN)r-   re   rf   Úhasattrr¡   r/   r¢   ÚintÚappendr   Úget_progressÚsetr�   ÚlogÚlenÚLOGINFOÚsave_progress_fingerprint)r2   r’   rx   r�   r¡   Ú	cache_keyÚcached_itemsÚ	remainingÚremoved_countÚ	item_dataÚpropsr­   Ú	ep_seasonÚ
ep_episodeÚprog_seasonÚprog_episodeÚ
is_watcheds                    r8   ro   z!MyTVDialog._update_program_queues   s4  € ð Ô'×8Ò8Ñ:Ô:ˆàð .	\ñ .	\ˆGØ œˆJÝ18¸À-Ñ1PÔ1PÐX˜'Ô-Ð-ÐVXˆKØð Øà4¨
Ð4Ð4ˆIØœ;Ÿ?š?¨9Ñ5Ô5ˆLØð Øð ˆIØˆMØ)ð 0ð 0�	Ø!Ÿš l°BÑ7Ô7�ØŸ)š) I¨rÑ2Ô2�Ý §	¢	¨(°AÑ 6Ô 6Ð ;¸!Ñ<Ô<�	Ý  §¢¨9°aÑ!8Ô!8Ð!=¸AÑ>Ô>�
àð  ið Ø×$Ò$ YÑ/Ô/Ð/Øõ -<Ô,HÈÐU\Ñ,]Ô,]Ñ)�˜\ð *¨IÒ5ð WØ)¨YÒ6ÐU¸<È:Ò;Uð ð ð 0Ø! QÑ&�M�Mà×$Ò$ YÑ/Ô/Ð/Ð/à˜qÒ Ð à”—’ 	¨9À)�ÑLÔLÐLÝ”ð2°:ð 2ð 2Èð 2ð 2Ý˜9‘~”~ð2ð 2ð 2å”Lñô ð õ Ô5°jÀ+ÈtÌ{Ñ[Ô[Ð[Ñ[ð].	\ð .	\r9   c           	      óÂ  — ddl }t          | d¦  «        sd| _        t          | d¦  «        sd| _        | xj        dz  c_        | j        }|                      d¦  «        }|                     ¦   «         }|dk     rdS |                     |¦  «        }|                     d¦  «        }|sdS || _        |  	                    |¦  «         |  
                    |¦  «        }|�sX|�rUt          j        d|› d	�t          j        ¦  «         |                      |¦  «         |                      |¦  «         |                      ¦   «          	 | j                             d
¦  «        }	|	rt'          |	¦  «        nd}
n# t(          $ r d}
Y nw xY wd|› �}| j                             |¦  «        }|rt/          |¦  «        nd}||
k     ryt          j        d|› d|
› d|
|z
  › d�t          j        ¦  «         |                     d| j        |||
|z
  f¬¦  «        | _        d| j        _        | j                             ¦   «          dS |r>d|› �}| j                             |¦  «         d|› �}| j                             |¦  «         | j        r| j                             ¦   «          |                     d| j        |||f¬¦  «        | _        d| j        _        | j                             ¦   «          dS )zñDebounced trigger - schedules async load after 300ms delay.
        
        Args:
            shuffle: If True, generate new shuffled program order.
                     If False, use cached order (no re-shuffle on channel switch).
        r   NÚ_program_load_tokenÚ_program_load_timerr   r|   r�   z.[MyTV] Using cached program order for channel z (no shuffle)Úmytv_upcoming_counté   r«   z[MyTV] Cache has ú/z items, appending z morerR   )r5   TÚprogram_reorder_)rA   r³   rÈ   rÉ   rg   rŒ   rž   rŸ   Ú_current_loaded_channel_idÚ_update_channel_statsÚ_instant_load_from_cacher�   r¸   rº   Ú_apply_program_reorderrn   Ú_update_hero_zoner,   Ú
getSettingr´   Ú	Exceptionr/   r¢   r¹   rD   Ú_async_program_appendrF   rG   ÚdeleterB   Ú_async_program_load)r2   ÚshufflerA   Úcurrent_tokenr“   r¥   r•   r�   Úcache_loadedÚupcoming_count_valÚupcoming_countr¼   r½   Úcurrent_countÚreorder_keys                  r8   r�   zMyTVDialog.refresh_program_view:  s‡  € ð 	ÐÐÐõ �tÐ2Ñ3Ô3ð 	)Ø'(ˆDÔ$Ý�tÐ2Ñ3Ô3ð 	,Ø'+ˆDÔ$ð 	Ð Ô  AÑ%Ð Ô ØÔ0ˆð —’ tÑ,Ô,ˆØ×.Ò.Ñ0Ô0ˆØ�Š7ˆ7ØˆFà×'Ò'¨Ñ,Ô,ˆØ×%Ò% lÑ3Ô3ˆ
Øð 	ØˆFð +5ˆÔ'ð 	×"Ò" :Ñ.Ô.Ð.ð ×4Ò4°ZÑ@Ô@ˆð ñ !	˜<ñ !	ÝŒHÐ_ÀjÐ_Ð_Ð_ÕaeÔamÑnÔnÐnà×'Ò'¨
Ñ3Ô3Ð3à×#Ò# JÑ/Ô/Ð/Ø×"Ò"Ñ$Ô$Ð$ð$Ø%)¤Z×%:Ò%:Ð;PÑ%QÔ%QÐ"Ø<NÐ!V¥Ð%7Ñ!8Ô!8Ð!8ÐTV��øÝð $ð $ð $Ø!#���ð$øøøð 5¨
Ð4Ð4ˆIØœ;Ÿ?š?¨9Ñ5Ô5ˆLØ1=ÐD�C Ñ-Ô-Ð-À1ˆMà˜~Ò-Ð-å”ðG¨ð Gð G¸ð Gð GØ!/°-Ñ!?ðGð Gð Gå”Lñô ð ð
 ,5¯?ª?ØØÔ.Ø'¨°^ÀmÑ5SÐTð ,;ñ ,ô ,�Ô(ð
 37�Ô(Ô/ØÔ(×.Ò.Ñ0Ô0Ð0ØˆFð ð 	,Ø4¨
Ð4Ð4ˆIØŒK×Ò˜yÑ)Ô)Ð)à9¨ZÐ9Ð9ˆKØŒK×Ò˜{Ñ+Ô+Ð+ð Ô#ð 	.ØÔ$×+Ò+Ñ-Ô-Ð-ð $-§?¢?ØØÔ$Ø ¨WÐ5ð $3ñ $
ô $
ˆÔ ð
 +/ˆÔ Ô'ØÔ ×&Ò&Ñ(Ô(Ð(Ð(Ð(s   Å-E0 Å0E?Å>E?c                 ó>  — | j                              |¦  «        }|s|                      d¦  «         dS | j                              ¦   «         }t	          |¦  «        }t          |d¦  «        r|j        ng }t          |d¦  «        r|j        ng }|r|n|}t	          |¦  «        }t          | dd¦  «        }	|	dk    r‚|› d|d	k    rd
n	|dk     rdnd› �}
|› d|d	k    rdn	|dk     rdnd› �}t          d„ |D ¦   «         ¦  «        }|dk    r|dz  }|dz  }|r|› d|› d�n|› d�}n	|r|› d�nd}|
› d|› �}|r|d|› �z  }n5|› d|d	k    rdn	|dk     rdnd› �}
|› d|d	k    rdn	|dk     rdnd› �}|
› d|› �}|  
                    d|¦  «         |  
                    dd |j        › �¦  «         t          ¦   «         }|D ]Z}t          |d¦  «        r|j        ng }|D ]<}t          |                     d!d¦  «        ¦  «        }|r|                     |¦  «         Œ=Œ[t	          |¦  «        }|	dk    r/|› d|d	k    rd
n	|dk     rdnd› �}|› d|d	k    rdn	|dk     rdnd› �}n.|› d|d	k    rdn	|dk     rdnd› �}|› d|d	k    rdn	|dk     rdnd› �}|  
                    d"|› d|› �¦  «         dS )#z"Update channel statistics display.zWCS.Channel.StatsNr¡   Ú
media_listÚ_channel_typeÚtvÚcinemaú r   Úkinor   ÚkinaÚkinÚfilmÚfilmyu   filmÅ¯c              3   ól   K  — | ]/}|                      d ¦  «        ¯|                      d d¦  «        V — Œ0dS )Úruntimer   N©r¢   )Ú.0Úms     r8   ú	<genexpr>z3MyTVDialog._update_channel_stats.<locals>.<genexpr>¶  sA   è è € ÐWÐW¸ÀaÇeÂeÈIÑFVÔFVÐW §¢ i°Ñ 3Ô 3ÐWÐWÐWÐWÐWÐWr9   é<   zh ÚminÚhú minr   u     â€¢  u   kanÃ¡lu   kanÃ¡lyu   kanÃ¡lÅ¯u   seriÃ¡lu   seriÃ¡lyu	   seriÃ¡lÅ¯rT   zMyTV - rf   zWCS.Channel.GlobalStats)r-   r    rO   re   r¹   r³   r¡   rà   rs   ÚsumrC   r†   r·   r¤   r¢   Úadd)r2   r�   rx   Úall_channelsÚchannel_countr¡   rà   ÚitemsÚ
item_countÚchannel_typeÚchannel_labelÚ
item_labelÚtotal_runtimeÚhoursÚminsÚruntime_strÚstatsÚtotal_seriesr”   Ú	ch_seriesÚsÚsidÚtotal_series_countÚglobal_ch_labelÚglobal_item_labels                            r8   rÏ   z MyTVDialog._update_channel_statsš  s�  € àÔ&×8Ò8¸ÑDÔDˆØð 	Ø×ÒÐ2Ñ3Ô3Ð3ØˆFð Ô+×<Ò<Ñ>Ô>ˆÝ˜LÑ)Ô)ˆõ .5°W¸mÑ-LÔ-LÐT�gÔ)Ð)ÐRTˆÝ+2°7¸LÑ+IÔ+IÐQ�WÔ'Ð'Èrˆ
ð )Ð9�
�
¨kˆÝ˜‘Z”Zˆ
õ ˜t _°dÑ;Ô;ˆà˜8Ò#Ð#à,ÐyÐy¸È!Ò9KÐ9K¨v¨vÐ[hÐklÒ[lÐ[lÐQWÐQWÐrwÐyÐyˆMØ&ÐqÐq°:À²?°?¨¨ÐS]Ð`aÒSaÐSaÈÈÐgoÐqÐqˆJõ  ÐWÐW¸UÐWÑWÔWÑWÔWˆMØ˜rÒ!Ð!Ø%¨Ñ+�Ø$ rÑ)�Ø7;ÐL Ð3Ð3¨$Ð3Ð3Ð3Ð3ÀEÀÀÀ��à8EÐM Ð4Ð4Ð4Ð4È2�à$Ð9Ð9¨ZÐ9Ð9ˆEØð 1ØÐ0 ;Ð0Ð0Ñ0�øð  -ð  Dð  D¸=ÈAÒ;MÐ;M¨x¨xÐ`mÐpqÒ`qÐ`qÐS\ÐS\ð  xBð  Dð  DˆMØ&ÐzÐz°jÀA²o°o¨¨ÐYcÐfgÒYgÐYgÈ:È:ÐmxÐzÐzˆJØ$Ð9Ð9¨ZÐ9Ð9ˆEà×ÒÐ,¨eÑ4Ô4Ð4ð 	×ÒÐ+Ð-E°w´|Ð-EÐ-EÑFÔFÐFõ ‘u”uˆØð 	*ð 	*ˆBÝ*1°"°mÑ*DÔ*DÐL˜œ˜È"ˆIØð *ð *�Ý˜!Ÿ%š%  b™/œ/Ñ*Ô*�Øð *Ø ×$Ò$ SÑ)Ô)Ð)øð*õ ! Ñ.Ô.Ðà˜8Ò#Ð#Ø!.Ð{Ð{¸=ÈAÒ;MÐ;M°°Ð]jÐmnÒ]nÐ]nÐSYÐSYÐtyÐ{Ð{ˆOØ#5ð  !Qð  !QÐBTÐXYÒBYÐBY¸¸Ðj|ð  @Aò  kAð  kAÐ_fÐ_fð  GOð  !Qð  !QÐÐà!.ð  Fð  F¸]ÈaÒ=OÐ=O°°ÐboÐrsÒbsÐbsÐU^ÐU^ð  zDð  Fð  FˆOØ#5ð  !Zð  !ZÐEWÐ[\ÒE\ÐE\¸	¸	ð  qCð  FGò  qGð  qGÐblÐblð  MXð  !Zð  !ZÐà×ÒÐ2°Ð4bÐ4bÐO`Ð4bÐ4bÑcÔcÐcÐcÐcr9   c                 óÜ	  — 	 |                       d¦  «        }|                     ¦   «         dk    r|                      ¦   «          dS |                     d¦  «        }|                     d¦  «        p|                     ¦   «         pd}|                      d|¦  «         |                      d|                     d¦  «        pd¦  «         |                      d	|                     d
¦  «        pd¦  «         |                     d¦  «        pd}|rƒ|                     d¦  «        rnd|v rj	 |dd…          	                    d¦  «        }t          |d         ¦  «        }t          |d         ¦  «        }d|› d|› �}n# t          t          f$ r |}Y nw xY w|}|                      d|¦  «         |                      d|                     d¦  «        pd¦  «         |                     d¦  «        pd}	t          |	¦  «        dk    r|	dd…                              ¦   «         dz   }	|                      d|	¦  «         g }|                     d¦  «        }
|
r|                     |
¦  «         |                     d¦  «        }|rN|dk    rH|                     dd¦  «                             ¦   «         }|r|dk    r|                     |› d�¦  «         |                     d¦  «        }|r|dk    r|                     |¦  «         |                     d¦  «        }|r$|dk    r|dk    r|                     |› d �¦  «         |                      d!d"                     |¦  «        ¦  «         |                       d#¦  «        }|                     ¦   «         }|r|                     d$¦  «        nd}|                     d%¦  «        pd}|rÀ|r¾	 dd&lm}  |j        ||¦  «        }|r9|d'         d(k    r-|                      d)d*¦  «         |                      d+d,¦  «         n-|                      d)d-¦  «         |                      d+¦  «         dS dS # t0          $ r/ |                      d)d-¦  «         |                      d+¦  «         Y dS w xY w|                      d)d-¦  «         |                      d+¦  «         dS # t0          $ rA}t3          j        d.|› �t2          j        ¦  «         |                      ¦   «          Y d}~dS d}~ww xY w)/z@Update hero zone properties from the first item in program list.r\   r   NÚseries_namer   zWCS.MyTV.Hero.SeriesNamezWCS.MyTV.Hero.SeriesLogoÚseries_logozWCS.MyTV.Hero.FanartÚfanartÚep_codeÚSÚEr   õ   SezÃ³na ú	 Epizoda zWCS.MyTV.Hero.EpCodezWCS.MyTV.Hero.EpTitleÚepisode_titleÚploti,  i*  z..zWCS.MyTV.Hero.PlotÚgenrerë   Ú0ró   ÚyearÚratingz0.0ú/10zWCS.MyTV.Hero.MetaLinez  |  r|   r�   r­   r   Úpositioné
   rU   õ   PokraÄ�ovatzWCS.MyTV.Hero.HasResumer@   rV   z![MyTV] Error updating hero zone: )rg   rŠ   Ú_clear_hero_zonerž   rŸ   ÚgetLabelrC   ÚgetArtr£   Úsplitr´   Ú
ValueErrorÚ
IndexErrorr¹   Úrstriprµ   ÚreplaceÚstripÚjoinÚgetSelectedItemÚwcs.air   Úget_resume_pointrO   rÔ   r�   r¸   ÚLOGERROR)r2   ry   r•   r
  Úraw_codeÚpartsÚ
season_numÚepisode_numÚ	hero_coder  r  rë   Úruntime_cleanr  r  Úchannel_listÚcurrent_channelr�   r­   r   ÚresumeÚes                         r8   rÒ   zMyTVDialog._update_hero_zoneß  sŽ  € ðK	$ØŸ?š?¨4Ñ0Ô0ˆLØ× Ò Ñ"Ô" aÒ'Ð'Ø×%Ò%Ñ'Ô'Ð'Ø�à×+Ò+¨AÑ.Ô.ˆDØ×*Ò*¨=Ñ9Ô9ÐR¸T¿]º]¹_¼_ÐRÐPRˆKà×ÒÐ7¸ÑEÔEÐEØ×ÒÐ7¸×9IÒ9IÈ-Ñ9XÔ9XÐ9^Ð\^Ñ_Ô_Ð_Ø×ÒÐ3°T·[²[ÀÑ5JÔ5JÐ5PÈbÑQÔQÐQà×'Ò'¨	Ñ2Ô2Ð8°bˆHØð 	%˜H×/Ò/°Ñ4Ô4ð 	%¸À¸¸ð)Ø$ Q R RœL×.Ò.¨sÑ3Ô3�EÝ!$ U¨1¤X¡¤�JÝ"% e¨A¤h¡-¤-�KØ Q¨zÐ QÐ QÀKÐ QÐ Q�I�IøÝ"¥JÐ/ð )ð )ð )Ø (�I�I�Ið)øøøð %�	Ø×ÒÐ3°YÑ?Ô?Ð?Ø×ÒÐ4°d×6FÒ6FÀÑ6WÔ6WÐ6]Ð[]Ñ^Ô^Ð^Ø×#Ò# FÑ+Ô+Ð1¨rˆDÝ�4‰yŒy˜3ŠˆØ˜D˜S˜D”z×(Ò(Ñ*Ô*¨TÑ1�Ø×ÒÐ1°4Ñ8Ô8Ð8ð ˆEØ×$Ò$ WÑ-Ô-ˆEØð $Ø—’˜UÑ#Ô#Ð#Ø×&Ò& yÑ1Ô1ˆGØð 9˜7 cš>˜>à '§¢°¸Ñ ;Ô ;× AÒ AÑ CÔ C�Ø ð 9 ]°cÒ%9Ð%9Ø—L’L MÐ!7Ð!7Ð!7Ñ8Ô8Ð8Ø×#Ò# FÑ+Ô+ˆDØð #˜ š˜Ø—’˜TÑ"Ô"Ð"Ø×%Ò% hÑ/Ô/ˆFØð -˜& Cš-˜-¨F°eªO¨OØ—’ ˜^˜^˜^Ñ,Ô,Ð,à×ÒÐ5°w·|²|ÀEÑ7JÔ7JÑKÔKÐKð  Ÿ?š?¨4Ñ0Ô0ˆLØ*×:Ò:Ñ<Ô<ˆOØFUÐ]˜×4Ò4°\ÑBÔBÐBÐ[]ˆJØ×&Ò& yÑ1Ô1Ð7°RˆGØð >˜gð >ðBØ5Ð5Ð5Ð5Ð5Ð5Ø<˜^Ô<¸ZÈÑQÔQ�FØð F &¨Ô"4°rÒ"9Ð"9Ø×(Ò(Ð)<¸mÑLÔLÐLØ×(Ò(Ð)BÀFÑKÔKÐKÐKà×(Ò(Ð)<Ð>QÑRÔRÐRØ×*Ò*Ð+DÑEÔEÐEÐEÐEð LÐKøõ !ð Bð Bð BØ×$Ò$Ð%8Ð:MÑNÔNÐNØ×&Ò&Ð'@ÑAÔAÐAÐAÐAÐAðBøøøð × Ò Ð!4Ð6IÑJÔJÐJØ×"Ò"Ð#<Ñ=Ô=Ð=Ð=Ð=øåð 	$ð 	$ð 	$ÝŒHÐ<¸Ð<Ð<½d¼mÑLÔLÐLØ×!Ò!Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#øøøøð	$øøøsd   ‚AR  ÁCR  Ä$AE4 Å3R  Å4F
ÆR  Æ	F
Æ
H+R  Î6A=P7 Ð75Q0Ñ,R  Ñ/Q0Ñ0.R  Ò 
S+Ò*6S&Ó&S+c                 ó@   — dD ]}|                       d|› �¦  «         ŒdS )zClear all hero zone properties.)Ú
SeriesNameÚ
SeriesLogoÚFanartÚEpCodeÚEpTitleÚPlotÚMetaLinezWCS.MyTV.Hero.NrN   )r2   Úprops     r8   r  zMyTVDialog._clear_hero_zone.  s=   € ð)ð 	8ð 	8ˆDà×ÒÐ6°Ð6Ð6Ñ7Ô7Ð7Ð7ð	8ð 	8r9   c           	      óX  — 	 |                       d¦  «        }n# t          $ r Y dS w xY w|                     ¦   «          t          ¦   «         }g }| j                             ¦   «         D ]w}t          |d¦  «        sŒ|j        D ]\}t          | 	                    dd¦  «        ¦  «        }|r5||vr1| 
                    |¦  «         |                     ||j        f¦  «         Œ]Œx|D ]ó\  }}| 	                    dd¦  «        }t          j        |¬¦  «        }	| 	                    d¦  «        p| 	                    d	¦  «        }
|
r|
                     d
¦  «        sd|
› �}
n|
sd}
|	                     d	|
i¦  «         |	                     dt          | 	                    d¦  «        ¦  «        ¦  «         |	                     d|¦  «         |                     |	¦  «         Œô|                      dt          t'          |¦  «        ¦  «        ¦  «         |                      ddt'          |¦  «        › �¦  «         dS )zDPopulate My Series list (9060) with unique series from all channels.éd#  Nr¡   rf   r   r†   r}   r™   r€   rš   r›   r   rœ   r�   zWCS.MyTV.MySeriesCountrW   u   Moje seriÃ¡ly  Â·  )rg   rÔ   rh   r·   r-   re   r³   r¡   r¤   r¢   rõ   rµ   rf   r„   r…   r£   rˆ   rC   r‰   r¹   )r2   r¡   Úseen_idsÚ
all_seriesrx   r§   r  r�   r†   r•   r€   s              r8   r‘   z#MyTVDialog._populate_my_series_list4  s\  € ð	ØŸ/š/¨$Ñ/Ô/ˆKˆKøÝð 	ð 	ð 	ØˆFˆFð	øøøð 	×ÒÑÔÐÝ‘5”5ˆØˆ
àÔ+×<Ò<Ñ>Ô>ð 	<ð 	<ˆGÝ˜7 MÑ2Ô2ð ØØ!Ô-ð <ð <�Ý˜&Ÿ*š* T¨2Ñ.Ô.Ñ/Ô/�Øð <˜3 hÐ.Ð.Ø—L’L Ñ%Ô%Ð%Ø×%Ò% v¨w¬zÐ&:Ñ;Ô;Ð;øð	<ð #-ð 	&ð 	&ÑˆF�JØ—:’:˜f bÑ)Ô)ˆDÝÔ#¨$Ð/Ñ/Ô/ˆDà—Z’Z Ñ.Ô.ÐF°&·*²*¸XÑ2FÔ2FˆFØð o˜f×/Ò/°Ñ7Ô7ð oØC¸6ÐCÐC��Øð oØn�à�KŠK˜ 6Ð*Ñ+Ô+Ð+Ø×Ò˜[­#¨f¯jªj¸Ñ.>Ô.>Ñ*?Ô*?Ñ@Ô@Ð@Ø×Ò˜\¨:Ñ6Ô6Ð6Ø×Ò Ñ%Ô%Ð%Ð%à×ÒÐ1µ3µs¸:±´Ñ3GÔ3GÑHÔHÐHØ×ÒÐ)Ð+RÅÀZÁÄÐ+RÐ+RÑSÔSÐSÐSÐSs   ‚ ˜
&¥&c           
      ó¬  — d|› �}| j                              |¦  «        }|sdS 	 |                      d¦  «        }|                     ¦   «          |D ]ã}t	          j        |                     dd¦  «        ¬¦  «        }|                     |                     dd¦  «        ¦  «         |                     di ¦  «                             ¦   «         D ](\  }}|                     |t          |¦  «        ¦  «         Œ)| 
                    |                     d	i ¦  «        ¦  «         |                     |¦  «         Œä	 |                      d
¦  «        }	|	                     ¦   «         }
|
r|
                     d¦  «        nd}|�rddlm} t!          |                     ¦   «         ¦  «        D ]ö}|                     |¦  «        }|                     d¦  «        pd}|rÆ |j        ||¦  «        }|r³|d         dk    r§|d         dk    r›t)          |d         |d         z  d¦  «        }|                     dd¦  «         |                     dt          t+          |dz  ¦  «        ¦  «        ¦  «         |                     dt          t+          |dz  ¦  «        ¦  «        ¦  «         Œ÷n# t,          $ r Y nw xY wt/          j        dt3          |¦  «        › d|› �t.          j        ¦  «         | j        | j        | j        fv r*|                      ¦   «         s|                      dd¦  «         dS # t,          $ r-}t/          j        d|› �t.          j        ¦  «         Y d}~dS d}~ww xY w)z Instantly populate program list from cache (no API calls).
        
        Returns:
            True if cache was loaded, False if no cache available.
        r«   Fr\   r~   r   r}   Úlabel2r¬   Úartr|   r�   r   r   r­   r  r  Útotalç      ð?Ú	is_resumer@   Úresume_percentéd   Úresume_widthé  z[MyTV] Instantly loaded z items from cache for channel rY   Tz![MyTV] Error loading from cache: N) r/   r¢   rg   rh   r„   r…   Ú	setLabel2rø   rC   r¤   rˆ   r‰   r&  rŸ   r'  r   ÚrangerŠ   rž   r(  rñ   r´   rÔ   r�   r¸   r¹   rº   rj   Ú	BG_FANARTÚBG_STILLrl   Ú
LOGWARNING)r2   r�   r¼   r½   ry   rÀ   r•   ÚkeyÚvalueÚch_listÚch_itemÚch_idr   r¥   ÚitÚtmdbr2  Úpctr3  s                      r8   rÐ   z#MyTVDialog._instant_load_from_cacheZ  s„  € ð 1 JÐ0Ð0ˆ	à”{—’ yÑ1Ô1ˆØð 	Ø�5ð0	ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð à)ð +ð +�	ÝÔ'¨i¯mªm¸GÀRÑ.HÔ.HÐIÑIÔI�Ø—’˜yŸ}š}¨X°rÑ:Ô:Ñ;Ô;Ð;ð #,§-¢-°¸bÑ"AÔ"A×"GÒ"GÑ"IÔ"Ið 6ð 6‘J�C˜Ø×$Ò$ S­#¨e©*¬*Ñ5Ô5Ð5Ð5ð —’˜IŸMšM¨%°Ñ4Ô4Ñ5Ô5Ð5à×$Ò$ TÑ*Ô*Ð*Ð*ðØŸ/š/¨$Ñ/Ô/�Ø!×1Ò1Ñ3Ô3�Ø=DÐL˜×+Ò+¨LÑ9Ô9Ð9È"�Øñ TØ5Ð5Ð5Ð5Ð5Ð5Ý$ \×%6Ò%6Ñ%8Ô%8Ñ9Ô9ð 	Tð 	T˜Ø)×5Ò5°cÑ:Ô:˜Ø!Ÿ~š~¨iÑ8Ô8Ð>¸B˜Øð TØ%D ^Ô%DÀUÈDÑ%QÔ%Q˜FØ%ð T¨&°Ô*<¸rÒ*AÐ*AÀfÈWÄoÐXYÒFYÐFYÝ&)¨&°Ô*<¸vÀg¼Ñ*NÐPSÑ&TÔ&T Ø "§¢¨{¸FÑ CÔ CÐ CØ "§¢Ð/?ÅÅSÈÈsÉÁ^Ä^ÑATÔATÑ UÔ UÐ UØ "§¢¨~½sÅ3ÀsÈSÁyÁ>Ä>Ñ?RÔ?RÑ SÔ SÐ SøøøÝð ð ð Ø�ðøøøõ ŒHÐmµ°LÑ0AÔ0AÐmÐmÐakÐmÐmÕosÔo{Ñ|Ô|Ð|ð Œ} ¤°´Ð ?Ð?Ð?È×HmÒHmÑHoÔHoÐ?Ø× Ò Ð!<¸fÑEÔEÐEð �4øÝð 	ð 	ð 	ÝŒHÐ<¸Ð<Ð<½d¼oÑNÔNÐNØ�5�5�5�5�5øøøøð	øøøs>   ¥DL Ä5E#J ÊL Ê
J&Ê#L Ê%J&Ê&A4L Ì
MÌ&"MÍMTc                 ó8  — ddl }ddlm} || j        k    rdS | j                             |¦  «        }|r|j        s|                      ¦   «          dS 	 | j         	                    d¦  «        }|rt          |¦  «        nd}n	#  d}Y nxY w| j         	                    d¦  «        pd}	d\  }
}d	|	v rH	 |	                     d	¦  «        }t          |d         ¦  «        t          |d
         ¦  «        }}
n##  Y nxY w	 t          |	¦  «        }|x}
}n#  Y nxY wt          |j        ¦  «        }|r|                     |¦  «         i }d}d}|dz  }d}	 |                      d¦  «        }|                     ¦   «          n#  Y dS xY w||k     �rÙ|�rÖ||k     �rÏ|d
z  }|| j        k    rdS ||t!          |¦  «        z           }|d
z  }t#          |                     d¦  «        ¦  «        }|                     d¦  «        }||vrt'          j        ||¦  «        \  }}||f||<   |                     |
|¦  «        }t-          |¦  «        D �]}||k    r �n|| j        k    r dS ||         \  }}d|› d|› d|d
z   › �}| j                             |¦  «        }|s<|                     |||| j        ¦  «        }|r| j                             ||d¬¦  «         |r„|| j        k    r dS |                      |||¦  «         |d
z  }|d         |d         f||<   |d
k    r?| j        | j        | j        fv r*|                      ¦   «         s|                      dd¦  «         �Œ ||k     r	|r||k     �°Ï|dk    r@| j        | j         | j!        fv r|  "                    |¦  «         n|  "                    |¦  «         |  #                    |¦  «         t'          j$        ||j        | j        ¦  «         |  %                    |¦  «         |  &                    ¦   «          | j         '                    ¦   «          dS )z;Background thread - loads program data without blocking UI.r   N©Ú
TMDbClientrÊ   rË   Úmytv_block_sizeÚ2©r   r   ú-r   r   r\   rf   r†   Úepisode_Ú_é€:	 r±   r®   r¯   rY   r@   )(ÚrandomÚwcs.metadatarZ  rÈ   r-   r    r¡   Ú_apply_empty_programr,   rÓ   r´   r  ÚlistrØ   rg   rh   r¹   r¤   r¢   r   r¶   ÚrandintrL  r/   Úget_next_episode_from_tmdbr·   Ú_add_single_program_itemrj   rM  rN  rl   rC   ÚBG_COLLAGE_STILLSÚBG_COLLAGE_MIXrn   Ú_save_program_list_cacher»   rÑ   rÒ   Úflush) r2   Útokenr�   rØ   rb  rZ  rx   rÛ   rÜ   Úblock_size_settingÚ	min_blockÚ	max_blockr+  ÚvalÚseries_candidatesÚsimulated_progressÚitems_countÚcandidate_idxÚ	max_loopsÚloopsry   r§   rœ   r
  Úlast_seasonÚlast_episodeÚ
block_sizer`  Úcurr_sÚcurr_er¼   Ú	next_metas                                    r8   r×   zMyTVDialog._async_program_load˜  s*  € àˆˆˆØ+Ð+Ð+Ð+Ð+Ð+ð �DÔ,Ò,Ð,ØˆFàÔ&×8Ò8¸ÑDÔDˆØð 	˜gÔ1ð 	à×%Ò%Ñ'Ô'Ð'ØˆFð	 Ø!%¤×!6Ò!6Ð7LÑ!MÔ!MÐØ8JÐR�SÐ!3Ñ4Ô4Ð4ÐPRˆNˆNøð	 ØˆNˆNˆNøøøà!œZ×2Ò2Ð3DÑEÔEÐLÈÐð  $Ñˆ	�9ØÐ$Ð$Ð$ðØ*×0Ò0°Ñ5Ô5�Ý'*¨5°¬8¡}¤}µc¸%À¼(±m´m˜9�	�	øðØ�øøøðÝÐ,Ñ-Ô-�Ø(+Ð+�	˜I˜IøðØ�øøøõ ! Ô!4Ñ5Ô5ÐØð 	.Ø�NŠNÐ,Ñ-Ô-Ð-ð  ÐØˆØˆØ" QÑ&ˆ	Øˆð	ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð Ð øð	ØˆFˆFøøøà˜NÒ*Ñ*Ð/@Ñ*ÀUÈYÒEVÑEVØ�Q‰JˆEð ˜Ô0Ò0Ð0Ø�à& }µsÐ;LÑ7MÔ7MÑ'MÔNˆFØ˜QÑˆMå˜FŸJšJ tÑ,Ô,Ñ-Ô-ˆIØ Ÿ*š* VÑ,Ô,ˆKð Ð 2Ð2Ð2Ý,;Ô,HÈÐU^Ñ,_Ô,_Ñ)�˜\Ø1<¸lÐ0KÐ" 9Ñ-àŸš¨	°9Ñ=Ô=ˆJå˜:Ñ&Ô&ð #ñ #�Ø .Ò0Ð0Ø‘Eð ˜DÔ4Ò4Ð4Ø�F�Fà!3°IÔ!>‘�˜ð I yÐHÐH°6ÐHÐH¸FÀQ¹JÐHÐH�	Ø œKŸOšO¨IÑ6Ô6�	Ø ð Yà *× EÒ EÀiÐQWÐY_ÐaeÔakÑ lÔ l�IØ ð YàœŸš¨	°9È-˜ÑXÔXÐXàð à Ô 8Ò8Ð8Ø˜˜ð ×1Ò1°)¸[È)ÑTÔTÐTØ 1Ñ$�KØ5>¸xÔ5HÈ)ÐT]ÔJ^Ð4_Ð& yÑ1ð # aÒ'Ð'¨D¬M¸d¼nÈdÌmÐ=\Ð,\Ð,\Ðei÷  fKò  fKñ  fMô  fMÐ,\Ø×(Ò(Ð)DÀfÑMÔMÐMùàðo ˜NÒ*Ð*Ð/@Ð*ÀUÈYÒEVÑEVðt ˜Š?ˆ?àŒ} Ô!7¸Ô9LÐ MÐMÐMØ×'Ò'¨
Ñ3Ô3Ð3Ð3ð ×'Ò'¨
Ñ3Ô3Ð3ð 	×%Ò% jÑ1Ô1Ð1õ 	Ô1°*¸gÔ>QÐSWÔS^Ñ_Ô_Ð_ð 	×#Ò# JÑ/Ô/Ð/ð 	×ÒÑ Ô Ð ð 	Œ×ÒÑÔÐÐÐs0   Á-B  Â BÂ/?C/ Ã/C3Ã7D ÄDÅ)E5 Å5E:c                 ó.	  — ddl }ddlm} || j        k    rdS | j                             |¦  «        }|r|j        sdS d|› �}| j                             |¦  «        pg }t          ¦   «         }	i }
|D ]Õ}|                     di ¦  «        }|                     dd¦  «        }|                     dd¦  «        }t          |                     d	d¦  «        pd¦  «        }t          |                     d
d¦  «        pd¦  «        }|r|r|	                     |› d|› �¦  «         |r'|r%|
                     |d¦  «        }||f|k    r||f|
|<   ŒÖ| j                             d¦  «        pd}d\  }}d|v rQ	 |                     d¦  «        }t          |d         ¦  «        t          |d         ¦  «        }}n5# t          $ r Y n)w xY w	 t          |¦  «        }|x}}n# t          $ r Y nw xY wt!          |j        ¦  «        }|                     |¦  «         d}d}|dz  }d}i }|D ]L}t%          |                     d¦  «        ¦  «        }||
v r|
|         ||<   Œ4t'          j        ||¦  «        ||<   ŒM||k     �r»|�r¸||k     �r±|dz  }|| j        k    rdS ||t+          |¦  «        z           }|dz  }t%          |                     d¦  «        ¦  «        }|                     d¦  «        } |                     ||¦  «        }!t/          |!¦  «        D �]}"||k    r �n|| j        k    r dS |                     |d¦  «        \  }#}$d|› d|#› d|$dz   › �}%| j                             |%¦  «        }&|&s<|                     ||#|$| j        ¦  «        }&|&r| j         	                    |%|&d¬¦  «         |&r{d|&d	         d›d|&d
         d›�}|› d|› �}'|'|	v r|&d	         |&d
         f||<   ŒÐ|                      |&| |¦  «         |dz  }|	                     |'¦  «         |&d	         |&d
         f||<   �Œ ||k     r	|r||k     �°±|dk    rNt5          j        d|› d|› �t4          j        ¦  «         |                      |¦  «         |                      ¦   «          | j                             ¦   «          dS )aV  Background thread - append new episodes to existing program list.
        
        Used when watched episodes were removed and the list needs filling.
        Respects block size settings and round-robin series selection.
        
        Args:
            token: Cancellation token
            count_needed: How many episodes to add
        r   NrY  r«   r¬   r­   r   r  r®   r¯   r`  )r   r   r[  r\  r]  r^  r   r   rf   r†   )r   r   r_  ra  r±   r  Ú02dr  z[MyTV] Appended z! episodes to program for channel ) rb  rc  rZ  rÈ   r-   r    r¡   r/   r¢   r·   r´   rõ   r,   rÓ   r  rÔ   re  rØ   r¤   r   r¶   r¹   rf  rL  rg  rh  r�   r¸   rº   rk  rÒ   rl  )(r2   rm  r�   Úcount_neededrb  rZ  rx   r¼   r½   Úexisting_keysÚlast_episode_per_seriesrÀ   rÁ   r­   r  r®   r¯   Úprevrn  ro  rp  r+  rq  rr  Úitems_addedru  rv  rw  rs  r§   r  rœ   r
  rz  r`  r{  r|  Úep_cache_keyr}  Úep_keys(                                           r8   rÕ   z MyTVDialog._async_program_append&  sÚ  € ð 	ˆˆˆØ+Ð+Ð+Ð+Ð+Ð+à�DÔ,Ò,Ð,ØˆFàÔ&×8Ò8¸ÑDÔDˆØð 	˜gÔ1ð 	ØˆFð 1 JÐ0Ð0ˆ	Ø”{—’ yÑ1Ô1Ð7°Rˆõ ™œˆà"$ÐØ%ð 	Ið 	IˆIØ—M’M ,°Ñ3Ô3ˆEØ—i’i 	¨2Ñ.Ô.ˆGØ—i’i 	¨2Ñ.Ô.ˆGÝ˜Ÿš 8¨QÑ/Ô/Ð4°1Ñ5Ô5ˆFÝ˜%Ÿ)š) I¨qÑ1Ô1Ð6°QÑ7Ô7ˆGØð :˜7ð :Ø×!Ò! WÐ"8Ð"8¨wÐ"8Ð"8Ñ9Ô9Ð9Øð I˜6ð IØ.×2Ò2°7¸FÑCÔC�Ø˜GÐ$ tÒ+Ð+Ø8>ÀÐ7HÐ+¨GÑ4øð "œZ×2Ò2Ð3DÑEÔEÐLÈÐØ#Ñˆ	�9ØÐ$Ð$Ð$ðØ*×0Ò0°Ñ5Ô5�Ý'*¨5°¬8¡}¤}µc¸%À¼(±m´m˜9�	�	øÝð ð ð Ø�ðøøøðÝÐ,Ñ-Ô-�Ø(+Ð+�	˜I˜IøÝð ð ð Ø�ðøøøõ ! Ô!4Ñ5Ô5ÐØ�ŠÐ(Ñ)Ô)Ð)àˆØˆØ  1Ñ$ˆ	Øˆð  ÐØ'ð 	Xð 	XˆFÝ�f—j’j Ñ&Ô&Ñ'Ô'ˆCØÐ-Ð-Ð-Ø*AÀ#Ô*FÐ" 3Ñ'Ð'å*9Ô*FÀzÐSVÑ*WÔ*WÐ" 3Ñ'Ð'à˜LÒ(Ñ(Ð->Ñ(À5È9ÒCTÑCTØ�Q‰JˆEà˜Ô0Ò0Ð0Ø�à& }µsÐ;LÑ7MÔ7MÑ'MÔNˆFØ˜QÑˆMå˜FŸJšJ tÑ,Ô,Ñ-Ô-ˆIØ Ÿ*š* VÑ,Ô,ˆKàŸš¨	°9Ñ=Ô=ˆJå˜:Ñ&Ô&ð !ñ !�Ø ,Ò.Ð.Ø‘Eà˜DÔ4Ò4Ð4Ø�F�Fà!3×!7Ò!7¸	À6Ñ!JÔ!J‘�˜ð  L¨)ÐKÐK°fÐKÐK¸vÈ¹zÐKÐK�Ø œKŸOšO¨LÑ9Ô9�	Ø ð \Ø *× EÒ EØ! 6¨6°4´:ñ!ô !�Ið !ð \ØœŸš¨°iÈ]˜Ñ[Ô[Ð[àð ØV )¨HÔ"5ÐVÐVÐV¸IÀiÔ<PÐVÐVÐV�GØ )Ð5Ð5¨GÐ5Ð5�Fð  Ð.Ð.Ø9BÀ8Ô9LÈiÐXaÔNbÐ8cÐ*¨9Ñ5Ø à×1Ò1°)¸[È)ÑTÔTÐTØ 1Ñ$�KØ!×%Ò% fÑ-Ô-Ð-Ø5>¸xÔ5HÈ)ÐT]ÔJ^Ð4_Ð& yÑ1Ñ1àð_ ˜LÒ(Ð(Ð->Ð(À5È9ÒCTÑCTðb ˜Š?ˆ?ÝŒHØ] ;Ð]Ð]ÐQ[Ð]Ð]Ý”ñô ð ð
 ×)Ò)¨*Ñ5Ô5Ð5à×"Ò"Ñ$Ô$Ð$àŒ×ÒÑÔÐÐÐs$   Å,?F, Æ,
F9Æ8F9Æ=G Ç
GÇGc           
      ó   — 	 |                       d¦  «        }g }t          |                     ¦   «         ¦  «        D �]	}|                     |¦  «        }|                     ¦   «         |                     ¦   «         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œdœ}|                     |¦  «         �Œd|› �}| j	         
                    ||d¬¦  «         t          j        dt          |¦  «        › d|› �t          j        ¦  «         | j	                             ¦   «          ddlm}  |dh¦  «         dS # t$          $ r-}	t          j        d|	› �t          j        ¦  «         Y d}	~	dS d}	~	ww xY w) z6Save current program list to cache for instant reload.r\   r­   r
  r®   r¯   r  r  r  Ú
plot_shortrë   r  r  r€   r  r  r  Úair_dateÚthumbÚ	clearlogo)rŠ  r  r‹  r€   )r~   rB  r¬   rC  r«   r°   r±   z[MyTV] Saved z) items to program list cache for channel r   )ÚchangedÚwidget_mytv_channelsz([MyTV] Error saving program list cache: N)rg   rL  rŠ   rž   r  Ú	getLabel2rŸ   r  rµ   r/   r·   r�   r¸   r¹   rº   rl  Úwcs.skin.refreshrŒ  rÔ   rO  )
r2   r�   ry   Ú
items_dataÚir•   rÀ   r¼   rŒ  r3  s
             r8   rk  z#MyTVDialog._save_program_list_cache®  sa  € ð-	VØŸ?š?¨4Ñ0Ô0ˆLØˆJå˜<×,Ò,Ñ.Ô.Ñ/Ô/ð -ñ -�Ø#×/Ò/°Ñ2Ô2�à!Ÿ]š]™_œ_Ø"ŸnšnÑ.Ô.ð#Ø! 4×#3Ò#3°IÑ#>Ô#>ð#à% t×'7Ò'7¸Ñ'FÔ'Fð#ð ! $×"2Ò"2°8Ñ"<Ô"<ð#ð " 4×#3Ò#3°IÑ#>Ô#>ð	#ð
 " 4×#3Ò#3°IÑ#>Ô#>ð#ð (¨×)9Ò)9¸/Ñ)JÔ)Jð#ð  × 0Ò 0°Ñ 8Ô 8ð#ð % d×&6Ò&6°|Ñ&DÔ&Dð#ð " 4×#3Ò#3°IÑ#>Ô#>ð#ð ! $×"2Ò"2°8Ñ"<Ô"<ð#ð & t×'7Ò'7¸Ñ'FÔ'Fð#ð ! $×"2Ò"2°8Ñ"<Ô"<ð#ð ! $×"2Ò"2°8Ñ"<Ô"<ð#ð  × 0Ò 0°Ñ 8Ô 8ð#ð   ×!1Ò!1°'Ñ!:Ô!:ð#ð  # D×$4Ò$4°ZÑ$@Ô$@ð!#ð& "&§¢¨WÑ!5Ô!5Ø"&§+¢+¨hÑ"7Ô"7Ø%)§[¢[°Ñ%=Ô%=Ø"&§+¢+¨hÑ"7Ô"7ð	ð ð+ð �	ð8 ×!Ò! )Ñ,Ô,Ð,Ñ,à4¨
Ð4Ð4ˆIàŒK�OŠO˜I z¸yˆOÑIÔIÐIÝŒHÐk¥S¨¡_¤_ÐkÐkÐ_iÐkÐkÕmqÔmyÑzÔzÐzàŒK×ÒÑÔÐØ0Ð0Ð0Ð0Ð0Ð0ØˆGÐ+Ð,Ñ-Ô-Ð-Ð-Ð-øÝð 	Vð 	Vð 	VÝŒHÐCÀÐCÐCÅTÄ_ÑUÔUÐUÐUÐUÐUÐUÐUÐUøøøøð	Vøøøs   ‚KK Ë
K=Ë"K8Ë8K=c           	      óÂ  — 	 |                       d¦  «        }d|d         d›d|d         d›�}|                     dd¦  «        }t          |¦  «        d	k    r|d
d…         dz   n|}t          j        |¬¦  «        }|                     t          |                     dd¦  «        ¦  «        ¦  «         |                     d|¦  «         |                     d|¦  «         |                     dt          |d         ¦  «        ¦  «         |                     dt          |d         ¦  «        ¦  «         |                     d|                     dd¦  «        ¦  «         |                     d|¦  «         |                     d|¦  «         |                     dt          |                     dd¦  «        ¦  «        ¦  «         |                     d|¦  «         |                     d|                     dd¦  «        ¦  «         |                     d|                     dd¦  «        ¦  «         |                     d|                     dd¦  «        ¦  «         |                     dt          |                     dd¦  «        ¦  «        ¦  «         |                     d|                     dd¦  «        ¦  «         |                     dt          |                     dd¦  «        ¦  «        ¦  «         |                     d¦  «        p|                     d¦  «        pd}	|                     |	|                     dd¦  «        |                     dd¦  «        |                     dd¦  «        dœ¦  «         |                     dd¦  «        |||d         |d         ddœ}
	 t          t          |                     dd¦  «        ¦  «         
                    dd¦  «                             ¦   «         pd¦  «        }|dz  |
d <   n#  Y nxY wt          j        ||
¦  «         |                     |¦  «         d
S # t          $ r-}t!          j        d!|› �t           j        ¦  «         Y d
}~d
S d
}~ww xY w)"z<Add a single program item to the list (progressive loading).r\   r  r®   r  r  r¯   r  r   éP   NéM   z...r}   rë   r­   r
  r  rˆ  r  r  r  r€   r  r  r  Úepisode_thumb©rŠ  r‡   r€   r  ©ÚtitleÚtvshowtitler  r®   r¯   Ú	mediatyper  ró   rð   rJ   z"[MyTV] Error adding program item: )rg   r¢   r¹   r„   r…   rK  r¤   rC   rˆ   r´   r#  r$  r   Úset_video_info_tagr‰   rÔ   r�   r¸   r)  )r2   r}  r
  rœ   ry   r  Ú	full_plotrˆ  r•   rŠ  Úinfo_tagÚdur_minr3  s                r8   rh  z#MyTVDialog._add_single_program_itemß  sB  € ð6	NØŸ?š?¨4Ñ0Ô0ˆLàN˜) HÔ-ÐNÐNÐN°I¸iÔ4HÐNÐNÐNˆGØ!Ÿš f¨bÑ1Ô1ˆIÝ36°y±>´>ÀBÒ3FÐ3F˜ 3 B 3œ¨%Ñ/Ð/ÈIˆJåÔ#¨+Ð6Ñ6Ô6ˆDØ�NŠN�3˜yŸ}š}¨Y¸Ñ;Ô;Ñ<Ô<Ñ=Ô=Ð=ð ×Ò˜Y¨	Ñ2Ô2Ð2Ø×Ò˜]¨KÑ8Ô8Ð8Ø×Ò˜X¥s¨9°XÔ+>Ñ'?Ô'?Ñ@Ô@Ð@Ø×Ò˜Y­¨I°iÔ,@Ñ(AÔ(AÑBÔBÐBØ×Ò˜_¨i¯mªm¸OÈRÑ.PÔ.PÑQÔQÐQØ×Ò˜V YÑ/Ô/Ð/Ø×Ò˜\¨:Ñ6Ô6Ð6Ø×Ò˜X¥s¨9¯=ª=¸À2Ñ+FÔ+FÑ'GÔ'GÑHÔHÐHØ×Ò˜Y¨Ñ0Ô0Ð0Ø×Ò˜]¨I¯MªM¸-ÈÑ,LÔ,LÑMÔMÐMØ×Ò˜X y§}¢}°X¸rÑ'BÔ'BÑCÔCÐCØ×Ò˜X y§}¢}°X¸rÑ'BÔ'BÑCÔCÐCØ×Ò˜V¥S¨¯ª°v¸rÑ)BÔ)BÑ%CÔ%CÑDÔDÐDØ×Ò˜W i§m¢m°G¸RÑ&@Ô&@ÑAÔAÐAØ×Ò˜Y­¨I¯MªM¸)ÀRÑ,HÔ,HÑ(IÔ(IÑJÔJÐJð —M’M /Ñ2Ô2ÐS°i·m²mÀHÑ6MÔ6MÐSÐQSˆEØ�KŠKØØ!Ÿš h°Ñ3Ô3Ø#Ÿ-š-¨°"Ñ5Ô5Ø#Ÿ-š-¨°"Ñ5Ô5ð	ð ñ ô ð ð #Ÿš ¸Ñ;Ô;Ø*Ø!Ø# HÔ-Ø$ YÔ/Ø&ðð ˆHðÝ�c )§-¢-°	¸3Ñ"?Ô"?Ñ@Ô@×HÒHÈÐQSÑTÔT×ZÒZÑ\Ô\ÐcÐ`cÑdÔd�Ø'.°¡|�˜Ñ$Ð$øðØ�øøøåÔ$ T¨8Ñ4Ô4Ð4Ø× Ò  Ñ&Ô&Ð&Ð&Ð&øÝð 	Nð 	Nð 	NÝŒHÐ=¸!Ð=Ð=½t¼}ÑMÔMÐMÐMÐMÐMÐMÐMÐMøøøøð	Nøøøs1   ‚NP' ÎA O4 Ï3P' Ï4O8Ï6/P' Ð'
QÐ1"QÑQc                 ó¾   — 	 |                       d¦  «        }|                     ¦   «          t          j        d¬¦  «        }|                     |¦  «         dS #  Y dS xY w)z"Apply empty state to program list.r\   u%   Å½Ã¡dnÃ½ program. PÅ™idejte seriÃ¡ly.r}   N)rg   rh   r„   r…   r‰   )r2   ry   r•   s      r8   rd  zMyTVDialog._apply_empty_program  sh   € ð	ØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð ÝÔ#Ð*QÐRÑRÔRˆDØ× Ò  Ñ&Ô&Ð&Ð&Ð&øð	ØˆDˆDøøøs   ‚AA ÁAc                 ó°  — 	 |                       d¦  «        }|                     ¦   «          |D �]ö}t          j        |d         ¬¦  «        }|                     |d         ¦  «         dD ],}|                     ||                     |d¦  «        ¦  «         Œ-|                     |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     d	d¦  «        d
œ¦  «         |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        t          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        ddœ}	 |                     dd¦  «        }t          |t          ¦  «        r7t          |                     dd¦  «                             ¦   «         pd¦  «        }|dz  |d<   n#  Y nxY wt          j        ||¦  «         |                     |¦  «         �Œø	 |                       d¦  «        }|                     ¦   «         }	|	r|	                     d¦  «        nd}
|
�rddlm} t)          |                     ¦   «         ¦  «        D ]ø}|                     |¦  «        }|                     d¦  «        pd}|rÆ |j        |
|¦  «        }|r³|d         dk    r§|d         dk    r›t1          |d         |d         z  d¦  «        }|                     d d!¦  «         |                     d"t          t          |d#z  ¦  «        ¦  «        ¦  «         |                     d$t          t          |d%z  ¦  «        ¦  «        ¦  «         Œ÷d'S d'S # t2          $ r Y d'S w xY w# t2          $ r-}t5          j        d&|› �t4          j        ¦  «         Y d'}~d'S d'}~ww xY w)(z@Apply loaded program items to UI. Called from background thread.r\   r~   r}   rB  )r­   r
  r®   r¯   r  r  rˆ  r  r  r  r€   r  r  r  rë   rŠ  r   rŠ  r€   r  r–  r  r
  r  r®   r   r¯   r—  rë   r   ró   r  rð   rJ   r|   r�   r   r­   r  r  rD  rE  rF  r@   rG  rH  rI  rJ  z%[MyTV] Error applying program items: N)rg   rh   r„   r…   rK  rC   r¢   rˆ   r´   Ú
isinstancer¤   r#  r$  r   r›  r‰   r&  rŸ   r'  r   rL  rŠ   rž   r(  rñ   rÔ   r�   r¸   r)  )r2   r�  ry   Údatar•   rP  r�  rë   rR  rS  rT  r   r¥   rU  rV  r2  rW  r3  s                     r8   Ú_apply_program_itemszMyTVDialog._apply_program_items#  s  € ð>	QØŸ?š?¨4Ñ0Ô0ˆLØ×ÒÑ Ô Ð à"ð $+ñ $+�ÝÔ'¨d°7¬mÐ<Ñ<Ô<�Ø—’˜t Hœ~Ñ.Ô.Ð.ðUð =ð =�Cð ×$Ò$ S¨$¯(ª(°3¸Ñ*;Ô*;Ñ<Ô<Ð<Ð<ð —’Ø!ŸXšX g¨rÑ2Ô2Ø ŸHšH X¨rÑ2Ô2Ø"Ÿhšh x°Ñ4Ô4Ø"Ÿhšh x°Ñ4Ô4ð	ð ñ ô ð ð "ŸXšX o°rÑ:Ô:Ø#'§8¢8¨M¸2Ñ#>Ô#>Ø ŸHšH V¨RÑ0Ô0Ý! $§(¢(¨8°QÑ"7Ô"7Ñ8Ô8Ý" 4§8¢8¨I°qÑ#9Ô#9Ñ:Ô:Ø!*ðð �ðØ"Ÿhšh y°!Ñ4Ô4�GÝ! '­3Ñ/Ô/ð RÝ"% g§o¢o°f¸bÑ&AÔ&A×&GÒ&GÑ&IÔ&IÐ&PÈSÑ"QÔ"Q˜Ø+2°R©<�H˜ZÑ(Ð(øðØ�DøøøåÔ(¨¨xÑ8Ô8Ð8Ø×$Ò$ TÑ*Ô*Ð*Ñ*ðØŸ/š/¨$Ñ/Ô/�Ø!×1Ò1Ñ3Ô3�Ø=DÐL˜×+Ò+¨LÑ9Ô9Ð9È"�Øñ TØ5Ð5Ð5Ð5Ð5Ð5Ý$ \×%6Ò%6Ñ%8Ô%8Ñ9Ô9ð 	Tð 	T˜Ø)×5Ò5°cÑ:Ô:˜Ø!Ÿ~š~¨iÑ8Ô8Ð>¸B˜Øð TØ%D ^Ô%DÀUÈDÑ%QÔ%Q˜FØ%ð T¨&°Ô*<¸rÒ*AÐ*AÀfÈWÄoÐXYÒFYÐFYÝ&)¨&°Ô*<¸vÀg¼Ñ*NÐPSÑ&TÔ&T Ø "§¢¨{¸FÑ CÔ CÐ CØ "§¢Ð/?ÅÅSÈÈsÉÁ^Ä^ÑATÔATÑ UÔ UÐ UØ "§¢¨~½sÅ3ÀsÈSÁyÁ>Ä>Ñ?RÔ?RÑ SÔ SÐ SøðTð Tð	Tð 	Tøõ ð ð ð Ø��ðøøøøåð 	Qð 	Qð 	QÝŒHÐ@¸QÐ@Ð@Å$Ä-ÑPÔPÐPÐPÐPÐPÐPÐPÐPøøøøð	QøøøsP   ‚FN ÆA*G2Ç1N Ç2G6Ç41N È&E#N Î
NÎN ÎNÎN Î
OÎ("OÏOc                 ó*	  •— |                       |¦  «        rd S |                      |¦  «        rd S |                      |¦  «        rd S |                     ¦   «         }|                      ¦   «         }|t
          j        k    rE|                      d¦  «        dk    r,|                      d¦  «        dk    rddlm	}  || ¦  «        rd S |dk    r.|dk    r(t          | dd	¦  «        }|                      |¦  «         d S |dk    r|d
k    rd S |                      d¦  «        dk    r8|t
          j        t
          j        fv r|                      d¬¦  «         d S |dv rd S |                      d¦  «        dk    r8|t
          j        t
          j        fv r|                      d¬¦  «         d S |dv rd S |t
          j        t
          j        fv r¼|                      d¦  «        dk    r|                      ¦   «          d S |                      d¦  «        dk    r|                      ¦   «          d S |                      d¦  «        dk    r|                      ¦   «          d S |                      d¦  «        dk    r|                      ¦   «          d S t          | dd ¦  «        }|dk    �r¢	 |                      d¦  «        }|                     ¦   «         }n	#  d}Y nxY w|t
          j        k    r|                      ¦   «          d S |dv rŸt          | dd¦  «        }	|dk    r|	dk    r|                      ¦   «          d S || _        t3          j        d¦  «         |                      ¦   «          |                      ¦   «          d| _        t
          j                             | |¦  «         d S |d
k    rGt          | dd ¦  «        }|dk    r't          | dd	¦  «        }|                      |¦  «         nd| _        d S |dk    r)d| _        t
          j                             | |¦  «         d S d| _        t
          j                             | |¦  «         d S |dk    r&|t
          j        k    r|                       ¦   «          d S || _        tC          tD          | ¦  «                             |¦  «         d S )NúWCS.MyTV.ReorderModer@   úWCS.MyTV.ProgramReorderModer   )Úchannel_dialog_contextéR#  r   Ú_last_action_buttonrb   r   F©Úconfirm)r   r   r[   úWCS.MyTV.SeriesGridrZ   úWCS.MyTV.PlaySelectionÚ_last_known_focusr|   )r   r   Ú_last_list_positionr   é2   r\   )#Ú_handle_edit_progress_actionÚ_handle_series_detail_actionÚ_handle_add_series_actionÚgetIdÚ
getFocusIdr„   ÚACTION_CONTEXT_MENUrŸ   Úwcs.skin.contextr§  rs   rt   ÚACTION_PREVIOUS_MENUÚACTION_NAV_BACKÚ_exit_reorder_modeÚ_exit_program_reorder_modeÚ_cancel_delete_confirmationÚ_close_series_grid_dialogÚ"_cancel_delete_series_confirmationÚ_hide_play_selection_dialogrg   rŒ   Ú_enter_reorder_moderr   r¯  r�   Úsleepr�   r�   r®  ÚWindowXMLDialogÚonActionÚ"_enter_program_reorder_mode_directr'   r   )r2   ÚactionÚ	action_idÚ
focused_idr§  Úlast_btnÚ
last_focusr“   Úcurrent_posÚlast_posr7   s             €r8   rÃ  zMyTVDialog.onActione  s  ø€ à×,Ò,¨VÑ4Ô4ð 	ØˆFð ×,Ò,¨VÑ4Ô4ð 	ØˆFð ×)Ò)¨&Ñ1Ô1ð 	ØˆFà—L’L‘N”Nˆ	Ø—_’_Ñ&Ô&ˆ
Ø�Ô4Ò4Ð4Ø× Ò Ð!7Ñ8Ô8¸FÒBÐBØ× Ò Ð!>Ñ?Ô?À6ÒIÐIØ?Ð?Ð?Ð?Ð?Ð?Ø%Ð% dÑ+Ô+ð Ø�ð ˜ÒÐ )¨q¢. .Ý˜tÐ%:¸DÑAÔAˆHØ�OŠO˜HÑ%Ô%Ð%ØˆFð ˜ÒÐ )¨q¢. .ØˆFð
 ×ÒÐ2Ñ3Ô3°vÒ=Ð=Ø�WÔ9½7Ô;RÐSÐSÐSØ×'Ò'°Ð'Ñ6Ô6Ð6Ø�Ø˜FÐ"Ð"Ø�ð
 ×ÒÐ9Ñ:Ô:¸fÒDÐDØ�WÔ9½7Ô;RÐSÐSÐSØ×/Ò/¸Ð/Ñ>Ô>Ð>Ø�Ø˜FÐ"Ð"Ø�ð �Ô5µwÔ7NÐOÐOÐOØ×ÒÐ 8Ñ9Ô9¸VÒCÐCØ×0Ò0Ñ2Ô2Ð2Ø�Ø×ÒÐ 5Ñ6Ô6¸&Ò@Ð@Ø×.Ò.Ñ0Ô0Ð0Ø�Ø×ÒÐ >Ñ?Ô?À6ÒIÐIØ×7Ò7Ñ9Ô9Ð9Ø�Ø×ÒÐ 8Ñ9Ô9¸VÒCÐCØ×0Ò0Ñ2Ô2Ð2Ø�õ ˜TÐ#6¸Ñ=Ô=ˆ
ð ˜ÒÑð Ø#Ÿš¨tÑ4Ô4�Ø*×>Ò>Ñ@Ô@��øð Ø���øøøà�GÔ7Ò7Ð7Ø×(Ò(Ñ*Ô*Ð*Ø�Ø˜FÐ"Ð"õ # 4Ð)>ÀÑBÔB�Ø ’>�> h°!¢m mà×*Ò*Ñ,Ô,Ð,Ø�Fð ,7�Ô(õ ”
˜2‘”�Ø×'Ò'Ñ)Ô)Ð)Ø×)Ò)Ñ+Ô+Ð+Ø)-�Ô&åÔ'×0Ò0°°vÑ>Ô>Ð>Ø�Ø˜a’�Ý$ TÐ+>ÀÑEÔE�
Ø Ò%Ð%å& tÐ-BÀDÑIÔI�HØ—O’O HÑ-Ô-Ð-Ð-ð .2�DÔ*Ø�Ø˜a’�Ø)-�Ô&ÝÔ'×0Ò0°°vÑ>Ô>Ð>Ø�ð *.�Ô&ÝÔ'×0Ò0°°vÑ>Ô>Ð>Ø�ð ˜ÒÐ )­wÔ/JÒ"JÐ"JØ×3Ò3Ñ5Ô5Ð5ØˆFð ",ˆÔå�j˜$ÑÔ×(Ò(¨Ñ0Ô0Ð0Ð0Ð0s   Ê)K ËKc                 ó0  •— |                       d¦  «        dk    r|dk    r|                      d¦  «         d S |                       d¦  «        dk    r|dk    r|                      d¦  «         d S |dv r|| _        |                       d¦  «        dk    r*d|cxk    rd	k    rn n|dz
  }|                      |¦  «         |                      |¦  «         |dk    r|                      d
¦  «         d S t          t          | ¦  «                             |¦  «         d S )Nr¥  r@   r|   r¦  r\   )rb   éP#  éQ#  éS#  úWCS.MyTV.EditProgressé¹$  éÂ$  r`   )	rŸ   rt   r©  Ú_update_visible_seasonsÚ_handle_add_series_focusrO   r'   r   ÚonFocus)r2   Ú	controlIdÚ
season_idxr7   s      €r8   rÕ  zMyTVDialog.onFocusê  sR  ø€ à×ÒÐ2Ñ3Ô3°vÒ=Ð=À)ÈtÒBSÐBSØ�OŠO˜DÑ!Ô!Ð!ØˆFð ×ÒÐ9Ñ:Ô:¸fÒDÐDÈÐVZÒIZÐIZØ�OŠO˜DÑ!Ô!Ð!ØˆFð Ð0Ð0Ð0Ø'0ˆDÔ$ð ×ÒÐ3Ñ4Ô4¸Ò>Ð>À4È9ÐC\ÐC\ÒC\ÐC\ÐX\ÒC\ÐC\ÐC\ÐC\ÐC\Ø" TÑ)ˆJØ×(Ò(¨Ñ4Ô4Ð4ð 	×%Ò% iÑ0Ô0Ð0ð ˜ÒÐØ×ÒÐ3Ñ4Ô4Ð4Ð4Ð4õ •*˜dÑ#Ô#×+Ò+¨IÑ6Ô6Ð6Ð6Ð6r9   c                 ó$  •— |                       |¦  «        rd S |                      |¦  «        rd S |                      |¦  «        rd S |dk    r�|                      d¦  «        dk    r|                      ¦   «          d S |                      d¦  «        }|                     ¦   «         }|                     d¦  «        dk    r|                      ¦   «          d S |                      ¦   «          d S |dk    r|  	                    ¦   «          �nâ|dk    r*|  
                    ¦   «          |                      ¦   «          �n²|dk    r.|                      d¬	¦  «         |                      d
d¦  «         �n~|dk    r|                      ¦   «          �nb|dk    r|                      ¦   «          �nF|dk    r|                      ¦   «          �n*|dk    �r|                      d¦  «        }|                     ¦   «         }|rð|                     d¦  «        }| j                             |¦  «        }|r¿|j        r¸|j        pd}g }|j        D ]g}|                     dd¦  «        }	|                     dd¦  «        }
|	r7|
r|                     d|	› d|
› �¦  «         ŒN|                     d|	› d�¦  «         Œhd                     |¦  «        }|j        pd}d}d}|                      d|||||d¬¦  «         �n|dk    r®	 |                      d¦  «        }|                     ¦   «         }|rF|                     d¦  «        }|                     d¦  «        }|r|r|                      ||d¬¦  «         �nŒ# t6          $ r-}t9          j        d|› �t8          j        ¦  «         Y d }~�nZd }~ww xY w|dk    r|                      ¦   «          �n6|dk    r|                       ¦   «          �n|dk    r|                      ¦   «          �nþ|d k    r|  !                    ¦   «          �nâ|d!k    r|  "                    ¦   «          �nÆ|d"k    r|                      ¦   «          �nª|d#k    r|  #                    ¦   «          �nŽ|d$k    r|  $                    ¦   «          �nr|d%k    r|  %                    ¦   «          �nV|d&k    �r•|                      d'¦  «        }|                     ¦   «         }|�rg|                     d(¦  «        p| &                    ¦   «         }|                     d)¦  «        pd}|                     d*¦  «        pd}|                     d+¦  «        pd}|                     d,¦  «        pd}|                     d-¦  «        pd}|                     d¦  «        pd}d }d }|                     d.¦  «        pd}|ry| '                    d/¦  «        rdd0|v r`	 |d1d …          (                    d0¦  «        }tS          |d2         ¦  «        }tS          |d1         ¦  «        }n# tT          tV          f$ r Y nw xY w|                      |||||||||¬3¦	  «	         �nº|d'k    rE|                      d4¦  «        dk    r|  ,                    ¦   «          d S |  $                    ¦   «          �no|d5k    r|  -                    ¦   «          �nS|d6k    r|  .                    ¦   «          �n7|d7k    r|  $                    ¦   «          �n|d8k    r*|  /                    ¦   «          |  0                    ¦   «          �në|d9k    r*|  1                    ¦   «          |  0                    ¦   «          �n»|d:k    r*|  %                    ¦   «          |  0                    ¦   «          �n‹|d;k    �rjte          | d<d ¦  «        }|�rU|                      d=¦  «        pd}|                      d>¦  «        pd}|                      d?¦  «        pd}|                      d@¦  «        pd}|                      dA¦  «        pd}|                      dB¦  «        pd}|                     d¦  «        pd}d }d }|                     d.¦  «        pd}|ry| '                    d/¦  «        rdd0|v r`	 |d1d …          (                    d0¦  «        }tS          |d2         ¦  «        }tS          |d1         ¦  «        }n# tT          tV          f$ r Y nw xY w|                      |||||||||¬3¦	  «	         n|dCk    r|  0                    ¦   «          tg          th          | ¦  «         5                    |¦  «         d S )DNr|   r¥  r@   rƒ   r˜   é–#  i—#  T©rØ   u   Program zamÃ­chÃ¡nÚsuccessi˜#  i™#  éš#  i›#  r�   r   r†   Úoverviewú"z": z | rx   )rœ   r˜  r  r€   r  ÚlogoÚ
media_typer>  rœ   )Úreturn_focus_idz3[MyTV] Error opening series detail from My Series: i)#  i*#  é+#  é.#  i/#  rb   rÍ  r¨  rÎ  rÏ  r\   r
  r  r€   r  r  r  r  r  r  r   r   )r  Úseason_numberÚepisode_numberr¦  éB#  iA#  i@#  é?#  i<#  i=#  iC#  Ú_play_selection_itemúWCS.PlaySelect.SeriesNameúWCS.PlaySelect.PlotúWCS.PlaySelect.PosterúWCS.PlaySelect.FanartúWCS.PlaySelect.SeriesLogoúWCS.PlaySelect.EpTitlei>#  )6Ú_handle_edit_progress_clickÚ_handle_series_detail_clickÚ_handle_add_series_clickrŸ   Ú_confirm_reorderrg   r&  ru   rv   Ú_handle_grid_clickr½  Ú_play_broadcastr�   rK   rÀ  Ú"_regenerate_channel_name_from_gridÚ_show_delete_confirmationr-   r    r¡   r†   r¢   rµ   r%  r‡   Ú_show_game_dialogÚ_show_series_detail_dialogrÔ   r�   r¸   r)  Ú_add_from_my_seriesÚ_add_new_searchÚ_confirm_delete_channelr¼  Ú_play_hero_episodeÚ_show_play_selection_dialogÚ_play_series_onlyr  r£   r  r´   r   r!  Ú_confirm_program_reorderÚ_show_edit_progress_dialogÚ_enter_program_reorder_modeÚ_play_single_episoder¿  Ú_play_channel_from_selectedrs   r'   r   ÚonClick)r2   rÖ  r“   r•   r�   rx   Úchannel_nameÚseries_partsr  r†   rÝ  Úcombined_plotr€   r  rß  Úmy_series_listÚselectedrœ   r3  r
  r  r  rä  rå  r*  r+  r7   s                             €r8   r  zMyTVDialog.onClick  sc
  ø€ à×+Ò+¨IÑ6Ô6ð 	ØˆFð ×+Ò+¨IÑ6Ô6ð 	ØˆFð ×(Ò(¨Ñ3Ô3ð 	ØˆFà˜ÒÐà×ÒÐ 6Ñ7Ô7¸6ÒAÐAØ×%Ò%Ñ'Ô'Ð'Ø�ð  Ÿ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØ×ÒÐ 2Ñ3Ô3°vÒ=Ð=Ø×(Ò(Ñ*Ô*Ð*Ø�ð ×-Ò-Ñ/Ô/Ð/Ø�Ø˜$ÒÐà×#Ò#Ñ%Ô%Ð%Ñ%Ø˜$ÒÐà×*Ò*Ñ,Ô,Ð,Ø× Ò Ñ"Ô"Ð"Ñ"Ø˜$ÒÐà×%Ò%¨dÐ%Ñ3Ô3Ð3Ø×ÒÐ1°9Ñ=Ô=Ð=Ñ=Ø˜$ÒÐà×$Ò$Ñ&Ô&Ð&Ñ&Ø˜$ÒÐà×3Ò3Ñ5Ô5Ð5Ñ5Ø˜$ÒÐà×*Ò*Ñ,Ô,Ð,Ñ,Ø˜$ÒÑàŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØð Ø!×-Ò-¨lÑ;Ô;�
ØÔ.×@Ò@ÀÑLÔL�Øð ˜wÔ2ð Ø#*¤<Ð#5°2�Là#%�LØ$Ô0ð Að A˜Ø Ÿušu V¨RÑ0Ô0˜Ø#$§5¢5¨°RÑ#8Ô#8˜Øð AØ'ð AØ ,× 3Ò 3Ð4K¸Ð4KÐ4KÀÐ4KÐ4KÑ LÔ LÐ LÐ Là ,× 3Ò 3°K¸°K°K°KÑ @Ô @Ð @øØ$)§J¢J¨|Ñ$<Ô$<�Mà$œ\Ð/¨R�FØ�FØ�DØ×*Ò*Ø"$Ø*Ø*Ø%Ø%Ø!Ø#,ð +ñ ô ð ùð ˜$ÒÐð	cØ!%§¢°Ñ!6Ô!6�Ø)×9Ò9Ñ;Ô;�Øð eØ (× 4Ò 4°[Ñ AÔ A�IØ!)×!5Ò!5°lÑ!CÔ!C�JØ ð e Zð eØ×7Ò7¸	À:Ð_cÐ7ÑdÔdÐdùøÝð cð cð cÝ”ÐRÈqÐRÐRÕTXÔTaÑbÔbÐbÐbÐbÐbÐbÑbøøøøðcøøøà˜$ÒÐà×$Ò$Ñ&Ô&Ð&Ñ&Ø˜$ÒÐà× Ò Ñ"Ô"Ð"Ñ"Ø˜$ÒÐà×*Ò*Ñ,Ô,Ð,Ñ,Ø˜$ÒÐà×(Ò(Ñ*Ô*Ð*Ñ*Ø˜$ÒÐà×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà× Ò Ñ"Ô"Ð"Ñ"Ø˜$ÒÐà×#Ò#Ñ%Ô%Ð%Ñ%Ø˜$ÒÐà×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×"Ò"Ñ$Ô$Ð$Ñ$Ø˜$ÒÑàŸ?š?¨4Ñ0Ô0ˆLØ×/Ò/Ñ1Ô1ˆDØñ Ø"×.Ò.¨}Ñ=Ô=ÐPÀÇÂÁÄ�Ø×'Ò'¨Ñ/Ô/Ð5°2�Ø×)Ò)¨(Ñ3Ô3Ð9°r�Ø×)Ò)¨(Ñ3Ô3Ð9°r�Ø×'Ò'¨Ñ6Ô6Ð<¸"�Ø $× 0Ò 0°Ñ AÔ AÐ GÀR�Ø ×,Ò,¨[Ñ9Ô9Ð?¸R�	Ø $�Ø!%�Ø×+Ò+¨IÑ6Ô6Ð<¸"�Øð  × 3Ò 3°CÑ 8Ô 8ð ¸SÀH¸_¸_ðØ (¨¨¨¤× 2Ò 2°3Ñ 7Ô 7˜Ý(+¨E°!¬H©¬˜Ý),¨U°1¬X©¬˜˜øÝ&­
Ð3ð ð ð Ø˜ðøøøà×&Ò&Ø˜{¨D°&¸&À$Ø"/Ø"/Ø#1ð	 'ñ ô ð ùð ˜$ÒÐà×ÒÐ =Ñ>Ô>À&ÒHÐHØ×-Ò-Ñ/Ô/Ð/Ø�à×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×+Ò+Ñ-Ô-Ð-Ñ-Ø˜$ÒÐà×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×%Ò%Ñ'Ô'Ð'Ø×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×,Ò,Ñ.Ô.Ð.Ø×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÐà×"Ò"Ñ$Ô$Ð$Ø×,Ò,Ñ.Ô.Ð.Ñ.Ø˜$ÒÑå˜4Ð!7¸Ñ>Ô>ˆDØñ Ø"×.Ò.Ð/JÑKÔKÐQÈr�Ø×'Ò'Ð(=Ñ>Ô>ÐDÀ"�Ø×)Ò)Ð*AÑBÔBÐHÀb�Ø×)Ò)Ð*AÑBÔBÐHÀb�Ø×'Ò'Ð(CÑDÔDÐJÈ�Ø $× 0Ò 0Ð1IÑ JÔ JÐ PÈb�Ø ×,Ò,¨[Ñ9Ô9Ð?¸R�	à $�Ø!%�Ø×+Ò+¨IÑ6Ô6Ð<¸"�Øð  × 3Ò 3°CÑ 8Ô 8ð ¸SÀH¸_¸_ðØ (¨¨¨¤× 2Ò 2°3Ñ 7Ô 7˜Ý(+¨E°!¬H©¬˜Ý),¨U°1¬X©¬˜˜øÝ&­
Ð3ð ð ð Ø˜ðøøøà×&Ò&Ø˜{¨D°&¸&À$Ø"/Ø"/Ø#1ð	 'ñ ô ð øð ˜$ÒÐà×,Ò,Ñ.Ô.Ð.å�j˜$ÑÔ×'Ò'¨	Ñ2Ô2Ð2Ð2Ð2s?   Ë)A1M Í
NÍ&"NÎNÖ/AW7 ×7XØ
XáAb âb,â+b,c                 óœ  — d| _         dt          | j        j        ¦  «        dz   › �}| j                             |¦  «        }|j        | _        d| _        |                      d¦  «        }| 	                    ¦   «          | j         
                    ¦   «         D ]s}t          j        |j        ¬¦  «        }|j        r|j        nd}|                     d|i¦  «         |                     d	|j        ¦  «         |                     |¦  «         Œtt          j        d
¬¦  «        }|                     ddi¦  «         |                     dd¦  «         |                     |¦  «         |                      d¦  «         	                    ¦   «          |                      d¦  «         t'          j        d¦  «         d| _         |                      ¦   «          dS )zACreate a new channel with automatic naming based on added series.Tu   NovÃ½ kanÃ¡l r   r   r|   r}   r   r€   r�   r   r‚   rƒ   r@   r˜   r°  FN)Ú_block_sidebarr¹   r-   r’   Úcreate_channelrf   Ú_pending_new_channel_idr.   rg   rh   re   r„   r…   r†   r‡   rˆ   rC   r‰   rt   r�   rÁ  Ú_show_add_series_dialog)r2   Ú	temp_nameÚnew_channelr“   r”   r•   r‡   r–   s           r8   ru   zMyTVDialog._create_new_channelÛ  sÏ  € ð #ˆÔð M¥C¨Ô(<Ô(EÑ$FÔ$FÈÑ$JÐLÐLˆ	ØÔ*×9Ò9¸)ÑDÔDˆð (3¤~ˆÔ$ð &'ˆÔ"ð —’ tÑ,Ô,ˆØ×ÒÑÔÐØÔ&×7Ò7Ñ9Ô9ð 	'ð 	'ˆBÝÔ#¨"¬'Ð2Ñ2Ô2ˆDØ œgð  A�2”7�7ð  ,AˆDØ�KŠK˜ 4Ð(Ñ)Ô)Ð)Ø×Ò˜\¨2¬5Ñ1Ô1Ð1Ø× Ò  Ñ&Ô&Ð&Ð&åÔ&¨RÐ0Ñ0Ô0ˆØ×Ò˜HÐ&qÐrÑsÔsÐsØ×ÒÐ 2°FÑ;Ô;Ð;Ø×Ò˜[Ñ)Ô)Ð)ð
 	�Š˜ÑÔ×#Ò#Ñ%Ô%Ð%ð 	�Š˜ÑÔÐÝŒ
�2‰Œˆð $ˆÔð 	×$Ò$Ñ&Ô&Ð&Ð&Ð&r9   c                 óN  — |                       d¦  «        }|                     ¦   «         }|r|                     d¦  «        dk    rdS |                     d¦  «        | _        |                     ¦   «         | _        |                      dd¦  «         |                      d¦  «         dS )z'Show inline delete confirmation dialog.r|   rƒ   r@   Nr�   r[   rã  )rg   r&  rŸ   Ú_pending_delete_channel_idr  Ú_pending_delete_channel_namerC   rt   ©r2   r“   r•   s      r8   rö  z$MyTVDialog._show_delete_confirmation
  s£   € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	�t×'Ò'Ð(:Ñ;Ô;¸vÒEÐEØˆFð +/×*:Ò*:¸<Ñ*HÔ*HˆÔ'Ø,0¯MªM©O¬OˆÔ)ð 	×ÒÐ1°6Ñ:Ô:Ð:Ø�Š˜ÑÔÐÐÐr9   c                 óÖ   — |                       d¦  «         d| _        d| _        |                      d¦  «        dk    r|                      d¦  «         dS |                      d¦  «         dS )z6Cancel delete confirmation and return to normal state.r[   Nr¬  r@   rÜ  râ  )rO   r  r  rŸ   rt   rP   s    r8   r¼  z&MyTVDialog._cancel_delete_confirmation  sq   € à×ÒÐ3Ñ4Ô4Ð4Ø*.ˆÔ'Ø,0ˆÔ)à×ÒÐ1Ñ2Ô2°fÒ<Ð<Ø�OŠO˜DÑ!Ô!Ð!Ð!Ð!à�OŠO˜DÑ!Ô!Ð!Ð!Ð!r9   c                 óè  — t          | dd¦  «        }|sdS |                      d¦  «         |                      d¦  «        dk    r*|                      d¦  «         |                      d¦  «         t          j        |¦  «         | j                             |¦  «         d| _        d| _        d| _	        |  
                    ¦   «          |                      dd	¬
¦  «         |                      dd¦  «         dS )z/Actually delete the channel after confirmation.r  Nr[   r¬  r@   úWCS.MyTV.SeriesGrid.Titler   r|   çš™™™™™¹?©ÚdelayzKanal smazanrÛ  )rs   rO   rŸ   r   Údelete_channel_historyr-   Údelete_channelr  r  r.   rp   Ú_delayed_focusrK   )r2   r�   s     r8   rû  z"MyTVDialog._confirm_delete_channel$  s  € å˜TÐ#?ÀÑFÔFˆ
Øð 	ØˆFð 	×ÒÐ3Ñ4Ô4Ð4ð ×ÒÐ1Ñ2Ô2°fÒ<Ð<Ø×ÒÐ4Ñ5Ô5Ð5Ø×ÒÐ:Ñ;Ô;Ð;õ 	Ô-¨jÑ9Ô9Ð9ØÔ×+Ò+¨JÑ7Ô7Ð7ð +/ˆÔ'Ø,0ˆÔ)ð &'ˆÔ"Ø×"Ò"Ñ$Ô$Ð$ð 	×Ò˜D¨ÐÑ,Ô,Ð,à×Ò˜¨Ñ3Ô3Ð3Ð3Ð3r9   c                 ó\   — |                       dd¦  «         |                      d¦  «         dS )z.Show inline delete series confirmation dialog.rZ   r@   éY$  N)rC   rt   rP   s    r8   Ú _show_delete_series_confirmationz+MyTVDialog._show_delete_series_confirmationC  s1   € à×ÒÐ7¸Ñ@Ô@Ð@Ø�Š˜ÑÔÐÐÐr9   c                 óZ   — |                       d¦  «         |                      d¦  «         dS )z=Cancel delete series confirmation and return to normal state.rZ   éT$  N©rO   rt   rP   s    r8   r¾  z-MyTVDialog._cancel_delete_series_confirmationH  s/   € à×ÒÐ9Ñ:Ô:Ð:Ø�Š˜ÑÔÐÐÐr9   c                 óÌ  — | j         }| j        }|                      d¦  «         | j                             |¦  «        }d}|rU|j        D ]M}t          |                     d¦  «        ¦  «        t          |¦  «        k    r|                     dd¦  «        } nŒN| j                             |d|i¦  «         |  	                    d¬¦  «         |  
                    d|› d�d	¦  «         d
S )z.Actually delete the series after confirmation.rZ   r   rf   r†   T©Úremovedú'u   ' odebrÃ¡norÛ  N)Ú_series_detail_series_idÚ_series_detail_channel_idrO   r-   r    r¡   r¤   r¢   Útoggle_series_in_channelÚ_close_series_detail_dialogrK   )r2   rœ   r�   rx   r
  r  s         r8   Ú_confirm_delete_seriesz!MyTVDialog._confirm_delete_seriesM  s  € àÔ1ˆ	ØÔ3ˆ
ð 	×ÒÐ9Ñ:Ô:Ð:ð Ô&×8Ò8¸ÑDÔDˆØˆØð 	ØÔ(ð ð �Ý�q—u’u˜T‘{”{Ñ#Ô#¥s¨9¡~¤~Ò5Ð5Ø"#§%¢%¨°Ñ"3Ô"3�KØ�Eð 6ð
 	Ô×5Ò5°jÀ4ÈÐBSÑTÔTÐTð 	×(Ò(°Ð(Ñ6Ô6Ð6à×ÒÐ5˜[Ð5Ð5Ð5°yÑAÔAÐAÐAÐAr9   Nc                 ó„   ‡ ‡‡‡‡‡— ddl }ˆˆˆˆ ˆˆfd„}|                     |d¬¦  «        }|                     ¦   «          dS )a‡  Generate AI channel name in background thread.
        
        Args:
            channel_id: Channel ID to rename
            series_list: List of series dicts for context
            generator: ChannelNameGenerator instance
            current_name: Optional current name (AI generates different name)
            update_grid_title: If True, also updates SeriesGrid.Title property
        r   Nc                  ó  •— 	 ‰                      ‰	‰¬¦  «        } ‰j                             ‰| ¦  «         	 ‰                     d¦  «        }t	          |                     ¦   «         ¦  «        D ]G}|                     |¦  «        }|                     d¦  «        ‰k    r|                     | ¦  «          nŒHn9# t          $ r,}t          j        d|› �t          j        ¦  «         Y d }~nd }~ww xY w‰
r(	 ‰                     d| ¦  «         n# t          $ r Y nw xY w‰                     d| › �d¦  «         d S # t          $ rC}t          j        d|› �t          j        ¦  «         ‰                     d	d
¦  «         Y d }~d S d }~ww xY w)N)Úcurrent_namer|   r�   z)[MyTV] Failed to update list item label: r  u   NÃ¡zev: rÛ  z![MyTV] AI channel naming failed: u   AI generovÃ¡nÃ­ selhaloÚerror)Úgenerate_from_air-   Úrename_channelrg   rL  rŠ   rž   rŸ   ÚsetLabelrÔ   r�   r¸   rO  rC   rK   r)  )Úai_namer“   r‘  r•   r3  r�   r/  Ú	generatorr2   r¡   Úupdate_grid_titles        €€€€€€r8   Úworkerz:MyTVDialog._generate_ai_channel_name_async.<locals>.workerr  sê  ø€ ðEà#×4Ò4°[È|Ð4Ñ\Ô\�ð Ô$×3Ò3°JÀÑHÔHÐHð_Ø#'§?¢?°4Ñ#8Ô#8�LÝ" <×#4Ò#4Ñ#6Ô#6Ñ7Ô7ð "ð "˜Ø+×7Ò7¸Ñ:Ô:˜Ø×+Ò+¨LÑ9Ô9¸ZÒGÐGØ ŸMšM¨'Ñ2Ô2Ð2Ø!˜Eð Høøõ !ð _ð _ð _Ý”HÐLÈÐLÐLÍdÌoÑ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^øøøøð_øøøð %ð ðØ×(Ò(Ð)DÀgÑNÔNÐNÐNøÝ$ð ð ð Ø˜ðøøøð × Ò Ð!5¨GÐ!5Ð!5°yÑAÔAÐAÐAÐAøåð Eð Eð EÝ”Ð@¸QÐ@Ð@Å$Ä-ÑPÔPÐPØ× Ò Ð!:¸GÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøðEøøøse   ƒ2D3 ¶A>B5 Â4D3 Â5
C+Â?"C&Ã!D3 Ã&C+Ã+D3 Ã1D ÄD3 Ä
DÄD3 ÄDÄD3 Ä3
F Ä=8E;Å;F T©ÚtargetrF   )rA   ÚThreadrG   )	r2   r�   r¡   r5  r/  r6  rA   r7  Úthreads	   ``````   r8   Ú_generate_ai_channel_name_asyncz*MyTVDialog._generate_ai_channel_name_asyncf  s~   øøøøøø€ ð 	ÐÐÐð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	EðB ×!Ò!¨¸Ð!Ñ=Ô=ˆØ�Š‰Œˆˆˆr9   c                 óH  ‡— |r|sdS 	 t          j        ||¦  «        }|r|d         dk    rdS |d         Šˆfd„}ddl}|                     |d¬¦  «                             ¦   «          dS # t
          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)	zÉStart background seek to resume position for first playlist item.
        
        Args:
            channel_id: Channel ID for history lookup
            tmdb_id: TMDb ID of the first episode
        Nr  r  c                  ó¶  •— dd l } t          d¦  «        D ]Ã}|                      d¦  «         	 t          j        ¦   «                              ¦   «         rvt          j        ¦   «                              ¦   «         dk    rMt          j        ¦   «                              ‰¦  «         t          j        d‰d›d�t          j	        ¦  «          d S Œ´# t          $ r Y ŒÀw xY wd S )Nr   r°  çš™™™™™É?z[MyTV] Resumed at ú.0fr  ©ÚtimerL  rÁ  r�   ÚPlayerÚ	isPlayingÚgetTimeÚseekTimer¸   rº   rÔ   ©Ú_timer`  Úresume_positions     €r8   Ú_seek_workerz0MyTVDialog._seek_to_resume.<locals>._seek_worker§  sã   ø€ Ø$Ð$Ð$Ð$Ý˜r™œð ð �AØ—K’K Ñ$Ô$Ð$ðÝœ;™=œ=×2Ò2Ñ4Ô4ð #½¼¹¼×9NÒ9NÑ9PÔ9PÐSTÒ9TÐ9TÝ œK™MœM×2Ò2°?ÑCÔCÐCÝ œHÐ%P¸/Ð%PÐ%PÐ%PÐ%PÕRVÔR^Ñ_Ô_Ð_Ø"˜F˜FøøÝ$ð ð ð Ø˜ðøøøðð ó   ­BC	Ã	
CÃCr   Tr8  z[MyTV] Resume seek error: )	r   r(  rA   r:  rG   rÔ   r�   r¸   r)  )r2   r�   r­   r2  rJ  rA   r3  rI  s          @r8   Ú_seek_to_resumezMyTVDialog._seek_to_resume–  sû   ø€ ð ð 	 ð 	ØˆFð	FÝ#Ô4°ZÀÑIÔIˆFØð ˜V JÔ/°2Ò5Ð5Ø�à$ ZÔ0ˆOð
ð 
ð 
ð 
ð 
ð ÐÐÐØ×Ò L¸ÐÑ>Ô>×DÒDÑFÔFÐFÐFÐFøÝð 	Fð 	Fð 	FÝŒHÐ5°!Ð5Ð5µt´}ÑEÔEÐEÐEÐEÐEÐEÐEÐEøøøøð	Føøøs   ‰#A* ®:A* Á*
B!Á4"BÂB!c                 óf  — |                       d¦  «        }|                     ¦   «         }|dk    r|                      dd¦  «         dS |                      ¦   «          t	          j        t          j        ¦  «        }|                     ¦   «          | j         	                    d¦  «        }|                       d¦  «        }| 
                    ¦   «         }|r|                     d¦  «        nd	}t          |¦  «        D ]«}|                     |¦  «        }	|	                     d
¦  «        r*|	                     d¦  «        r|	                     d¦  «        sŒWt          j        |	¦  «        }
t          j        ||
|¦  «        }t          j        |
¦  «        }|                     ||¦  «         Œ¬|                     d¦  «        }|r|                     d¦  «        nd	}t	          j        ¦   «                              |¦  «         |                      ||¦  «         ddlm}  |¦   «                              ¦   «          dS )z:Plays all items in the upcoming program list continuously.r\   r   u   Å½Ã¡dnÃ½ program k vysÃ­lÃ¡nÃ­ÚwarningNrf   r|   r�   r   r
  r®   r¯   r­   ©Úget_playlist_monitor)rg   rŠ   rK   Úcloser�   ÚPlayListÚPLAYLIST_VIDEOÚclearr,   ÚgetAddonInfor&  rŸ   rL  rž   r   Úextract_item_dataÚbuild_playlist_urlÚbuild_playlist_listitemrõ   rC  ÚplayrL  Ú%wcs.playback.PlaylistCountdownMonitorrP  Úactivate)r2   r“   rŠ   ÚplaylistÚaddon_idr0  Úcurrent_channel_itemr�   r‘  r•   rÀ   ÚurlÚliÚ
first_itemÚfirst_tmdb_idrP  s                   r8   rô  zMyTVDialog._play_broadcast¸  s'  € à—’ tÑ,Ô,ˆØ× Ò Ñ"Ô"ˆØ�1Š9ˆ9Ø×ÒÐ=¸yÑIÔIÐIØˆFà�
Š
‰Œˆõ ”=¥Ô!4Ñ5Ô5ˆØ�ŠÑÔÐð ”:×*Ò*¨4Ñ0Ô0ˆØ—’ tÑ,Ô,ˆØ+×;Ò;Ñ=Ô=ÐØG[ÐcÐ)×5Ò5°lÑCÔCÐCÐacˆ
å�t‘”ð 		"ð 		"ˆAØ×+Ò+¨AÑ.Ô.ˆDà×#Ò# MÑ2Ô2ð ¸$×:JÒ:JÈ8Ñ:TÔ:Tð Ð\`×\lÒ\lÐmvÑ\wÔ\wð Øå'Ô9¸$Ñ?Ô?ˆIÝ!Ô4°X¸yÈ*ÑUÔUˆCÝ Ô8¸ÑCÔCˆBØ�LŠL˜˜bÑ!Ô!Ð!Ð!ð "×-Ò-¨aÑ0Ô0ˆ
Ø=GÐO˜
×.Ò.¨yÑ9Ô9Ð9ÈRˆõ 	Œ‰Œ×Ò˜8Ñ$Ô$Ð$ð 	×Ò˜Z¨Ñ7Ô7Ð7ð 	OÐNÐNÐNÐNÐNØÐÑÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)r9   c                 óF  — |                       d¦  «        }|                     ¦   «         }|sdS || _        |                      d|                     d¦  «        p|                     ¦   «         ¦  «         |                     d¦  «        pd}|rƒ|                     d¦  «        rnd|v rj	 |d	d…                              d¦  «        }t          |d
         ¦  «        }t          |d	         ¦  «        }d|› d|› �}n# t          t          f$ r |}Y nw xY w|}|                      d|¦  «         |                      d|                     d¦  «        pd¦  «         |                      d|                     d¦  «        pd¦  «         |                      d|                     d¦  «        pd¦  «         |                      d|                     d¦  «        pd¦  «         |                      d|                     d¦  «        pd¦  «         g }|                     d¦  «        }	|	r,|                     |	¦  «         |                      d|	¦  «         n|                      dd¦  «         |                     d¦  «        }
|
r,|                     |
¦  «         |                      d|
¦  «         n|                      dd¦  «         |                     d¦  «        }|r^|                     dd¦  «                             ¦   «         }|r|› d�nd}|r+|                     |¦  «         |                      d|¦  «         |r|s|                      dd¦  «         |                     d¦  «        }|r_	 d t          |¦  «        d!›d"�}n# t          t          f$ r	 d |› d"�}Y nw xY w|                     |¦  «         |                      d#|¦  «         n|                      d#d¦  «         |                      d$d%                     |¦  «        ¦  «         |                     d&¦  «        p|                     d&¦  «        pd}|                      d'|¦  «         |                       d(¦  «        }|                     ¦   «         }|r|                     d)¦  «        nd}|                     d*¦  «        pd}|r||rz	 d
d+lm}  |j        ||¦  «        }|r#|d,         d-k    r|                      d.d/¦  «         n|                      d.d0¦  «         n<# t*          $ r |                      d.d0¦  «         Y nw xY w|                      d.d0¦  «         d1}|                      d2|¦  «         |                      ¦   «         | _        | j        dk    r|                      d3d4¦  «         |                      d5d4¦  «         |                      d6¦  «         dS )7z-Show play selection dialog with episode info.r\   Nré  r
  r  r   r  r  r   r   r  r  úWCS.PlaySelect.EpCoderî  r  rì  r  rë  r€   rí  r  rê  r  r  zWCS.PlaySelect.Yearr  zWCS.PlaySelect.Genrerë   ró   zWCS.PlaySelect.Runtimer  u   â˜… ú.1fr  zWCS.PlaySelect.RatingzWCS.PlaySelect.MetaLinez   |   rŠ  úWCS.PlaySelect.Stillr|   r�   r­   r   r  r  zWCS.PlaySelect.PlayEpLabelr  rV   ÚmodalzWCS.PlaySelect.Styleú!WCS.MyTV.PlaySelection.ScrollLockr@   r­  rç  )rg   r&  rè  rC   rŸ   r  r£   r  r´   r   r!  rµ   r#  r$  ÚfloatÚ	TypeErrorr%  r  r'  r   r(  rÔ   rµ  Ú_play_selection_source_focusrt   )r2   r“   r•   r*  r+  r,  r-  Úep_code_fmtÚ
meta_partsr  r  rë   r/  r   r  Ú
rating_strÚstillr0  r1  rT  rV  r   r2  Ústyles                           r8   rý  z&MyTVDialog._show_play_selection_dialogé  sw  € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	ØˆFð %)ˆÔ!ð 	×ÒÐ4°d×6FÒ6FÀ}Ñ6UÔ6UÐ6hÐY]×YfÒYfÑYhÔYhÑiÔiÐià×#Ò# IÑ.Ô.Ð4°"ˆØð 		#˜×+Ò+¨CÑ0Ô0ð 		#°S¸H°_°_ð'Ø    œ×*Ò*¨3Ñ/Ô/�Ý   q¤™]œ]�
Ý! %¨¤(™mœm�ØO¨ZÐOÐOÀ+ÐOÐO��øÝ¥
Ð+ð 'ð 'ð 'Ø&���ð'øøøð #ˆKØ×ÒÐ0°+Ñ>Ô>Ð>Ø×ÒÐ1°4×3CÒ3CÀOÑ3TÔ3TÐ3ZÐXZÑ[Ô[Ð[Ø×ÒÐ0°$×2BÒ2BÀ8Ñ2LÔ2LÐ2RÐPRÑSÔSÐSØ×ÒÐ0°$×2BÒ2BÀ8Ñ2LÔ2LÐ2RÐPRÑSÔSÐSØ×ÒÐ4°d×6FÒ6FÀ}Ñ6UÔ6UÐ6[ÐY[Ñ\Ô\Ð\Ø×ÒÐ.°×0@Ò0@ÀÑ0HÔ0HÐ0NÈBÑOÔOÐOð ˆ
Ø×Ò Ñ'Ô'ˆØð 	8Ø×Ò˜dÑ#Ô#Ð#Ø×ÒÐ2°DÑ9Ô9Ð9Ð9à×ÒÐ2°BÑ7Ô7Ð7à× Ò  Ñ)Ô)ˆØð 	9Ø×Ò˜eÑ$Ô$Ð$Ø×ÒÐ3°UÑ;Ô;Ð;Ð;à×ÒÐ3°RÑ8Ô8Ð8à×"Ò" 9Ñ-Ô-ˆØð 	HØ#ŸOšO¨F°BÑ7Ô7×=Ò=Ñ?Ô?ˆMØ4AÐI˜]Ð0Ð0Ð0Ð0ÀrˆKØð HØ×!Ò! +Ñ.Ô.Ð.Ø× Ò Ð!9¸;ÑGÔGÐGØð 	;˜kð 	;Ø×ÒÐ5°rÑ:Ô:Ð:ð ×!Ò! (Ñ+Ô+ˆØð 	:ð3Ø=¥u¨V¡}¤}Ð=Ð=Ð=Ð=�
�
øÝ¥	Ð*ð 3ð 3ð 3Ø2 vÐ2Ð2Ð2�
�
�
ð3øøøà×Ò˜jÑ)Ô)Ð)Ø×ÒÐ4°jÑAÔAÐAÐAà×ÒÐ4°bÑ9Ô9Ð9ð 	×ÒÐ2°I·N²NÀ:Ñ4NÔ4NÑOÔOÐOð —’˜GÑ$Ô$ÐG¨×(8Ò(8¸Ñ(AÔ(AÐGÀRˆØ×ÒÐ/°Ñ7Ô7Ð7ð —’ tÑ,Ô,ˆØ&×6Ò6Ñ8Ô8ˆØ=LÐT�×+Ò+¨LÑ9Ô9Ð9ÐRTˆØ×Ò 	Ñ*Ô*Ð0¨bˆØð 	P�Tð 	PðTØ1Ð1Ð1Ð1Ð1Ð1Ø8˜Ô8¸ÀÑEÔE�Øð X˜f ZÔ0°2Ò5Ð5Ø×$Ò$Ð%AÀ=ÑQÔQÐQÐQà×$Ò$Ð%AÐCVÑWÔWÐWøøÝð Tð Tð TØ× Ò Ð!=Ð?RÑSÔSÐSÐSÐSðTøøøð ×ÒÐ9Ð;NÑOÔOÐOð ˆØ×ÒÐ/°Ñ7Ô7Ð7ð -1¯OªOÑ,=Ô,=ˆÔ)ð Ô,°Ò4Ð4Ø×ÒÐ@À&ÑIÔIÐIð 	×ÒÐ1°6Ñ:Ô:Ð:Ø�Š˜ÑÔÐÐÐs8   Â%AC5 Ã5DÄ
DÍM- Í-NÎNÒAS( Ó( TÔ
Tc                 óÜ   — d| _         |                      d¦  «         |                      d¦  «         t          j        d¦  «         t	          | dd¦  «        }|                      |¦  «         dS )zHide play selection dialog.Nr­  rh  r°  rk  r\   )rè  rO   r�   rÁ  rs   rt   )r2   Ú	source_ids     r8   r¿  z&MyTVDialog._hide_play_selection_dialogV  sm   € à$(ˆÔ!à×ÒÐ3Ñ4Ô4Ð4Ø×ÒÐ>Ñ?Ô?Ð?õ 	Œ
�2‰Œˆå˜DÐ"@À$ÑGÔGˆ	Ø�Š˜	Ñ"Ô"Ð"Ð"Ð"r9   c                 óæ  — t          | dd¦  «        }|sdS |                     d¦  «        }|                     d¦  «        p|                     ¦   «         }|s|                      dd¦  «         dS |                      d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd	}|| _        || _        || _        d
| _	        |  
                    d|¦  «         |  
                    dd¦  «         |  
                    dd¦  «         |  
                    dd¦  «         |  
                    dd¦  «         d
dl}|                     | j        ||fd¬¦  «        }|                     ¦   «          dS )z1Show edit progress dialog for the current series.rè  Nr­   r
  u   ChybÃ­ TMDb ID seriÃ¡lur0  r|   r�   r   r   úWCS.EditProgress.SeriesNameúWCS.EditProgress.Loadingr@   úWCS.EditProgress.ScrollRowr  úWCS.EditProgress.SeasonCountrÐ  T©r9  r5   rF   )rs   rŸ   r  rK   rg   r&  Ú_edit_progress_tmdb_idÚ_edit_progress_series_nameÚ_edit_progress_channel_idÚ_edit_progress_season_countrC   rA   r:  Ú_load_edit_progress_datarG   )	r2   r•   r­   r
  r0  r^  r�   rA   r;  s	            r8   r   z%MyTVDialog._show_edit_progress_dialogg  s¡  € å�tÐ3°TÑ:Ô:ˆØð 	ØˆFà×"Ò" 9Ñ-Ô-ˆØ×&Ò& }Ñ5Ô5ÐH¸¿º¹¼ˆØð 	Ø×ÒÐ6¸Ñ@Ô@Ð@ØˆFð —’ tÑ,Ô,ˆØ+×;Ò;Ñ=Ô=ÐØG[ÐcÐ)×5Ò5°lÑCÔCÐCÐacˆ
ð '.ˆÔ#Ø*5ˆÔ'Ø)3ˆÔ&Ø+,ˆÔ(ð 	×ÒÐ6¸ÑDÔDÐDØ×ÒÐ3°VÑ<Ô<Ð<Ø×ÒÐ5°sÑ;Ô;Ð;Ø×ÒÐ7¸Ñ=Ô=Ð=ð 	×ÒÐ0°&Ñ9Ô9Ð9ð 	ÐÐÐØ×!Ò!ØÔ0Ø˜:Ð&Øð "ñ 
ô 
ˆð
 	�Š‰Œˆˆˆr9   c                 ó`  — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         t          | dd¦  «        }t          d|dz   ¦  «        D ]o}|                       d|› d	�¦  «         |                       d|› d
�¦  «         	 |                      d|z   ¦  «                             ¦   «          Œ`# t
          $ r Y Œlw xY w|                       d¦  «         d| _        d| _        d| _        d| _	        t          j        d¦  «         dS )z'Hide edit progress dialog and clean up.rÐ  ru  rv  rt  r|  r   r   úWCS.EditProgress.Seasonú.Labelú.Showi¸$  rw  Nr°  )rO   rs   rL  rg   rh   rÔ   ry  rz  r{  r|  r�   rÁ  )r2   Úseason_countr‘  s      r8   Ú_hide_edit_progress_dialogz%MyTVDialog._hide_edit_progress_dialog�  s\  € ð 	×ÒÐ2Ñ3Ô3Ð3Ø×ÒÐ5Ñ6Ô6Ð6Ø×ÒÐ7Ñ8Ô8Ð8Ø×ÒÐ8Ñ9Ô9Ð9õ ˜tÐ%BÀAÑFÔFˆÝ�q˜,¨Ñ*Ñ+Ô+ð 	ð 	ˆAØ×ÒÐB¸ÐBÐBÐBÑCÔCÐCØ×ÒÐA¸ÐAÐAÐAÑBÔBÐBðØ—’  q¡Ñ)Ô)×/Ò/Ñ1Ô1Ð1Ð1øÝð ð ð Ø�ðøøøà×ÒÐ9Ñ:Ô:Ð:ð '+ˆÔ#Ø*.ˆÔ'Ø)-ˆÔ&Ø+,ˆÔ(åŒ
�2‰Œˆˆˆs   Â.*CÃ
C&Ã%C&c                 ó¤  — t          | dd¦  «        }|dk    rdS t          dt          |dz
  |dz
  ¦  «        ¦  «        }t          d|¦  «        }t          |¦  «        D ]O}||cxk    r	|dz   k     r!n n|                      d|dz   › d�d¦  «         Œ3|                      d|dz   › d�¦  «         ŒP|                      d	t          |¦  «        ¦  «         dS )
zCShow only 4 seasons around focused_season_idx (0-based). Hide rest.r|  r   Nr   r   r  r�  r@   rv  )rs   Úmaxrñ   rL  rC   rO   r¤   )r2   Úfocused_season_idxrD  Úfirstr‘  s        r8   rÓ  z"MyTVDialog._update_visible_seasons«  s  € å˜Ð;¸QÑ?Ô?ˆØ�AŠ:ˆ:ØˆFå�A•sÐ-°Ñ1°5¸1±9Ñ=Ô=Ñ>Ô>ˆÝ�A�u‘”ˆÝ�u‘”ð 	Kð 	KˆAØ˜Ð%Ð%Ò%Ð%˜E A™IÒ%Ð%Ð%Ð%Ð%Ø× Ò Ð!G¸1¸q¹5Ð!GÐ!GÐ!GÈÑPÔPÐPÐPà×"Ò"Ð#I¸QÀ¹UÐ#IÐ#IÐ#IÑJÔJÐJÐJà×ÒÐ5µs¸5±z´zÑBÔBÐBÐBÐBr9   c                 ó‚  — ddl }	 ddlm}  || j        ¦  «        }d|› d|› d�}|                     |¦  «        }|                     ¦   «          |                     ¦   «         }|                     dg ¦  «        }	d„ |	D ¦   «         dd	…         }
|
s-|                      d
¦  «         |                      dd¦  «         dS t          j
        ||¦  «        \  }}d}t          |
¦  «        D �]\  }}|d         }|                     d¦  «        pd|› �}	 d|› d|› d|› d�}|                     |¦  «        }|                     ¦   «          |                     ¦   «         }|                     dg ¦  «        }n># t          $ r1}t          j        d|› d|› �t          j        ¦  «         g }Y d}~nd}~ww xY w|                      d|dz   › d�|¦  «         |                      d|z   ||||¦  «         ||k    r|}�Œ
t%          |
¦  «        | _        |                      dt)          t%          |
¦  «        ¦  «        ¦  «         |                      d
¦  «         |                      |¦  «         d|z   }t          j        d¦  «         	 |                      |¦  «         |                      |¦  «        }t3          |                     ¦   «         ¦  «        D ]G}|                     |¦  «        }|                     d¦  «        dk    r|                     |¦  «          nŒHdS dS # t          $ rB}t          j        d|› �t          j        ¦  «         |                      d¦  «         Y d}~dS d}~ww xY w# t          $ rX}t          j        d|› �t          j        ¦  «         |                      d
¦  «         |                      dd¦  «         Y d}~dS d}~ww xY w) z@Load seasons and episodes from TMDb (runs in background thread).r   N©Úget_tmdb_api_keyú https://api.themoviedb.org/3/tv/ú	?api_key=ú&language=cs-CZÚseasonsc                 óF   — g | ]}|                      d d¦  «        dk    ¯|‘ŒS )rä  r   rì   ©rí   r  s     r8   ú
<listcomp>z7MyTVDialog._load_edit_progress_data.<locals>.<listcomp>Ê  s1   € ÐSÐSÐS Q°Q·U²U¸?ÈAÑ5NÔ5NÐQRÒ5RÐ5R˜qÐ5RÐ5RÐ5Rr9   r  ru  u   Å½Ã¡dnÃ© sezÃ³nyrN  rä  r†   r  z/season/Úepisodesz+[MyTV] EditProgress: Failed to load season ú: r  r   r€  rÑ  rw  rH  Ú
is_currentr@   z"[MyTV] EditProgress: Focus error: z"[MyTV] EditProgress: Load failed: u   NepodaÅ™ilo se naÄ�Ã­st datar0  )ÚrequestsÚwcs.metadata.TMDbClientrŠ  r,   r¢   Úraise_for_statusÚjsonrO   rK   r   r¶   rd   rÔ   r�   r¸   r)  rC   Ú_populate_season_listr¹   r|  r¤   rÓ  rÁ  rt   rg   rL  rŠ   rž   rŸ   r‹   rO  )r2   r­   r�   r•  rŠ  Úapi_keyr_  ÚresponseÚseries_datarŽ  Úregular_seasonsÚprogress_seasonÚprogress_episodeÚfocus_season_idxr¥   r®   r,  Úseason_labelÚ
season_urlÚ
s_responseÚseason_datar’  r3  Úfocus_list_idÚ
focus_listr‘  r•   s                              r8   r}  z#MyTVDialog._load_edit_progress_data»  s¡  € àˆˆˆðR	FØ@Ð@Ð@Ð@Ð@Ð@Ø&Ð& t¤zÑ2Ô2ˆGð `°WÐ_Ð_ÀwÐ_Ð_Ð_ˆCØ—|’| CÑ(Ô(ˆHØ×%Ò%Ñ'Ô'Ð'Ø"Ÿ-š-™/œ/ˆKà!—o’o i°Ñ4Ô4ˆGàSÐS¨'ÐSÑSÔSÐTWÐUWÐTWÔXˆOà"ð Ø×"Ò"Ð#=Ñ>Ô>Ð>Ø× Ò Ð!3°YÑ?Ô?Ð?Ø�õ 1@Ô0LØ˜Gñ1ô 1Ñ-ˆOÐ-ð
  !ÐÝ(¨Ñ9Ô9ð +ñ +‘��VØ# OÔ4�
Ø%Ÿzšz¨&Ñ1Ô1ÐLÐ5LÀ
Ð5LÐ5L�ð"ð "CÀGð  "Cð  "CÐU_ð  "Cð  "CÐjqð  "Cð  "Cð  "C�JØ!)§¢¨jÑ!9Ô!9�JØ×/Ò/Ñ1Ô1Ð1Ø",§/¢/Ñ"3Ô"3�KØ*Ÿš¨z¸2Ñ>Ô>�H�HøÝ ð "ð "ð "Ý”HÐ\È:Ð\Ð\ÐYZÐ\Ð\Õ^bÔ^kÑlÔlÐlØ!�H�H�H�H�H�Høøøøð"øøøð
 × Ò Ð!J¸3À¹7Ð!JÐ!JÐ!JÈLÑYÔYÐYð ×*Ò*Ø˜3‘J 
¨HØ#Ð%5ñô ð ð  Ò0Ð0Ø'*Ð$ùõ 03°?Ñ/CÔ/CˆDÔ,Ø×ÒÐ;½SÅÀ_ÑAUÔAUÑ=VÔ=VÑWÔWÐWð ×ÒÐ9Ñ:Ô:Ð:ð ×(Ò(Ð)9Ñ:Ô:Ð:ð !Ð#3Ñ3ˆMÝŒJ�s‰OŒOˆOð&Ø—’ Ñ.Ô.Ð.à!Ÿ_š_¨]Ñ;Ô;�
Ý˜zŸšÑ0Ô0Ñ1Ô1ð ð �AØ%×1Ò1°!Ñ4Ô4�DØ×'Ò'¨Ñ5Ô5¸Ò?Ð?Ø"×-Ò-¨aÑ0Ô0Ð0Ø˜ð @ðð ð ˜øÝð &ð &ð &Ý”ÐA¸aÐAÐAÅ4Ä?ÑSÔSÐSØ—’ Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%øøøøð&øøøøõ ð 	Fð 	Fð 	FÝŒHÐ=¸!Ð=Ð=½t¼}ÑMÔMÐMØ×ÒÐ9Ñ:Ô:Ð:Ø×ÒÐ;¸WÑEÔEÐEÐEÐEÐEÐEÐEÐEøøøøð	Føøøsq   †B3M Â;AM ÄAE-Å,M Å-
F(Å7'F#ÆM Æ#F(Æ(CM É6BL Ì
MÌ7MÍM ÍMÍM Í
N>Í&AN9Î9N>c                 ón  — 	 |                       |¦  «        }|                     ¦   «          |D �]É}|                     dd¦  «        }d|d›�}	t          j        |	¬¦  «        }
d}|                     d¦  «        rd|d         › �}|
                     d	|i¦  «         |
                     d
t          |¦  «        ¦  «         |
                     dt          |¦  «        ¦  «         |
                     d|	¦  «         |
                     d|                     dd¦  «        ¦  «         d}d}||k     rd}n%||k    r||k     rd}n||k    rd}d}n||dz   k    rd}|dk    r|dk    rd}|dk    o|dk    }|r/|s-|
                     dd¦  «         |
                     dd¦  «         n,|
                     dd¦  «         |
                     dd¦  «         |r|
                     dd¦  «         |                     |
¦  «         �ŒËdS # t          $ r0}t          j        d|› d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)z2Populate a season list control with episode items.rå  r   r  r  r}   r   Ú
still_pathzhttps://image.tmdb.org/t/p/w300rŠ  r,  r-  Úep_labelr  r†   FTr   ÚdimcolorÚ50FFFFFFÚ	textcolorÚ60FFFFFFÚFFFFFFFFÚBBFFFFFFr”  r@   z#[MyTV] EditProgress: Populate list z error: N)rg   rh   r¢   r„   r…   rˆ   rC   r¤   r‰   rÔ   r�   r¸   r)  )r2   Úlist_idr,  r’  rž  rŸ  r“   ÚepÚep_numr©  r•   ro  rÆ   r”  r3  s                  r8   r™  z MyTVDialog._populate_season_list  sÎ  € ð9	`ØŸ?š?¨7Ñ3Ô3ˆLØ×ÒÑ Ô Ð àð 2+ñ 2+�ØŸšÐ 0°!Ñ4Ô4�Ø+˜vÐ+Ð+Ð+�åÔ'¨hÐ7Ñ7Ô7�ð �Ø—6’6˜,Ñ'Ô'ð QØP¸bÀÔ>NÐPÐP�EØ—’˜W eÐ,Ñ-Ô-Ð-ð × Ò  ­s°:©¬Ñ?Ô?Ð?Ø× Ò  µ°F±´Ñ<Ô<Ð<Ø× Ò  ¨XÑ6Ô6Ð6Ø× Ò  °"·&²&¸ÀÑ2DÔ2DÑEÔEÐEð #�
Ø"�
à Ò/Ð/Ø!%�J�JØ ?Ò2Ð2ØÐ 0Ò0Ð0Ø%)˜
˜
ØÐ#3Ò3Ð3Ø%)˜
Ø%)˜
˜
àÐ#3°aÑ#7Ò7Ð7Ø%)˜
ð # aÒ'Ð'Ð,<ÀÒ,AÐ,AØ!&�JØ",°¢/Ð"A°fÀ²k�Jð ð > jð >Ø×$Ò$ Z°Ñ<Ô<Ð<Ø×$Ò$ [°*Ñ=Ô=Ð=Ð=à×$Ò$ Z°Ñ<Ô<Ð<Ø×$Ò$ [°*Ñ=Ô=Ð=àð ;Ø×$Ò$ \°6Ñ:Ô:Ð:à×$Ò$ TÑ*Ô*Ð*Ñ*ðe2+ð 2+øõh ð 	`ð 	`ð 	`ÝŒHÐO¸7ÐOÐOÈAÐOÐOÕQUÔQ^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_øøøøð	`øøøs   ‚G6G: Ç:
H4È%H/È/H4c                 ó¦
  — |                       d¦  «        dk    rdS d|cxk    rdk    �rön �nò	 |                      |¦  «        }|                     ¦   «         }|sdS t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }| j        }| j        }|r|sdS |d	k    r|}|d	z
  }	n|d	k    r|d	z
  }d
}	nd	}d}	t          j        ||||	¦  «         t          j	        d|d›d|	d›d|d›d|d›d�	t          j
        ¦  «         t          | dd¦  «        }
i }|
r5dD ]2}	 |
                      |¦  «        pd||<   Œ# t          $ r d||<   Y Œ/w xY w|                      d¦  «        p|                     ¦   «         pd}|                     d¦  «        pd}|                      ¦   «          t          j        || j        ¦  «         |                      ¦   «          t'          j        |¦  «        }|                     d|                     dd¦  «        ¦  «         |                     dt/          |¦  «        ¦  «         |                     dt/          |¦  «        ¦  «         |                     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¦  «        ¦  «         |r|                     d|i¦  «         || _        d&|› d'|› �}|                      d(|¦  «         |                      d)|¦  «         |r|                      d*|¦  «         |                      d+¦  «         |                      d,|d›d|d›�d-¦  «         n9# t          $ r,}t          j	        d.|› �t          j        ¦  «         Y d}~nd}~ww xY wdS |d/k    r+|                      ¦   «          |                      d0¦  «         dS dS )1zIHandle click on episode in edit progress dialog. Returns True if handled.rÐ  r@   FrÑ  rÒ  Tr,  r-  r   éc   r   z&[MyTV] EditProgress: Set progress to Sr  r  z	 (next: Sú)rè  N)r
  r€   r  r  r  r  r  rë   r  r­   r�   r   r  rŠ  r
  r®   r¯   r  r  r­   r�   r€   r  r  r  r  r  rë   r  zSezona r  rd  rî  rf  rç  zPostup nastaven: SrÛ  z"[MyTV] EditProgress: Click error: iÌ$  ræ  )rŸ   rg   r&  r´   ry  r{  r   Úupdate_progressr�   r¸   rº   rs   rÔ   r  r  rƒ  Úinvalidate_program_cacher/   r�   r„   r…   rC   r¢   r¤   rˆ   rè  rt   rK   r)  )r2   rÖ  r“   r	  r®   r¯   r­   r�   Únew_progress_seasonÚnew_progress_episodeÚold_itemÚstatic_propsr<  Úep_titleÚep_stillÚnew_itemrl  r3  s                     r8   rï  z&MyTVDialog._handle_edit_progress_clickO  sB  € à×ÒÐ3Ñ4Ô4¸Ò>Ð>Ø�5ð �9Ð$Ð$Ò$Ð$ Ò$Ñ$Ð$Ð$Ñ$ðgRØ#Ÿš¨yÑ9Ô9�Ø'×7Ò7Ñ9Ô9�Øð  Ø˜4å˜X×1Ò1°,Ñ?Ô?Ñ@Ô@�Ý˜h×2Ò2°=ÑAÔAÑBÔB�ØÔ5�Ø!Ô;�
àð   jð  Ø˜4ð ˜Q’;�;Ø*0Ð'Ø+2°Q©;Ð(Ð(ð  ’z�zØ.4°q©jÐ+Ø/1Ð,Ð,à./Ð+Ø/0Ð,õ  Ô/Ø Ð)<Ð>Rñô ð õ ”ð;Ð=PÐrð ;ð ;ÐWkÐrð ;ð ;Ø%Ð:ð;ð ;Ø,3Ð:ð;ð ;ð ;å”Lñô ð õ # 4Ð)?ÀÑFÔF�Ø!�Øð 4ð!:ð 4ð 4˜ð4Ø19×1EÒ1EÀdÑ1KÔ1KÐ1QÈr˜L¨Ñ.Ð.øÝ(ð 4ð 4ð 4Ø13˜L¨Ñ.Ð.Ð.ð4øøøð
 $×/Ò/°Ñ@Ô@Ð]ÀH×DUÒDUÑDWÔDWÐ]Ð[]�Ø#Ÿ?š?¨7Ñ3Ô3Ð9°r�ð ×/Ò/Ñ1Ô1Ð1õ  Ô8¸ÀTÄ[ÑQÔQÐQà×)Ò)Ñ+Ô+Ð+õ #Ô+¨HÑ5Ô5�Ø×$Ò$ ]°L×4DÒ4DÀ]ÐTVÑ4WÔ4WÑXÔXÐXØ×$Ò$ X­s°6©{¬{Ñ;Ô;Ð;Ø×$Ò$ Yµ°G±´Ñ=Ô=Ð=Ø×$Ò$ _°hÑ?Ô?Ð?Ø×$Ò$ YÐ0N°FÐ0NÐ0NÐ0NÀÐ0NÐ0NÐ0NÑOÔOÐOØ×$Ò$ Y°×0@Ò0@ÀÈBÑ0OÔ0OÑPÔPÐPØ×$Ò$ \°<×3CÒ3CÀLÐRTÑ3UÔ3UÑVÔVÐVØ×$Ò$ X¨|×/?Ò/?ÀÈ"Ñ/MÔ/MÑNÔNÐNØ×$Ò$ X¨|×/?Ò/?ÀÈ"Ñ/MÔ/MÑNÔNÐNØ×$Ò$ ]°L×4DÒ4DÀ]ÐTVÑ4WÔ4WÑXÔXÐXØ×$Ò$ V¨\×-=Ò-=¸fÀbÑ-IÔ-IÑJÔJÐJØ×$Ò$ V¨\×-=Ò-=¸fÀbÑ-IÔ-IÑJÔJÐJØ×$Ò$ W¨l×.>Ò.>¸wÈÑ.KÔ.KÑLÔLÐLØ×$Ò$ Y°×0@Ò0@ÀÈBÑ0OÔ0OÑPÔPÐPØ×$Ò$ X¨|×/?Ò/?ÀÈ"Ñ/MÔ/MÑNÔNÐNØð 9Ø—O’O W¨hÐ$7Ñ8Ô8Ð8Ø,4�Ô)ð C¨ÐBÐB¸ÐBÐB�Ø× Ò Ð!8¸+ÑFÔFÐFØ× Ò Ð!9¸8ÑDÔDÐDØð GØ×$Ò$Ð%;¸XÑFÔFÐFð —’ Ñ%Ô%Ð%à× Ò ØC¨ÐCÐCÐC°gÐCÐCÐCØñô ð ð øõ
 ð Rð Rð RÝ”ÐA¸aÐAÐAÅ4Ä=ÑQÔQÐQÐQÐQÐQÐQÐQøøøøðRøøøà�4ð ˜ÒÐØ×+Ò+Ñ-Ô-Ð-à�OŠO˜DÑ!Ô!Ð!Ø�4àˆusJ   ¯+S% ÁAS% Â4B S% Ä5EÅS% ÅE"ÅS% Å!E"Å"NS% Ó%
TÓ/"TÔTc                 ój  — |                       d¦  «        dk    rdS |                     ¦   «         }|t          j        t          j        fv r+|                      ¦   «          |                      d¦  «         dS |                      ¦   «         }d|cxk    rdk    rn n|dz
  }|                      |¦  «         dS )zDHandle back/escape in edit progress dialog. Returns True if handled.rÐ  r@   Fræ  TrÑ  rÒ  )	rŸ   r´  r„   r¸  r¹  rƒ  rt   rµ  rÓ  )r2   rÅ  rÆ  rÇ  r×  s        r8   r±  z'MyTVDialog._handle_edit_progress_actionÉ  sÃ   € à×ÒÐ3Ñ4Ô4¸Ò>Ð>Ø�5à—L’L‘N”Nˆ	Ø�Ô5µwÔ7NÐOÐOÐOØ×+Ò+Ñ-Ô-Ð-à�OŠO˜DÑ!Ô!Ð!Ø�4ð —_’_Ñ&Ô&ˆ
Ø�:Ð%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ø# dÑ*ˆJØ×(Ò(¨Ñ4Ô4Ð4àˆur9   c                 óz  — |                       d¦  «        }|                     ¦   «         }|sdS |                       d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd}| j                             d¦  «        }|                      ¦   «          |                     d¦  «        pd}|�rIt          j        t          j        ¦  «        }| 	                    ¦   «          t          j        |¦  «        }	t          j        | j                             d¦  «        |	|¦  «        }
t          j        |	¦  «        }|                     |
|¦  «         t          j        ¦   «                              |¦  «         |                      ||¦  «         d	d
lm}  |¦   «                              ||t-          |                     d¦  «        pd	¦  «        t-          |                     d¦  «        pd	¦  «        dœ¬¦  «         dS d	dlm}  ||                     d¦  «        pdt-          |                     d¦  «        pd	¦  «        t-          |                     d¦  «        pd	¦  «        |                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd| j        |                     d¦  «        pd|                     d¦  «        pd||                     d¦  «        pd¬¦  «         dS )a  Play the hero zone episode directly (respects autoplay setting).
        
        Gets the current item from program list (9000) - the same item
        displayed in the hero zone - and plays it directly without showing
        the play selection dialog.
        r\   Nr|   r�   r   Úautoplay_first_itemr­   rf   r   rO  r®   r¯   ©r�   r­   r®   r¯   ©Úmeta©Úsearch_and_play_episoder
  r  r  r€   r  r  r  r  rŠ  ©r
  r®   r¯   Úep_namer  r€   r  r  r  r,   r  r­   Úmytv_channel_idr•  )rg   r&  rŸ   r,   ÚgetSettingBoolrQ  r�   rR  rS  rT  r   rV  rW  rU  rX  rõ   rC  rY  rL  rZ  rP  r[  r´   Ú	wcs.utilsrÆ  r  )r2   r“   r•   r0  Úcurrentr�   Úautoplayr­   r\  rÀ   r_  r`  rP  rÆ  s                 r8   rü  zMyTVDialog._play_hero_episodeÞ  sL  € ð —’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	ØˆFð —’ tÑ,Ô,ˆØ×.Ò.Ñ0Ô0ˆØ:AÐI�W×(Ò(¨Ñ6Ô6Ð6Àrˆ
ð ”:×,Ò,Ð-BÑCÔCˆà�
Š
‰Œˆà×"Ò" 9Ñ-Ô-Ð3°ˆàñ (	å”}¥TÔ%8Ñ9Ô9ˆHØ�NŠNÑÔÐå'Ô9¸$Ñ?Ô?ˆIÝ!Ô4°T´Z×5LÒ5LÈTÑ5RÔ5RÐT]Ð_iÑjÔjˆCÝ Ô8¸ÑCÔCˆBØ�LŠL˜˜bÑ!Ô!Ð!ÝŒK‰MŒM×Ò˜xÑ(Ô(Ð(ð × Ò  ¨WÑ5Ô5Ð5ð SÐRÐRÐRÐRÐRØ Ð Ñ"Ô"×+Ò+Ø(Ø"Ý˜d×.Ò.¨xÑ8Ô8Ð=¸AÑ>Ô>Ý˜t×/Ò/°	Ñ:Ô:Ð?¸aÑ@Ô@ð	2ð 2Ð+ñ ô ð ð ð ð :Ð9Ð9Ð9Ð9Ð9Ø#Ð#Ø ×,Ò,¨]Ñ;Ô;ÐA¸rÝ˜4×+Ò+¨HÑ5Ô5Ð:¸Ñ;Ô;Ý˜D×,Ò,¨YÑ7Ô7Ð<¸1Ñ=Ô=Ø×(Ò(¨Ñ9Ô9Ð?¸RØ×%Ò% fÑ-Ô-Ð3°Ø×'Ò'¨Ñ1Ô1Ð7°RØ×'Ò'¨Ñ1Ô1Ð7°RØ×'Ò'¨Ñ1Ô1Ð7°RØ×&Ò& wÑ/Ô/Ð5°2Ø”jØ×%Ò% fÑ-Ô-Ð3°Ø×(Ò(¨Ñ3Ô3Ð9°rØ *Ø"Ÿkšk¨'Ñ2Ô2Ð8°bðñ ô ð ð ð r9   c                 ó  ‡— t          | dd¦  «        }|sdS |                      d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd}| j                             d¦  «        }|                      ¦   «          dŠ|                     d¦  «        pd}|rA|r?	 dd	lm}  |j	        ||¦  «        }|r|d
         dk    r|d
         Šn# t          $ r Y nw xY w|�rkt          j        t          j        ¦  «        }	|	                     ¦   «          t          j        |¦  «        }
t          j        | j                             d¦  «        |
|¦  «        }t          j        |
¦  «        }|	                     ||¦  «         t          j        ¦   «                              |	¦  «         ‰dk    r2ˆfd„}ddl}|                     |d¬¦  «                             ¦   «          ddlm}  |¦   «                              ||t;          |                     d¦  «        pd¦  «        t;          |                     d¦  «        pd¦  «        dœ¬¦  «         dS ddlm}  ||                     d¦  «        pdt;          |                     d¦  «        pd¦  «        t;          |                     d¦  «        pd¦  «        |                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd|                     d¦  «        pd| j        |                     d¦  «        pd|                     d¦  «        pd||                      d¦  «        pd¬¦  «         dS ) zÑPlay only the selected single episode.
        
        Respects autoplay_first_item setting:
        - true: autoplay best source via playlist
        - false: show search dialog for source selection
        rè  Nr|   r�   r   rÁ  r   r­   r   r  r  rf   c                  ó¶  •— dd l } t          d¦  «        D ]Ã}|                      d¦  «         	 t          j        ¦   «                              ¦   «         rvt          j        ¦   «                              ¦   «         dk    rMt          j        ¦   «                              ‰¦  «         t          j        d‰d›d�t          j	        ¦  «          d S Œ´# t          $ r Y ŒÀw xY wd S )Nr   r°  r?  z"[MyTV] Play Selection: Resumed at r@  r  rA  rG  s     €r8   Ú_seek_after_startz:MyTVDialog._play_single_episode.<locals>._seek_after_startN	  sã   ø€ Ø(Ð(Ð(Ð(Ý" 2™YœYð !ð !˜ØŸš CÑ(Ô(Ð(ð!Ý#œ{™}œ}×6Ò6Ñ8Ô8ð '½T¼[¹]¼]×=RÒ=RÑ=TÔ=TÐWXÒ=XÐ=XÝ $¤¡¤× 6Ò 6°Ñ GÔ GÐ GÝ $¤Ð)dÈoÐ)dÐ)dÐ)dÐ)dÕfjÔfrÑ sÔ sÐ sØ &  øøÝ(ð !ð !ð !Ø ˜Dð!øøøð!ð !rK  Tr8  rO  r®   r¯   rÂ  rÃ  rÅ  r
  r  r  r€   r  r  r  r  rŠ  rÇ  )!rs   rg   r&  rŸ   r,   rÊ  rQ  r'  r   r(  rÔ   r�   rR  rS  rT  r   rV  rW  rU  rX  rõ   rC  rY  rA   r:  rG   rZ  rP  r[  r´   rË  rÆ  r  )r2   Úselected_itemr0  rÌ  r�   rÍ  r­   r   r2  r\  rÀ   r_  r`  rÐ  rA   rP  rÆ  rI  s                    @r8   r  zMyTVDialog._play_single_episode 	  s  ø€ õ   Ð&<¸dÑCÔCˆØð 	ØˆFð —’ tÑ,Ô,ˆØ×.Ò.Ñ0Ô0ˆØ:AÐI�W×(Ò(¨Ñ6Ô6Ð6Àrˆ
ð ”:×,Ò,Ð-BÑCÔCˆà�
Š
‰Œˆð ˆØ×+Ò+¨IÑ6Ô6Ð<¸"ˆØð 	˜'ð 	ðØ1Ð1Ð1Ð1Ð1Ð1Ø8˜Ô8¸ÀWÑMÔM�Øð 9˜f ZÔ0°2Ò5Ð5Ø&,¨ZÔ&8�OøøÝð ð ð Ø�ðøøøð ñ 5	å”}¥TÔ%8Ñ9Ô9ˆHØ�NŠNÑÔÐå'Ô9¸-ÑHÔHˆIÝ!Ô4°T´Z×5LÒ5LÈTÑ5RÔ5RÐT]Ð_iÑjÔjˆCÝ Ô8¸ÑCÔCˆBØ�LŠL˜˜bÑ!Ô!Ð!ÝŒK‰MŒM×Ò˜xÑ(Ô(Ð(ð  Ò"Ð"ð
!ð 
!ð 
!ð 
!ð 
!ð !Ð Ð Ð Ø× Ò Ð(9À$Ð ÑGÔG×MÒMÑOÔOÐOð SÐRÐRÐRÐRÐRØ Ð Ñ"Ô"×+Ò+Ø(Ø"Ý˜m×7Ò7¸ÑAÔAÐFÀQÑGÔGÝ˜}×8Ò8¸ÑCÔCÐHÀqÑIÔIð	2ð 2Ð+ñ ô ð ð ð ð :Ð9Ð9Ð9Ð9Ð9Ø#Ð#Ø)×5Ò5°mÑDÔDÐJÈÝ˜=×4Ò4°XÑ>Ô>ÐCÀ!ÑDÔDÝ˜M×5Ò5°iÑ@Ô@ÐEÀAÑFÔFØ%×1Ò1°/ÑBÔBÐHÀbØ"×.Ò.¨vÑ6Ô6Ð<¸"Ø$×0Ò0°Ñ:Ô:Ð@¸bØ$×0Ò0°Ñ:Ô:Ð@¸bØ$×0Ò0°Ñ:Ô:Ð@¸bØ#×/Ò/°Ñ8Ô8Ð>¸BØ”jØ"×.Ò.¨vÑ6Ô6Ð<¸"Ø%×1Ò1°)Ñ<Ô<ÐBÀØ *Ø+×2Ò2°7Ñ;Ô;ÐA¸rðñ ô ð ð ð s   Â%-C Ã
C ÃC c                 óš  — ddl m} t          | dd¦  «        }|s)|                      d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d	¦  «        }|r|r|sdS 	 | j                             d
¦  «        }|rt          |¦  «        nd}	n	#  d}	Y nxY w|                      d¦  «        }
|
                     ¦   «         }|r|                     d¦  «        nd}|  	                    ¦   «          t          j        t          j        ¦  «        }|                     ¦   «          | j                             d¦  «        }t          j        |¦  «        }t          j        |||¦  «        }t          j        |¦  «        }|                     ||¦  «         t          |¦  «        }t          |¦  «        }d}||	k     röd|› d|› d|dz   › �}| j                             |¦  «        }|s<|                     |||| j        ¦  «        }|r| j                             ||d¬¦  «         |sn�t          j        |||¦  «        }t          j        |||¦  «        }t          j        |¦  «        }|                     ||¦  «         |dz  }|                     d|¦  «        }|                     d	|¦  «        }||	k     °öt          j        ¦   «                              |¦  «         |                      ||¦  «         ddlm}  |¦   «                              ¦   «          dS )zLPlay only episodes from the selected series, starting from selected episode.r   rY  rè  Nr\   r
  r­   r®   r¯   rÊ   rË   r|   r�   r   rf   r   r_  r`  ra  r±   rO  )rc  rZ  rs   rg   r&  rŸ   r,   rÓ   r´   rQ  r�   rR  rS  rT  rU  r   rV  rW  rX  rõ   r/   r¢   rg  r·   Úextract_from_tmdb_metarC  rY  rL  rZ  rP  r[  )r2   rZ  rÑ  r“   r
  Úselected_tmdb_idÚselected_seasonÚselected_episoderÛ   rÜ   r0  r^  r�   r\  r]  Ú
first_dataÚ	first_urlÚfirst_liÚcurr_seasonÚcurr_episoder„  r¼   r}  rÀ   r_  r`  rP  s                              r8   rþ  zMyTVDialog._play_series_onlyx	  s”  € à+Ð+Ð+Ð+Ð+Ð+å Ð&<¸dÑCÔCˆØð 	;àŸ?š?¨4Ñ0Ô0ˆLØ(×8Ò8Ñ:Ô:ˆMØð 	ØˆFà#×/Ò/°Ñ>Ô>ˆØ(×4Ò4°YÑ?Ô?ÐØ'×3Ò3°HÑ=Ô=ˆØ(×4Ò4°YÑ?Ô?Ðàð 	 ð 	Ð>Nð 	ØˆFð	 Ø!%¤×!6Ò!6Ð7LÑ!MÔ!MÐØ8JÐR�SÐ!3Ñ4Ô4Ð4ÐPRˆNˆNøð	 ØˆNˆNˆNøøøð —’ tÑ,Ô,ˆØ+×;Ò;Ñ=Ô=ÐØG[ÐcÐ)×5Ò5°lÑCÔCÐCÐacˆ
à�
Š
‰Œˆõ ”=¥Ô!4Ñ5Ô5ˆØ�ŠÑÔÐð ”:×*Ò*¨4Ñ0Ô0ˆÝ$Ô6°}ÑEÔEˆ
Ý#Ô6°xÀÈZÑXÔXˆ	Ý"Ô:¸:ÑFÔFˆØ�Š�Y Ñ)Ô)Ð)õ ˜/Ñ*Ô*ˆÝÐ+Ñ,Ô,ˆØˆà˜NÒ*Ð*àVÐ#3ÐVÐV°kÐVÐVÀLÐSTÑDTÐVÐVˆIØœŸš¨	Ñ2Ô2ˆIàð UØ&×AÒAÐBRÐT_ÐamÐosÔoyÑzÔz�	Øð UØ”K—O’O I¨yÀm�OÑTÔTÐTàð Øå'Ô>¸yÈ+ÐWgÑhÔhˆIÝ!Ô4°X¸yÈ*ÑUÔUˆCÝ Ô8¸ÑCÔCˆBà�LŠL˜˜bÑ!Ô!Ð!Ø˜1ÑˆKØ#Ÿ-š-¨°+Ñ>Ô>ˆKØ$Ÿ=š=¨°LÑAÔAˆLð) ˜NÒ*Ð*õ, 	Œ‰Œ×Ò˜8Ñ$Ô$Ð$ð 	×Ò˜ZÐ)9Ñ:Ô:Ð:ð 	OÐNÐNÐNÐNÐNØÐÑÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)s   Â$-C ÃCc                 óž  — ddl }ddlm} t          | dd¦  «        }|sdS |                      d¦  «        }|                     ¦   «         }|                     ¦   «         }	 | j                             d¦  «        }|rt          |¦  «        nd}n	#  d}Y nxY w| j                             d¦  «        pd	}	d
\  }
}d|	v rH	 |	 
                    d¦  «        }t          |d         ¦  «        t          |d         ¦  «        }}
n##  Y nxY w	 t          |	¦  «        }|x}
}n#  Y nxY w|                      d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd}| j                             |¦  «        }|rt          |d¦  «        r|j        ng }|                      ¦   «          t%          j        t$          j        ¦  «        }|                     ¦   «          d}i }| j                             d¦  «        }t/          ||¦  «        D ]Þ}||k    r nÕ|                     |¦  «        }t3          j        |¦  «        }t3          j        |||¦  «        }t3          j        |¦  «        }|                     ||¦  «         |dz  }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|r%|r#|r!t          |¦  «        t          |¦  «        f||<   Œß||k     �r0|�r-g }|D ]{} t=          |                      d¦  «        ¦  «        }!|                      d¦  «        }"|!|v r||!         \  }#}$ntA          j!        ||!¦  «        \  }#}$| "                    |!|"|#|$dœ¦  «         Œ|| #                    |¦  «         d}%||z
  dz  }&d}'||k     �r…|�r‚|'|&k     �r{|'dz  }'||%tI          |¦  «        z           }(|%dz  }%| %                    |
|¦  «        })t/          |)¦  «        D �]#}*||k    r �n|(d         }!|(d         }"|(d         }#|(d         }$d|!› d|#› d|$dz   › �}+| j&                             |+¦  «        },|,s<| '                    |!|#|$| j        ¦  «        },|,r| j&         (                    |+|,d¬¦  «         |,s n�t3          j)        |,|"|!¦  «        }t3          j        |||¦  «        }t3          j        |¦  «        }|                     ||¦  «         |dz  }|,                     d|#¦  «        |(d<   |,                     d|$¦  «        |(d<   �Œ%||k     r	|r|'|&k     �°{|                     ¦   «         dk    r–||k     r|                     |¦  «        nd}-|-r|-                     d¦  «        nd}.t%          j*        ¦   «          +                    |¦  «         |  ,                    ||.¦  «         ddl-m.}/  |/¦   «          /                    ¦   «          dS dS )zLPlay channel mix starting from selected position, generating more if needed.r   NrY  rè  r\   rÊ   rË   r[  r\  r]  r^  r   r|   r�   r   r¡   rf   r­   r®   r¯   r†   )rf   r†   r®   r¯   r   r_  r`  ra  r±   rO  )0rb  rc  rZ  rs   rg   rŠ   rŒ   r,   rÓ   r´   r  r&  rŸ   r-   r    r³   r¡   rQ  r�   rR  rS  rT  rU  rL  rž   r   rV  rW  rX  rõ   r¤   r¢   r   r¶   rµ   rØ   r¹   rf  r/   rg  r·   rÓ  rC  rY  rL  rZ  rP  r[  )0r2   rb  rZ  rÑ  r“   rŠ   Úselected_posrÛ   rÜ   rn  ro  rp  r+  rq  r0  r^  r�   rx   r¡   r\  r„  Úseries_progressr]  r‘  r•   rÀ   r_  r`  r­   r®   r¯   rr  r§   rœ   r
  r{  r|  ru  rv  rw  Ú	candidaterz  r`  r¼   r}  ra  rb  rP  s0                                                   r8   r  z&MyTVDialog._play_channel_from_selectedÉ	  s½  € àˆˆˆØ+Ð+Ð+Ð+Ð+Ð+å Ð&<¸dÑCÔCˆØð 	ØˆFà—’ tÑ,Ô,ˆØ× Ò Ñ"Ô"ˆØ#×7Ò7Ñ9Ô9ˆð	 Ø!%¤×!6Ò!6Ð7LÑ!MÔ!MÐØ8JÐR�SÐ!3Ñ4Ô4Ð4ÐPRˆNˆNøð	 ØˆNˆNˆNøøøà!œZ×2Ò2Ð3DÑEÔEÐLÈÐØ#Ñˆ	�9ØÐ$Ð$Ð$ðØ*×0Ò0°Ñ5Ô5�Ý'*¨5°¬8¡}¤}µc¸%À¼(±m´m˜9�	�	øðØ�øøøðÝÐ,Ñ-Ô-�Ø(+Ð+�	˜I˜IøðØ�øøøð —’ tÑ,Ô,ˆØ+×;Ò;Ñ=Ô=ÐØG[ÐcÐ)×5Ò5°lÑCÔCÐCÐacˆ
àÔ&×8Ò8¸ÑDÔDˆØ-4Ð`½ÀÈ-Ñ9XÔ9XÐ`�gÔ)Ð)Ð^`ˆà�
Š
‰Œˆõ ”=¥Ô!4Ñ5Ô5ˆØ�ŠÑÔÐàˆð ˆà”:×*Ò*¨4Ñ0Ô0ˆå�| TÑ*Ô*ð 	Gð 	GˆAØ˜nÒ,Ð,Ø�à×+Ò+¨AÑ.Ô.ˆDÝ'Ô9¸$Ñ?Ô?ˆIÝ!Ô4°X¸yÈ*ÑUÔUˆCÝ Ô8¸ÑCÔCˆBØ�LŠL˜˜bÑ!Ô!Ð!Ø˜1ÑˆKð ×&Ò& yÑ1Ô1ˆGØ×%Ò% hÑ/Ô/ˆFØ×&Ò& yÑ1Ô1ˆGØð G˜6ð G gð GÝ,/°©K¬K½¸W¹¼Ð+F� Ñ(øð ˜Ò'Ñ'¨KÑ'à "ÐØ%ð ð �Ý §
¢
¨4Ñ 0Ô 0Ñ1Ô1�	Ø$Ÿjšj¨Ñ0Ô0�Ø Ð/Ð/Ø%4°YÔ%?‘N�F˜F˜Fõ &5Ô%AÀ*ÈiÑ%XÔ%X‘N�F˜FØ!×(Ò(Ø#Ø'Ø$Ø%ð	*ð *ñ ô ð ð ð �NŠNÐ,Ñ-Ô-Ð-ØˆMØ'¨+Ñ5¸Ñ:ˆIØˆEà Ò.Ñ.Ð3DÑ.ÈÐQZÒIZÑIZØ˜‘
�à-¨m½cÐBSÑ>TÔ>TÑ.TÔU�	Ø Ñ"�à#Ÿ^š^¨I°yÑAÔA�
å˜zÑ*Ô*ð Lñ L�AØ" nÒ4Ð4Ø™à )¨$¤�IØ"+¨FÔ"3�KØ& xÔ0�FØ& yÔ1�Fð !M¨9Ð LÐ L°vÐ LÐ LÀÈÁ
Ð LÐ L�IØ $¤§¢°	Ñ :Ô :�Ià$ð ]Ø$.×$IÒ$IÈ)ÐU[Ð]cÐeiÔeoÑ$pÔ$p˜	Ø$ð ]Ø œKŸOšO¨I°yÈm˜OÑ\Ô\Ð\à$ð Ø˜å /Ô FÀyÐR]Ð_hÑ iÔ i�IÝ)Ô<¸XÀyÐR\Ñ]Ô]�CÝ(Ô@ÀÑKÔK�Bà—L’L  bÑ)Ô)Ð)Ø 1Ñ$�Kð +4¯-ª-¸À&Ñ*IÔ*I�I˜hÑ'Ø+4¯=ª=¸ÀFÑ+KÔ+K�I˜iÑ(Ñ(ðM  Ò.Ð.Ð3DÐ.ÈÐQZÒIZÑIZðP �=Š=‰?Œ?˜QÒÐàCOÐRVÒCVÐCV˜×1Ò1°,Ñ?Ô?Ð?Ð\`ˆJØAKÐS˜J×2Ò2°9Ñ=Ô=Ð=ÐQSˆMåŒK‰MŒM×Ò˜xÑ(Ô(Ð(ð × Ò  ¨]Ñ;Ô;Ð;ð SÐRÐRÐRÐRÐRØ Ð Ñ"Ô"×+Ò+Ñ-Ô-Ð-Ð-Ð-ð Ðs$   Á-B ÂBÂ;?C; Ã;C?ÄD ÄDc                 óÔ  — |                       d¦  «        }|                     ¦   «         }|sd S |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }	|                     d	¦  «        }
|                     d
¦  «        }|                     d¦  «        }|                     d¦  «        }|r|r|sd S |                       d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd}|                     d¦  «        pd}|                      ¦   «          d| j                             d¦  «        › dt          |¦  «        › d|› d|› d|› dt          |¦  «        › dt          |¦  «        › dt          |	¦  «        › dt          |
¦  «        › dt          |¦  «        › dt          |¦  «        › dt          |¦  «        › dt          |¦  «        › dt          |¦  «        › �}t          j	        d |› d!�¦  «         d S )"Nr\   r
  r®   r¯   r­   r  r  r  r€   r  r  r  r|   r�   r   rŠ  ú	plugin://rf   ú,?action=play_episode_from_addon&series_name=ú&season_number=ú&episode_number=ú	&tmdb_id=ú&episode_title=ú&plot=ú&rating=ú&poster=ú&fanart=z&genre=ú&year=z&episode_thumb=ú&mytv_channel_id=ú
PlayMedia(rµ  )
rg   r&  rŸ   r  rQ  r,   rU  r   r�   rŽ   )r2   r“   r•   r
  r®   r¯   r­   r  r  r  r€   r  r  r  r0  r^  r�   r•  r_  s                      r8   Ú_play_program_itemzMyTVDialog._play_program_itemd
  sÜ  € Ø—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØÐ�V�Và×&Ò& }Ñ5Ô5ˆØ×!Ò! (Ñ+Ô+ˆØ×"Ò" 9Ñ-Ô-ˆØ×"Ò" 9Ñ-Ô-ˆð ×(Ò(¨Ñ9Ô9ˆØ×Ò Ñ'Ô'ˆØ×!Ò! (Ñ+Ô+ˆØ×!Ò! (Ñ+Ô+ˆØ×!Ò! (Ñ+Ô+ˆØ× Ò  Ñ)Ô)ˆØ×Ò Ñ'Ô'ˆàð 	 &ð 	°ð 	ØˆVð —’ tÑ,Ô,ˆØ+×;Ò;Ñ=Ô=ÐØG[ÐcÐ)×5Ò5°lÑCÔCÐCÐacˆ
ð Ÿš GÑ,Ô,Ð2°ˆà�
Š
‰Œˆð<˜4œ:×2Ò2°4Ñ8Ô8ð <ð <Ý)¨+Ñ6Ô6ð<ð <à!'ð<ð <ð #*ð<ð <ð #ð	<ð <õ
 ",¨MÑ!:Ô!:ð<ð <õ # 4Ñ(Ô(ð<ð <õ % VÑ,Ô,ð<ð <õ % VÑ,Ô,ð<ð <õ % VÑ,Ô,ð<ð <õ $ EÑ*Ô*ð<ð <õ # 4Ñ(Ô(ð<ð <õ ",¨MÑ!:Ô!:ð<ð <õ $.¨jÑ#9Ô#9ð<ð <ˆõ 	ÔÐ/¨Ð/Ð/Ð/Ñ0Ô0Ð0Ð0Ð0r9   c                 óŠ  — |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }| j                             |¦  «        }|s|                      dd¦  «         dS |                      ¦   «          |                     d¦  «        p|                     d¦  «        }|                     d¦  «        }|                     d	¦  «        }d
| j         	                    d¦  «        › dt          |¦  «        › d|› d|› d|                     dd¦  «        › dt          |                     dd¦  «        ¦  «        › dt          |                     dd¦  «        ¦  «        › dt          t          |                     dd¦  «        ¦  «        ¦  «        › dt          |                     dd¦  «        ¦  «        › dt          |                     dd¦  «        ¦  «        › dt          t          |                     dd¦  «        ¦  «        ¦  «        › dt          |¦  «        › �}t          j        d|› d �¦  «         dS )!uH   SpustÃ­ pÅ™ehrÃ¡vÃ¡nÃ­ aktuÃ¡lnÃ­ho kanÃ¡lu (nÃ¡hodnÃ¡ epizoda Next Up).r|   Nr�   u'   KanÃ¡l nemÃ¡ Å¾Ã¡dnÃ© dostupnÃ© epizodyrN  r
  Úseries_titlerä  rå  rá  rf   râ  rã  rä  rå  r­   r   ræ  r  rç  Úepisode_plotrè  Úepisode_ratingré  Úseries_posterrê  Úseries_fanartrë  Úepisode_yearrì  rí  rµ  )rg   r&  rŸ   r-   Úget_random_episode_for_channelrK   rQ  r¢   r,   rU  r   r¤   r�   rŽ   )	r2   r“   r•   r�   Únext_episoder
  r®   r¯   r_  s	            r8   Ú_play_current_channelz MyTVDialog._play_current_channel–
  sƒ  € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØÐ�V�Và×%Ò% lÑ3Ô3ˆ
ð Ô+×JÒJÈ:ÑVÔVˆàð 	Ø×ÒÐFÈ	ÑRÔRÐRØˆFà�
Š
‰Œˆð #×&Ò& }Ñ5Ô5ÐY¸×9IÒ9IÈ.Ñ9YÔ9YˆØ×!Ò! /Ñ2Ô2ˆØ×"Ò"Ð#3Ñ4Ô4ˆð<˜4œ:×2Ò2°4Ñ8Ô8ð <ð <Ý)¨+Ñ6Ô6ð<ð <à!'ð<ð <ð #*ð<ð <ð (×+Ò+¨I°rÑ:Ô:ð	<ð <õ
 ",¨L×,<Ò,<¸_ÈbÑ,QÔ,QÑ!RÔ!Rð<ð <õ # <×#3Ò#3°NÀBÑ#GÔ#GÑHÔHð<ð <õ %¥S¨×)9Ò)9Ð:JÈBÑ)OÔ)OÑ%PÔ%PÑQÔQð<ð <õ % \×%5Ò%5°oÀrÑ%JÔ%JÑKÔKð<ð <õ % \×%5Ò%5°oÀrÑ%JÔ%JÑKÔKð<ð <õ #¥3 |×'7Ò'7¸ÈÑ'KÔ'KÑ#LÔ#LÑMÔMð<ð <õ $.¨jÑ#9Ô#9ð<ð <ˆõ 	ÔÐ/¨Ð/Ð/Ð/Ñ0Ô0Ð0Ð0Ð0r9   c                 óL   — dddœdddœdddœg}|                       |¦  «         dS )	z9Populate chat sidebar buttons with MyTV-specific options.u   VytvoÅ™it Comedy Channelzcreate_channel:comedy)r~   rQ  u   VytvoÅ™it Drama Channelzcreate_channel:dramau   VytvoÅ™it Scifi Channelzcreate_channel:scifiN)Úupdate_buttons)r2   Úbuttonss     r8   Ú_populate_mytv_chat_buttonsz&MyTVDialog._populate_mytv_chat_buttons»
  sK   € ð 1Ð;RÐSÐSØ/Ð:PÐQÐQØ/Ð:PÐQÐQð
ˆð
 	×Ò˜GÑ$Ô$Ð$Ð$Ð$r9   c                 ó”  — d| _         	 |                      d¦  «        }|                     ¦   «         }|s
	 d| _         d S |                     d¦  «        dk    r|                      ¦   «          	 d| _         d S |                     d¦  «        }|                     d¦  «        }|                      ||¦  «         d| _         d S # d| _         w xY w)NTr˜   Fr�   r@   rœ   r�   )r  rg   r&  rŸ   r  rø  )r2   Úgridr•   rœ   r�   s        r8   ró  zMyTVDialog._handle_grid_clickÄ
  sé   € à"ˆÔð	(Ø—?’? 4Ñ(Ô(ˆDØ×'Ò'Ñ)Ô)ˆDØÐ˜ð #(ˆDÔÐÐð ×Ò Ñ0Ô0°FÒ:Ð:à×,Ò,Ñ.Ô.Ð.Øð #(ˆDÔÐÐð	 ×(Ò(¨Ñ5Ô5ˆIØ×)Ò)¨,Ñ7Ô7ˆJØ×+Ò+¨I°zÑBÔBÐBà"'ˆDÔÐÐø %ˆDÔÐ'Ð'Ð'Ð's   ‰+B> ¾-B> Á5A B> Â>	Cc                 ó¢  ‡	— d| _         	 t          j        | j        ¦  «        }|s |                      dd¦  «         	 d| _         d S |                      d¦  «        }|                     ¦   «                              d¦  «        }| j         	                    |¦  «        }d„ |j
        D ¦   «         Š	ˆ	fd„|D ¦   «         }|s |                      d	d
¦  «         	 d| _         d S d„ |D ¦   «         }t          j        ¦   «                              d|¦  «        }|r«|D ]#}| j                             |||         ¦  «         Œ$| j                             |¦  «         |                      ¦   «          |                      d¬¦  «         |                      d¬¦  «         |                      d¦  «         |                      dd¦  «         d| _         d S # d| _         w xY w)NTu&   Nenalezeny Å¾Ã¡dnÃ© uloÅ¾enÃ© seriÃ¡lyrN  Fr|   r�   c                 óR   — g | ]$}t          |                     d ¦  «        ¦  «        ‘Œ%S ©rf   ©r¤   r¢   r�  s     r8   r‘  z2MyTVDialog._add_from_my_series.<locals>.<listcomp>ç
  s*   € ÐIÐIÐI°�3˜qŸušu T™{œ{Ñ+Ô+ÐIÐIÐIr9   c                 ó\   •— g | ](}t          |                     d ¦  «        ¦  «        ‰v¯&|‘Œ)S r  r  )rí   r  Úcurrent_idss     €r8   r‘  z2MyTVDialog._add_from_my_series.<locals>.<listcomp>é
  s5   ø€ ÐVÐVÐV µ#°a·e²e¸D±k´kÑ2BÔ2BÈ+Ð2UÐ2U˜!Ð2UÐ2UÐ2Ur9   u*   VÅ¡echny vaÅ¡e seriÃ¡ly uÅ¾ jsou v kanÃ¡lur:   c                 ól   — g | ]1}|                      d ¦  «        › d|                      dd¦  «        › d�‘Œ2S )r†   ú (r  r   rµ  rì   r�  s     r8   r‘  z2MyTVDialog._add_from_my_series.<locals>.<listcomp>ð
  sA   € ÐSÐSÐSÀ1˜Ÿš˜v™œÐ>Ð>¨!¯%ª%°¸Ñ*;Ô*;Ð>Ð>Ð>ÐSÐSÐSr9   u   PÅ™idat do kanÃ¡lurÚ  r]   r˜   u   SeriÃ¡ly pÅ™idÃ¡nyrÛ  )r  r
   Úload_tmdb_seriesr,   rK   rg   r&  rŸ   r-   r    r¡   r„   ÚDialogÚmultiselectr*  Úgenerate_channel_compositer�   r�   rp   rt   )
r2   Ú	my_seriesr“   r�   rx   Ú
candidatesÚlabelsr	  r¥   r  s
            @r8   rù  zMyTVDialog._add_from_my_seriesÙ
  s  ø€ à"ˆÔð$	(å!Ô2°4´:Ñ>Ô>ˆIØð Ø×!Ò!Ð"JÈIÑVÔVÐVØð> #(ˆDÔÐÐð9  Ÿ?š?¨4Ñ0Ô0ˆLØ%×5Ò5Ñ7Ô7×CÒCÀLÑQÔQˆJØÔ*×<Ò<¸ZÑHÔHˆGØIÐI°WÔ5HÐIÑIÔIˆKàVÐVÐVÐV YÐVÑVÔVˆJàð Ø×!Ò!Ð"NÐPVÑWÔWÐWØð& #(ˆDÔÐÐð! TÐSÈ
ÐSÑSÔSˆFÝ”~Ñ'Ô'×3Ò3Ð4HÈ&ÑQÔQˆHàð 
BØ#ð _ð _�CØÔ(×AÒAÀ*ÈjÐY\ÌoÑ^Ô^Ð^Ð^àÔ$×?Ò?À
ÑKÔKÐKà×'Ò'Ñ)Ô)Ð)Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ø×*Ò*°UÐ*Ñ;Ô;Ð;Ø—’ Ñ%Ô%Ð%Ø× Ò Ð!5°yÑAÔAÐAð #(ˆDÔÐÐø %ˆDÔÐ'Ð'Ð'Ð's   Š1G ÁBG ÃC G Ç	Gc                 óê  — d| _         	 dd l}ddlm} t	          j        ¦   «                              dt          j        ¬¦  «        }|s
	 d| _         d S 	 d |¦   «         › dt          |¦  «        › �}| 	                    |d	¬
¦  «        }| 
                    ¦   «          	                    dg ¦  «        }n# t          $ r Y d| _         d S w xY w|s |                      dd¦  «         	 d| _         d S d„ |D ¦   «         }t	          j        ¦   «                              d|¦  «        }|dk    r¾||         }	|                      d¦  «        }
|
                     ¦   «                              d¦  «        }| j                             ||	¦  «         |                      ¦   «          |                      d¬¦  «         |                      d¦  «         |                      d|	d         › d�d¦  «         d| _         d S # d| _         w xY w)NTr   r‰  u   Hledat seriÃ¡l)ÚtypeFz/https://api.themoviedb.org/3/search/tv?api_key=z&language=cs-CZ&query=r  ©ÚtimeoutÚresultszNic nenalezenorN  c                 ób   — g | ],}|d          › d|                      dd¦  «        dd…         › d�‘Œ-S )r†   r  Úfirst_air_dater   Nr   rµ  rì   )rí   r•   s     r8   r‘  z.MyTVDialog._add_new_search.<locals>.<listcomp>  sF   € ÐdÐdÐdÐTX˜$˜vœ,ÐOÐO¨$¯(ª(Ð3CÀRÑ*HÔ*HÈÈ!ÈÔ*LÐOÐOÐOÐdÐdÐdr9   u   Vyberte seriÃ¡lr|   r�   rÚ  r˜   r'  r†   u   ' pÅ™idÃ¡norÛ  )r  r•  r–  rŠ  r„   r  ÚinputÚINPUT_ALPHANUMr   r¢   r˜  rÔ   rK   Úselectrg   r&  rŸ   r-   r*  r�   r�   rt   )r2   r•  rŠ  Úsearch_queryr_  r›  r  ÚchoicesÚselected_idxrÑ  r“   r�   s               r8   rú  zMyTVDialog._add_new_search  s\  € à"ˆÔð!	(ØˆOˆOˆOØ@Ð@Ð@Ð@Ð@Ð@å"œ>Ñ+Ô+×1Ò1Ð2BÍÔI_Ð1Ñ`Ô`ˆLØÐ' ð8 #(ˆDÔÐÐð5ð MÐHXÐHXÑHZÔHZð  Mð  MÕr|ð  ~Jñ  sKô  sKð  Mð  M�Ø#Ÿ<š<¨°R˜<Ñ8Ô8�Ø"Ÿ-š-™/œ/×-Ò-¨i¸Ñ<Ô<��øÝð ð ð Øð* #(ˆDÔÐÐð-øøøð ð Ø×!Ò!Ð"2°IÑ>Ô>Ð>Øð" #(ˆDÔÐÐð eÐdÐ\cÐdÑdÔdˆGÝ"œ>Ñ+Ô+×2Ò2Ð3DÀgÑNÔNˆLà˜qÒ Ð Ø '¨Ô 5�Ø#Ÿš¨tÑ4Ô4�Ø)×9Ò9Ñ;Ô;×GÒGÈÑUÔU�
àÔ$×=Ò=¸jÈ-ÑXÔXÐXà×'Ò'Ñ)Ô)Ð)Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ø—’ Ñ%Ô%Ð%Ø× Ò Ð!G ]°6Ô%:Ð!GÐ!GÐ!GÈÑSÔSÐSà"'ˆDÔÐÐø %ˆDÔÐ'Ð'Ð'Ð's7   ‰>G) ÁAB/ Â.G) Â/
CÂ9G) ÃCÃG) Ã)C7G) Ç)	G2c                 óø   — |                       d¦  «        }|                     ¦   «                              d¦  «        }t          | | j        | j        |dd¬¦  «        | _        | j                             ¦   «          dS )z,Show the inline Add Media dialog for series.r|   r�   Nrâ   )Úon_close_callbackrà  )rg   r&  rŸ   r	   r,   r-   Ú_add_series_controllerÚshow)r2   r“   r�   s      r8   r  z"MyTVDialog._show_add_series_dialog,  s   € ð —’ tÑ,Ô,ˆØ!×1Ò1Ñ3Ô3×?Ò?ÀÑMÔMˆ
õ 'BØ�$”*˜dÔ2°JØ"Øð'
ñ '
ô '
ˆÔ#ð 	Ô#×(Ò(Ñ*Ô*Ð*Ð*Ð*r9   c                 óN  — t          | d¦  «        �r| j        �r| j                             ¦   «         }| j        j        }| j                             ¦   «          d| _        t          | dd¦  «        }t          j        d|› d|› �t          j        ¦  «         |�r||k    �rd| _	        | j
                             |¦  «        }t          j        d|du› d|r|j        rt          |j        ¦  «        nd› �t          j        ¦  «         |r|j        s2| j
                             |¦  «         |                      d	d
¦  «         �nddlm}  || j        ¦  «        }| j                             d¦  «        pd}d|v s|dk    rl|                     |j        ¦  «        }| j
                             ||¦  «         | j
                             |¦  «         |                      ||j        |¦  «         ni|                     |j        ¦  «        }	| j
                             ||	¦  «         | j
                             |¦  «         |                      d|	› d�d¦  «         d| _        |                      d¬¦  «         |                      ¦   «          |                      d¬¦  «         |                      dd¬¦  «         dS |rZ| j
                             |¦  «         |                      ¦   «          |                      d¬¦  «         |                      d¬¦  «         |                      d¦  «         dS dS dS )z9Close the inline Add Series dialog and refresh if needed.r  Nr  z$[MyTV] Checking pending_channel_id: z, channel_id: z[MyTV] Channel found: z, series_list: r   u:   KanÃ¡l nebyl vytvoÅ™en - nepÅ™idali jste Å¾Ã¡dnÃ© seriÃ¡lyrN  ©ÚChannelNameGeneratorÚmytv_channel_namingr   ÚAIÚ1õ   KanÃ¡l 'u   ' vytvoÅ™enrÛ  Fr]   TrÚ  r|   r?  r  r˜   )r³   r  Úwas_series_addedr�   Úhiders   r�   r¸   rO  r  r-   r    r¡   r¹   r  rK   Úwcs.ai.ChannelNameGeneratorr!  r,   rÓ   Úgenerate_from_genresr2  r
  r<  r.   rp   r�   r�   r  rt   )
r2   Úseries_addedr�   Úpending_channel_idrx   r!  r5  Únaming_moder  Únew_names
             r8   Ú_close_add_series_dialogz#MyTVDialog._close_add_series_dialog<  s·  € å�4Ð1Ñ2Ô2ñ >	"°tÔ7Rñ >	"ØÔ6×GÒGÑIÔIˆLØÔ4Ô?ˆJØÔ'×,Ò,Ñ.Ô.Ð.Ø*.ˆDÔ'õ ")¨Ð/HÈ$Ñ!OÔ!OÐÝŒHÐjÐ<NÐjÐjÐ^hÐjÐjÕlpÔl{Ñ|Ô|Ð|à!ñ )Ð&8¸JÒ&FÑ&Fà/3�Ô,àÔ.×@Ò@ÀÑLÔL�Ý”ð  [°'ÀÐ2Eð  [ð  [Ðryð  WYð  Fô  Rð  WYÕVYÐZaÔZmÑVnÔVnÐVnð  XYð  [ð  [õ  ]aô  ]lñ  mô  mð  màð V gÔ&9ð VàÔ(×7Ò7¸
ÑCÔCÐCØ×$Ò$Ð%aÐclÑmÔmÐmÑmð QÐPÐPÐPÐPÐPØ 4Ð 4°T´ZÑ @Ô @�Ið #'¤*×"7Ò"7Ð8MÑ"NÔ"NÐ"TÐRT�Kð ˜{Ð*Ð*¨k¸SÒ.@Ð.@à$-×$BÒ$BÀ7ÔCVÑ$WÔ$W˜	ØÔ,×;Ò;¸JÈ	ÑRÔRÐRØÔ,×GÒGÈ
ÑSÔSÐSð ×<Ò<¸ZÈÔI\Ð^gÑhÔhÐhÐhð $-×#AÒ#AÀ'ÔBUÑ#VÔ#V˜ØÔ,×;Ò;¸JÈÑQÔQÐQØÔ,×GÒGÈ
ÑSÔSÐSØ×(Ò(Ð)I°HÐ)IÐ)IÐ)IÈ9ÑUÔUÐUð ./�Ô*Ø×*Ò*°UÐ*Ñ;Ô;Ð;Ø×'Ò'Ñ)Ô)Ð)Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ø×#Ò# D°Ð#Ñ4Ô4Ð4Ø�ð ð <àÔ$×?Ò?À
ÑKÔKÐKØ×'Ò'Ñ)Ô)Ð)Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ø×*Ò*°UÐ*Ñ;Ô;Ð;ð �OŠO˜DÑ!Ô!Ð!Ð!Ð!ð}>	"ð >	"ð >	"ð >	"r9   c                 ób   — t          | d¦  «        o| j        o| j                             ¦   «         S )z/Check if Add Series dialog is currently active.r  )r³   r  Ú	is_activerP   s    r8   Ú_is_add_series_dialog_activez'MyTVDialog._is_add_series_dialog_active~  sI   € å�tÐ5Ñ6Ô6ð  C¸4Ô;Vð  CÐ[_Ô[v÷  \Aò  \Añ  \Cô  \Cð  	Cr9   c                 óÒ   — |                       ¦   «         rR| j                             |¦  «        }|r4| j        r-| j                             ¦   «         s|                      ¦   «          |S dS )zBDelegate action to Add Series controller. Returns True if handled.F)r1  r  rÃ  r0  r.  )r2   rÅ  Úhandleds      r8   r³  z$MyTVDialog._handle_add_series_action‚  sr   € à×,Ò,Ñ.Ô.ð 	ØÔ1×:Ò:¸6ÑBÔBˆGð ð 0˜4Ô6ð 0¸tÔ?Z×?dÒ?dÑ?fÔ?fð 0Ø×-Ò-Ñ/Ô/Ð/ØˆNØˆur9   c                 óÒ   — |                       ¦   «         rR| j                             |¦  «        }|r4| j        r-| j                             ¦   «         s|                      ¦   «          |S dS )zADelegate click to Add Series controller. Returns True if handled.F)r1  r  r  r0  r.  )r2   rÖ  r3  s      r8   rñ  z#MyTVDialog._handle_add_series_click�  sp   € à×,Ò,Ñ.Ô.ð 	ØÔ1×9Ò9¸)ÑDÔDˆGàð 0˜4Ô6ð 0¸tÔ?Z×?dÒ?dÑ?fÔ?fð 0Ø×-Ò-Ñ/Ô/Ð/ØˆNØˆur9   c                 óf   — |                       ¦   «         r| j                             |¦  «         dS dS )z(Delegate focus to Add Series controller.N)r1  r  rÕ  )r2   rÖ  s     r8   rÔ  z#MyTVDialog._handle_add_series_focus—  s=   € à×,Ò,Ñ.Ô.ð 	;ØÔ'×/Ò/°	Ñ:Ô:Ð:Ð:Ð:ð	;ð 	;r9   r˜   c           	      óP  — || _         || _        || _        | j                             |¦  «        }d}|rA|j        D ]9}t          |                     d¦  «        ¦  «        t          |¦  «        k    r|} nŒ:|sdS |                      ||¦  «        }|  	                    d|                     dd¦  «        ¦  «         |  	                    dt          |                     dd¦  «        ¦  «        ¦  «         |  	                    d|                     d	d¦  «        ¦  «         |  	                    d
t          |                     dd¦  «        ¦  «        ¦  «         |  	                    d|                     dd¦  «        ¦  «         |  	                    d|                     dd¦  «        ¦  «         |  	                    d|                     dd¦  «        ¦  «         |  	                    d|                     dd¦  «        ¦  «         |  	                    dd¦  «         |  
                    dd¬¦  «         dS )z6Show the inline Series Detail dialog with series info.Nrf   úWCS.MyTV.SeriesDetail.Namer†   r   zWCS.MyTV.SeriesDetail.Yearr  zWCS.MyTV.SeriesDetail.Genrer  zWCS.MyTV.SeriesDetail.Ratingr  úWCS.MyTV.SeriesDetail.Plotr  úWCS.MyTV.SeriesDetail.Fanartr  úWCS.MyTV.SeriesDetail.Logorß  úWCS.MyTV.SeriesDetail.Posterr€   úWCS.MyTV.SeriesDetail.Activer@   r"  r  r  )r(  r)  Ú_series_detail_return_focus_idr-   r    r¡   r¤   r¢   Ú_get_series_metadatarC   r  )r2   rœ   r�   rá  rx   rœ  r  Úmetadatas           r8   rø  z%MyTVDialog._show_series_detail_dialog¡  s#  € ð )2ˆÔ%Ø)3ˆÔ&Ø.=ˆÔ+ð Ô&×8Ò8¸ÑDÔDˆØˆØð 	ØÔ(ð ð �Ý�q—u’u˜T‘{”{Ñ#Ô#¥s¨9¡~¤~Ò5Ð5Ø"#�KØ�Eð 6ð ð 	ØˆFð ×,Ò,¨Y¸ÑDÔDˆð 	×ÒÐ5°x·|²|ÀFÈBÑ7OÔ7OÑPÔPÐPØ×ÒÐ5µs¸8¿<º<ÈÐPRÑ;SÔ;SÑ7TÔ7TÑUÔUÐUØ×ÒÐ6¸¿ºÀWÈbÑ8QÔ8QÑRÔRÐRØ×ÒÐ7½¸X¿\º\È(ÐTVÑ=WÔ=WÑ9XÔ9XÑYÔYÐYØ×ÒÐ5°x·|²|ÀFÈBÑ7OÔ7OÑPÔPÐPØ×ÒÐ7¸¿ºÀhÐPRÑ9SÔ9SÑTÔTÐTØ×ÒÐ5°x·|²|ÀFÈBÑ7OÔ7OÑPÔPÐPØ×ÒÐ7¸¿ºÀhÐPRÑ9SÔ9SÑTÔTÐTð 	×ÒÐ7¸Ñ@Ô@Ð@ð 	×Ò˜D¨ÐÑ,Ô,Ð,Ð,Ð,r9   c           	      ó,  — ddl }ddlm} d|› �}| j                             |¦  «        }|r|S |                     dd¦  «        |                     dd¦  «        p4|                     d¦  «        r|                     dd¦  «        dd	…         nddd|                     d
d¦  «        p|                     dd¦  «        ddddœ}|                     d¦  «        p|                     d¦  «        }|r|                     d¦  «        sd|› �}||d<   	  || j        ¦  «        }	d|› d|	› d�}
|                     |
d¬¦  «        }|j        dk    rö|                     ¦   «         }|                     d|d         ¦  «        |d<   |                     d
|d         ¦  «        |d<   |                     dd¦  «        d›|d<   |                     d¦  «        r|d         dd	…         |d<   |                     dg ¦  «        }|r*d 	                    d„ |dd…         D ¦   «         ¦  «        |d<   |                     d¦  «        }|rd |› �|d!<   d|› d"|	› �}|                     |d¬¦  «        }|j        dk    rV|                     ¦   «         }|                     d#g ¦  «        }|D ])}|                     d$¦  «        d%v rd|d&         › �|d'<    nŒ*| j         
                    ||d(¬)¦  «         n9# t          $ r,}t          j        d*|› �t          j        ¦  «         Y d}~nd}~ww xY w|S )+z'Get series metadata from cache or TMDb.r   Nr‰  Úseries_detail_r†   r   r  r  r   rÝ  r  )r†   r  r  r  r  r  rß  r€   r™   r€   rš   r›   r‹  rŒ  r�  r  r  éÈ   Úvote_averagere  r  Úgenresz, c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )r†   r   rì   )rí   Úgs     r8   r‘  z3MyTVDialog._get_series_metadata.<locals>.<listcomp>ú  s&   € Ð2YÐ2YÐ2YÈ°1·5²5¸ÀÑ3DÔ3DÐ2YÐ2YÐ2Yr9   r   r  Úbackdrop_pathz https://image.tmdb.org/t/p/w1280r  z/images?api_key=ÚlogosÚ	iso_639_1)ÚenÚcsNÚ	file_pathrß  ra  r±   z&[MyTV] Error fetching series details: )r•  r–  rŠ  r/   r¢   r£   r,   Ústatus_coder˜  r%  r·   rÔ   r�   r¸   rO  )r2   rœ   rœ  r•  rŠ  r¼   Úcachedr?  r€   rš  Údetails_urlr›  ÚdetailsrD  ÚbackdropÚ
images_urlÚimagesrH  rß  r3  s                       r8   r>  zMyTVDialog._get_series_metadataÇ  sß  € àˆˆˆØ<Ð<Ð<Ð<Ð<Ð<ð 1 YÐ0Ð0ˆ	Ø”—’ Ñ+Ô+ˆØð 	ØˆMð  —O’O F¨BÑ/Ô/Ø—O’O F¨BÑ/Ô/ð  LÐal×apÒapð  rBñ  bCô  bCð  5K°K·O²OÐDTÐVXÑ4YÔ4YÐZ\Ð[\ÐZ\Ô4]Ð4]ð  IKØØØ—O’O J°Ñ3Ô3ÐR°{·²ÀvÈrÑ7RÔ7RØØØð	
ð 	
ˆð —’ Ñ/Ô/ÐL°;·?²?À8Ñ3LÔ3LˆØð 	(Ø×$Ò$ VÑ,Ô,ð DØC¸6ÐCÐC�Ø!'ˆH�XÑð)	TØ&Ð& t¤zÑ2Ô2ˆGð j¸YÐiÐiÐQXÐiÐiÐiˆKØ—|’| K¸�|Ñ<Ô<ˆHØÔ# sÒ*Ð*Ø"Ÿ-š-™/œ/�à#*§;¢;¨v°xÀÔ7GÑ#HÔ#H�˜Ñ Ø#*§;¢;¨z¸8ÀFÔ;KÑ#LÔ#L�˜Ñ Ø(/¯ª°NÀAÑ(FÔ(FÐ%LÐ%L�˜Ñ"ð —;’;Ð/Ñ0Ô0ð EØ'.Ð/?Ô'@ÀÀ!ÀÔ'D�H˜VÑ$ð !Ÿš X¨rÑ2Ô2�Øð [Ø(,¯	ª	Ð2YÐ2YÈfÐUWÐVWÐUWÌjÐ2YÑ2YÔ2YÑ(ZÔ(Z�H˜WÑ%ð #Ÿ;š; Ñ7Ô7�Øð WØ)VÈHÐ)VÐ)V�H˜XÑ&ð a¸IÐ`Ð`ÐW^Ð`Ð`ˆJØ—|’| J¸�|Ñ;Ô;ˆHØÔ# sÒ*Ð*Ø!Ÿš™œ�ØŸ
š
 7¨BÑ/Ô/�Ø!ð ð �DØ—x’x Ñ,Ô,Ð0BÐBÐBØ+`ÈTÐR]ÔM^Ð+`Ð+`˜ Ñ(Ø˜ð Cð
 ŒK�OŠO˜I x¸]ˆOÑKÔKÐKÐKøÝð 	Tð 	Tð 	TÝŒHÐA¸aÐAÐAÅ4Ä?ÑSÔSÐSÐSÐSÐSÐSÐSøøøøð	Tøøøð ˆs   ÄGK Ë
LË%"LÌLc                 óh  — |                       d¦  «         |                       d¦  «         |r_| j                             | j        ¦  «         |                      ¦   «          |                      d¬¦  «         |                      d¬¦  «         t          | dd¦  «        }|                      |¦  «         d	S )
z&Close the inline Series Detail dialog.rZ   r<  TrÚ  Fr]   r=  r˜   N)	rO   r-   r
  r)  r�   r�   rp   rs   rt   )r2   r&  Ú	return_ids      r8   r+  z&MyTVDialog._close_series_detail_dialog  sº   € à×ÒÐ9Ñ:Ô:Ð:Ø×ÒÐ9Ñ:Ô:Ð:àð 	8àÔ ×;Ò;¸DÔ<ZÑ[Ô[Ð[Ø×#Ò#Ñ%Ô%Ð%Ø×%Ò%¨dÐ%Ñ3Ô3Ð3Ø×&Ò&°Ð&Ñ7Ô7Ð7õ ˜DÐ"BÀDÑIÔIˆ	Ø�Š˜	Ñ"Ô"Ð"Ð"Ð"r9   c                 óF   — t          |                      d¦  «        ¦  «        S )z2Check if Series Detail dialog is currently active.r<  )ÚboolrŸ   rP   s    r8   Ú_is_series_detail_dialog_activez*MyTVDialog._is_series_detail_dialog_active#  s   € å�D×$Ò$Ð%CÑDÔDÑEÔEÐEr9   c                 ód  — |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }|                     ¦   «         pd}|                      dd¦  «         |                      d|¦  «         |                      ¦   «          |                      dd	¬
¦  «         dS )z4Show the series grid sub-dialog for current channel.r|   Nr�   r   r¬  r@   r  rÙ  r  r  )rg   r&  rŸ   r  rC   r�   r  )r2   r“   r•   r�   r  s        r8   rv   z#MyTVDialog._show_series_grid_dialog+  s»   € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	ØˆFà×%Ò% lÑ3Ô3ˆ
Ø—}’}‘”Ð,¨"ˆð 	×ÒÐ.°Ñ7Ô7Ð7Ø×ÒÐ4°lÑCÔCÐCð 	×ÒÑ!Ô!Ð!ð 	×Ò˜D¨ÐÑ,Ô,Ð,Ð,Ð,r9   c                 ó„   — |                       d¦  «         |                       d¦  «         |                      d¦  «         dS )z!Close the series grid sub-dialog.r¬  r  r|   Nr#  rP   s    r8   r½  z$MyTVDialog._close_series_grid_dialog?  sF   € à×ÒÐ0Ñ1Ô1Ð1Ø×ÒÐ6Ñ7Ô7Ð7ð 	�Š˜ÑÔÐÐÐr9   c                 óâ  — |                       d¦  «        }|                     ¦   «         }|r|                     d¦  «        dk    rdS |                     d¦  «        | _        |                     ¦   «         | _        |                     ¦   «         | _        |                      ¦   «          |  	                    dd¦  «         |  	                    d| j        pd¦  «         |  
                    d¦  «         dS )	a  Enter channel reorder mode from Series Grid dialog.
        
        Uses navigate-then-place approach:
        - List handles LEFT/RIGHT navigation natively
        - User navigates to target position and presses OK to place channel
        - BACK cancels the operation
        r|   rƒ   r@   Nr�   r¥  úWCS.MyTV.ReorderNamer   )rg   r&  rŸ   Ú_reorder_channel_idrŒ   Ú_reorder_original_indexr  Ú_reorder_channel_namer½  rC   rt   r  s      r8   rÀ  zMyTVDialog._enter_reorder_modeG  sî   € ð —’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	�t×'Ò'Ð(:Ñ;Ô;¸vÒEÐEØˆFð $(×#3Ò#3°LÑ#AÔ#AˆÔ Ø'3×'GÒ'GÑ'IÔ'IˆÔ$Ø%)§]¢]¡_¤_ˆÔ"ð 	×&Ò&Ñ(Ô(Ð(ð 	×ÒÐ/°Ñ8Ô8Ð8Ø×ÒÐ/°Ô1KÐ1QÈrÑRÔRÐRð 	�Š˜ÑÔÐÐÐr9   c                 ó°  — t          | dd¦  «        }|s|                      d¬¦  «         dS |                      d¦  «        }|                     ¦   «         }t          | dd¦  «        }|                     ¦   «         }|r1|                     d¦  «        d	k    r|                      d
d¦  «         dS ||k    r|                      d¬¦  «         dS | j                             ||¦  «         || _	        |  
                    d¬¦  «         |                     |¦  «         |                      ¦   «          |                      ¦   «          |                      d¬¦  «         dS )zCConfirm channel reorder -- move channel to current cursor position.r]  NFrª  r|   r^  r   rƒ   r@   u   Nelze umÃ­stit na tuto pozicirN  r]   T)rs   rº  rg   rŒ   r&  rŸ   rK   r-   Úmove_channelr.   rp   r‹   r�   r�   )r2   r�   r“   Ú
target_posÚoriginal_indexÚtarget_items         r8   rò  zMyTVDialog._confirm_reorderc  st  € å˜TÐ#8¸$Ñ?Ô?ˆ
Øð 	Ø×#Ò#¨EÐ#Ñ2Ô2Ð2ØˆFà—’ tÑ,Ô,ˆØ!×5Ò5Ñ7Ô7ˆ
Ý  Ð'@À!ÑDÔDˆð #×2Ò2Ñ4Ô4ˆØð 	˜;×2Ò2Ð3EÑFÔFÈ&ÒPÐPØ×ÒÐ<¸iÑHÔHÐHØˆFà˜Ò'Ð'à×#Ò#¨EÐ#Ñ2Ô2Ð2ØˆFð 	Ô×)Ò)¨*°jÑAÔAÐAØ%/ˆÔ"ð 	×"Ò"¨UÐ"Ñ3Ô3Ð3Ø×Ò 
Ñ+Ô+Ð+Ø×ÒÑ!Ô!Ð!Ø×!Ò!Ñ#Ô#Ð#à×Ò¨ÐÑ-Ô-Ð-Ð-Ð-r9   c                 ó6  — |r,t          | dd¦  «        }|                      d|› d�d¦  «         n|                      dd¦  «         |                      d¦  «         |                      d	¦  «         d
| _        d
| _        d
| _        |                      d¦  «         d
S )z‰Exit channel reorder mode.
        
        Args:
            confirm: If True, show success toast. If False, show cancel toast.
        r_  r   r%  u   ' pÅ™esunutrÛ  õ   PÅ™esun zruÅ¡enr:   r¥  r\  Nr|   )rs   rK   rO   r]  r^  r_  rt   )r2   r«  r  s      r8   rº  zMyTVDialog._exit_reorder_mode…  s¸   € ð ð 	8Ý" 4Ð)@À"ÑEÔEˆLØ×ÒÐA¨ÐAÐAÐAÀ9ÑMÔMÐMÐMà×ÒÐ.°Ñ7Ô7Ð7ð 	×ÒÐ1Ñ2Ô2Ð2Ø×ÒÐ1Ñ2Ô2Ð2Ø#'ˆÔ Ø'+ˆÔ$Ø%)ˆÔ"ð 	�Š˜ÑÔÐÐÐr9   c                 óˆ   — |                       d¦  «        dk    r|                      ¦   «          |                      ¦   «          dS )a7  Enter program reorder mode from Play Selection dialog.
        
        Uses navigate-then-place approach on program list (horizontal):
        - List handles LEFT/RIGHT navigation natively
        - User navigates to target position and presses OK to place episode
        - BACK cancels the operation
        r­  r@   N)rŸ   r¿  Ú_activate_program_reorderrP   s    r8   r  z&MyTVDialog._enter_program_reorder_mode›  sH   € ð ×ÒÐ4Ñ5Ô5¸Ò?Ð?Ø×,Ò,Ñ.Ô.Ð.à×&Ò&Ñ(Ô(Ð(Ð(Ð(r9   c                 ó.   — |                       ¦   «          dS )z˜Enter program reorder mode directly from long press on program list.
        
        No dialog to close -- activates reorder mode immediately.
        N)rh  rP   s    r8   rÄ  z-MyTVDialog._enter_program_reorder_mode_direct©  s   € ð
 	×&Ò&Ñ(Ô(Ð(Ð(Ð(r9   c                 óð  — |                       d¦  «        }|                     ¦   «         }|dk     rdS |                     ¦   «         }|sdS || _        |                     d¦  «        p|                     ¦   «         | _        |                     d¦  «        pd| _        | j        }| j        r|› d| j        › �}|                      dd	¦  «         |                      d
|¦  «         |  	                    d¦  «         dS )z1Shared logic for activating program reorder mode.r\   r   Nr
  r  r   rä   r¦  r@   úWCS.MyTV.ProgramReorderName)
rg   rŒ   r&  Ú_program_reorder_original_indexrŸ   r  Ú_program_reorder_ep_nameÚ_program_reorder_ep_coderC   rt   )r2   ry   rÝ  r•   r©  s        r8   rh  z$MyTVDialog._activate_program_reorder°  s  € à—’ tÑ,Ô,ˆØ#×7Ò7Ñ9Ô9ˆØ˜!ÒÐØˆFà×+Ò+Ñ-Ô-ˆØð 	ØˆFð 0<ˆÔ,Ø(,×(8Ò(8¸Ñ(GÔ(GÐ(ZÈ4Ï=Ê=É?Ì?ˆÔ%Ø(,×(8Ò(8¸Ñ(CÔ(CÐ(IÀrˆÔ%ð Ô0ˆØÔ(ð 	EØ"ÐDÐD TÔ%BÐDÐDˆHØ×ÒÐ6¸Ñ?Ô?Ð?Ø×ÒÐ6¸ÑAÔAÐAð 	�Š˜ÑÔÐÐÐr9   c                 ó$  — t          | dd¦  «        }|€|                      d¬¦  «         dS |                      d¦  «        }|                     ¦   «         }|dk     s||k    r|                      d¬¦  «         dS |                      d¦  «        }|                     ¦   «         }|r|                     d¦  «        nd}|s|                      d¬¦  «         dS d	|› �}| j                             |¦  «        }|�rd|cxk    rt          |¦  «        k     rén næd|cxk    rt          |¦  «        k     rÌn nÉ| 	                    |¦  «        }	| 
                    ||	¦  «         | j                             ||d
¬¦  «         |                      ||¦  «         |                      |¦  «         |                     |¦  «         t          j        d|› d|› d|› �t          j        ¦  «         | j                             ¦   «          |                      d¬¦  «         dS )zCConfirm program reorder -- move episode to current cursor position.rl  NFrª  r\   r   r|   r�   r«   r°   r±   z[MyTV] Moved program item from z to z in channel T)rs   r»  rg   rŒ   r&  rŸ   r/   r¢   r¹   r"   Úinsertr·   Ú_save_program_reorderrÐ   r‹   r�   r¸   rº   rl  )
r2   rc  ry   rb  r“   Úchannel_itemr�   r¼   r½   rÀ   s
             r8   rÿ  z#MyTVDialog._confirm_program_reorderÊ  sW  € å  Ð'HÈ$ÑOÔOˆØÐ!Ø×+Ò+°EÐ+Ñ:Ô:Ð:ØˆFà—’ tÑ,Ô,ˆØ!×5Ò5Ñ7Ô7ˆ
à˜Š>ˆ>˜Z¨>Ò9Ð9à×+Ò+°EÐ+Ñ:Ô:Ð:ØˆFð —’ tÑ,Ô,ˆØ#×3Ò3Ñ5Ô5ˆØ?KÐU�\×-Ò-¨lÑ;Ô;Ð;ÐQUˆ
àð 	Ø×+Ò+°EÐ+Ñ:Ô:Ð:ØˆFð 1 JÐ0Ð0ˆ	Ø”{—’ yÑ1Ô1ˆàñ 	 ˜A ÐCÐCÒCÐCµ#°lÑ2CÔ2CÒCÐCÐCÐCÐCÈÈZÐHkÐHkÒHkÐHkÕZ]Ð^jÑZkÔZkÒHkÐHkÐHkÐHkÐHkà$×(Ò(¨Ñ8Ô8ˆIØ×Ò 
¨IÑ6Ô6Ð6ð ŒK�OŠO˜I |ÀˆOÑKÔKÐKð ×&Ò& z°<Ñ@Ô@Ð@ð ×)Ò)¨*Ñ5Ô5Ð5ð ×#Ò# JÑ/Ô/Ð/åŒHÐo°~ÐoÐoÈ:ÐoÐoÐcmÐoÐoÕquÔq}Ñ~Ô~Ð~ð ŒK×ÒÑÔÐà×'Ò'°Ð'Ñ5Ô5Ð5Ð5Ð5r9   c                 ó6  — |r,t          | dd¦  «        }|                      d|› d�d¦  «         n|                      dd¦  «         |                      d¦  «         |                      d	¦  «         d
| _        d
| _        d
| _        |                      d¦  «         d
S )z‰Exit program reorder mode.
        
        Args:
            confirm: If True, show success toast. If False, show cancel toast.
        rm  r   r'  u   ' pÅ™esunutorÛ  rf  r:   r¦  rk  Nr\   )rs   rK   rO   rl  rm  rn  rt   )r2   r«  rÈ  s      r8   r»  z%MyTVDialog._exit_program_reorder_modeþ  s¸   € ð ð 	8Ý˜dÐ$>ÀÑCÔCˆGØ×ÒÐ6 Ð6Ð6Ð6¸	ÑBÔBÐBÐBà×ÒÐ.°Ñ7Ô7Ð7ð 	×ÒÐ8Ñ9Ô9Ð9Ø×ÒÐ8Ñ9Ô9Ð9Ø/3ˆÔ,Ø(,ˆÔ%Ø(,ˆÔ%ð 	�Š˜ÑÔÐÐÐr9   c                 óü  — 	 g }|D ]b}|                      di ¦  «        }|                      dd¦  «        }|                      dd¦  «        }|r|r|                     |› d|› �¦  «         Œc|rWd|› �}| j                             ||d¬¦  «         t	          j        d	|› d
t          |¦  «        › d�t          j        ¦  «         dS dS # t          $ r-}	t	          j        d|	› �t          j	        ¦  «         Y d}	~	dS d}	~	ww xY w)az  Save program reorder persistently (survives program_list cache invalidation).
        
        Stores episode identity keys (tmdb_id + ep_code) in order.
        Uses prefix 'program_reorder_' which is NOT cleared by delete_prefix('program_list_').
        
        Args:
            channel_id: Channel ID
            items_data: List of item dicts (from cache format)
        r¬   r­   r   r  r`  rÍ   i �' r±   z)[MyTV] Saved program reorder for channel r“  z itemsz%[MyTV] Error saving program reorder: N)
r¢   rµ   r/   r·   r�   r¸   r¹   rº   rÔ   rO  )
r2   r�   r�  Ú
order_keysr•   rÁ   r­   r  rÞ   r3  s
             r8   rq  z MyTVDialog._save_program_reorder  sQ  € ð	SØˆJØ"ð >ð >�ØŸš ¨rÑ2Ô2�ØŸ)š) I¨rÑ2Ô2�ØŸ)š) I¨rÑ2Ô2�Øð >˜wð >Ø×%Ò%¨Ð&<Ð&<°7Ð&<Ð&<Ñ=Ô=Ð=øàð zØ=°Ð=Ð=�Ø”—’ ¨ZÀ^�ÑTÔTÐTÝ”ÐjÀZÐjÐjÕSVÐWaÑSbÔSbÐjÐjÐjÕlpÔlxÑyÔyÐyÐyÐyðzð zøõ ð 	Sð 	Sð 	SÝŒHÐ@¸QÐ@Ð@Å$Ä/ÑRÔRÐRÐRÐRÐRÐRÐRÐRøøøøð	Søøøs   ‚B>C Ã
C;Ã"C6Ã6C;c                 ó   — 	 d|› �}| j                              |¦  «        }|sdS d|› �}| j                              |¦  «        }|sdS i }g }|D ]r}|                     di ¦  «        }	|	                     dd¦  «        }
|	                     dd¦  «        }|
r	|r|
› d|› �nd}|r
||v r|||<   Œ]|                     |¦  «         Œsg }|D ]!}||v r|                     ||         ¦  «         Œ"|                     |¦  «         |sdS | j                              ||d	¬
¦  «         |                      |¦  «         t          j        d|› �t          j        ¦  «         dS # t          $ r-}t          j        d|› �t          j
        ¦  «         Y d}~dS d}~ww xY w)a  Apply saved program reorder to current program list.
        
        Reads saved order keys and re-sorts the program list cache accordingly.
        Called after async program load to restore user's custom order.
        
        Args:
            channel_id: Channel ID
        rÍ   Nr«   r¬   r­   r   r  r`  r°   r±   z1[MyTV] Applied saved program reorder for channel z'[MyTV] Error applying program reorder: )r/   r¢   rµ   Úextendr·   rÐ   r�   r¸   rº   rÔ   rO  )r2   r�   rÞ   Úsaved_orderr¼   r½   Úitem_mapÚ	unmatchedr•   rÁ   r­   r  rP  Ú	reorderedr3  s                  r8   rÑ   z!MyTVDialog._apply_program_reorder.  s  € ð*	UØ9¨ZÐ9Ð9ˆKØœ+Ÿ/š/¨+Ñ6Ô6ˆKØð Ø�à4¨
Ð4Ð4ˆIØœ;Ÿ?š?¨9Ñ5Ô5ˆLØð Ø�ð ˆHØˆIØ$ð +ð +�ØŸš ¨rÑ2Ô2�ØŸ)š) I¨rÑ2Ô2�ØŸ)š) I¨rÑ2Ô2�Ø07ÐM¸GÐM˜Ð,Ð, 7Ð,Ð,Ð,È�Øð +˜3 +Ð-Ð-Ø$(�H˜S‘M�Mà×$Ò$ TÑ*Ô*Ð*Ð*ð ˆIØ"ð 4ð 4�Ø˜(�?�?Ø×$Ò$ X¨c¤]Ñ3Ô3Ð3øð ×Ò˜YÑ'Ô'Ð'àð Ø�ð ŒK�OŠO˜I y¸iˆOÑHÔHÐHØ×)Ò)¨*Ñ5Ô5Ð5åŒHÐUÈÐUÐUÕW[ÔWcÑdÔdÐdÐdÐdøÝð 	Uð 	Uð 	UÝŒHÐB¸qÐBÐBÅDÄOÑTÔTÐTÐTÐTÐTÐTÐTÐTøøøøð	Uøøøs*   ‚!E ¥!E ÁB6E Ä AE Å
FÅ "FÆFc                 óÂ  — |                       d¦  «        }|                     ¦   «         }|sdS |                     d¦  «        }| j                             |¦  «        }|r|j        s|                      dd¦  «         dS |                      dd¦  «         dd	lm}  || j	        ¦  «        }| 
                    ¦   «         pd}|                      ||j        ||d
¬¦  «         dS )z9Regenerate channel name using AI from Series Grid dialog.r|   Nr�   u   KanÃ¡l nemÃ¡ Å¾Ã¡dnÃ© seriÃ¡lyrN  u   Generuji nÃ¡zev pomocÃ­ AI...r:   r   r   T)r/  r6  )rg   r&  rŸ   r-   r    r¡   rK   r(  r!  r,   r  r<  )r2   r“   r•   r�   rx   r!  r5  r/  s           r8   rõ  z-MyTVDialog._regenerate_channel_name_from_gridc  s  € à—’ tÑ,Ô,ˆØ×+Ò+Ñ-Ô-ˆØð 	ØˆFà×%Ò% lÑ3Ô3ˆ
ØÔ&×8Ò8¸ÑDÔDˆØð 	˜gÔ1ð 	Ø×ÒÐ=¸yÑIÔIÐIØˆFà×ÒÐ8¸&ÑAÔAÐAàDÐDÐDÐDÐDÐDØ(Ð(¨¬Ñ4Ô4ˆ	Ø—}’}‘”Ð.¨$ˆà×,Ò,Ø˜Ô+¨YØ%¸ð 	-ñ 	
ô 	
ð 	
ð 	
ð 	
r9   c                 ó4   — |                       d¦  «        dk    S )z0Check if Series Grid dialog is currently active.r¬  r@   )rŸ   rP   s    r8   Ú_is_series_grid_dialog_activez(MyTVDialog._is_series_grid_dialog_active|  s   € à×ÒÐ 5Ñ6Ô6¸&Ò@Ð@r9   c                 óð   — |                       ¦   «         sdS |                     ¦   «         }|dv rG|                      d¦  «        dk    r|                      ¦   «          dS |                      d¬¦  «         dS dS )zAHandle actions for Series Detail dialog. Returns True if handled.F)r  é\   rZ   r@   Tr%  )rX  r´  rŸ   r¾  r+  )r2   rÅ  rÆ  s      r8   r²  z'MyTVDialog._handle_series_detail_action€  s‡   € à×3Ò3Ñ5Ô5ð 	Ø�5à—L’L‘N”Nˆ	ð ˜Ð Ð à×ÒÐ >Ñ?Ô?À6ÒIÐIØ×7Ò7Ñ9Ô9Ð9Ø�tà×,Ò,°UÐ,Ñ;Ô;Ð;Ø�4àˆur9   c                 ól
  ‡— |                       ¦   «         sdS |dk    r|                      ¦   «          dS |dk    r|                      ¦   «          dS |dk    r|                      ¦   «          dS |dk    r|                      d¬¦  «         dS |dk    r–| j        }|                      d	¦  «        pd
}|                      d¦  «        pd
}|                      d¦  «        pd
}|                      d¦  «        pd
}|                      d¦  «        pd
}|                      ||||||¦  «         dS |dk    �rñddlm	} ddl
m}	 | j        }|                      d	¦  «        pd
}|                      d¬¦  «         |                      ¦   «          	 | j                             d¦  «        }
|
rt          |
¦  «        nd}n	#  d}Y nxY wt!          | dd
¦  «        pd
}t#          j        ||¦  «        \  }}t'          j        t&          j        ¦  «        }|                     ¦   «          | j                             d¦  «        }||}}d}||k     r‘|	                     |||| j        ¦  «        }|snqt3          j        |||¦  «        }t3          j        |||¦  «        }t3          j        |¦  «        }|                     ||¦  «         |dz  }|d         |d         }}||k     °‘|dk    r't'          j        ¦   «                              |¦  «         n"t'          j         d|› �t&          j!        ¦  «         dS |dk    �rddl"}ddl#m$} | j        }|                      d	¦  «        pd}| j%        }|                      d¬¦  «         	 d|› d  |¦   «         › d!�}| &                    |d"¬#¦  «        }| '                    ¦   «          &                    d$g ¦  «        }|s|  (                    d%d&¦  «         dS |  )                    ¦   «          | j*        rò| j+         ,                    |¦  «        }|rd'„ |j-        D ¦   «         nt]          ¦   «         Šˆfd(„|D ¦   «         dd)…         }|r‰|| j*        _/        | j*        j0         1                    d*d+¦  «         | j*        j0         1                    d,d-|› �¦  «         | j*         2                    |¦  «         | j*        j0         3                    d.¦  «         n|  (                    d/d&¦  «         nO# th          $ rB}t'          j         d0|› �t&          j5        ¦  «         |  (                    d1d2¦  «         Y d}~nd}~ww xY wdS dS )3zFHandle click events for Series Detail dialog. Returns True if handled.Fr"  Tr  iZ$  iU$  r%  iV$  r7  r   r;  r9  r:  r8  iX$  r   r   rY  rÊ   rË   r)  rf   r   r®   r¯   z$[MyTV] No episodes found for series iW$  Nr‰  u   SeriÃ¡lr‹  z/recommendations?api_key=r�  r  r  r  u   Å½Ã¡dnÃ© podobnÃ© seriÃ¡lyr:   c                 óR   — h | ]$}t          |                     d ¦  «        ¦  «        ’Œ%S r  r  r�  s     r8   ú	<setcomp>z9MyTVDialog._handle_series_detail_click.<locals>.<setcomp>  s*   € Ð"QÐ"QÐ"Q¸¥3 q§u¢u¨T¡{¤{Ñ#3Ô#3Ð"QÐ"QÐ"Qr9   c                 ó\   •— g | ](}t          |                     d ¦  «        ¦  «        ‰v¯&|‘Œ)S r  r  )rí   Úrr  s     €r8   r‘  z:MyTVDialog._handle_series_detail_click.<locals>.<listcomp>  s5   ø€ ÐZÐZÐZ aµc¸!¿%º%À¹+¼+Ñ6FÔ6FÈkÐ6YÐ6Y Ð6YÐ6YÐ6Yr9   é   zWCS.MyTV.AddDialog.ListingModeÚsimilarzWCS.MyTV.AddDialog.ListingTitleu
   PodobnÃ©: iû#  u$   VÅ¡echny podobnÃ© uÅ¾ jsou v kanÃ¡luz[MyTV] Error finding similar: u   Chyba pÅ™i hledÃ¡nÃ­r0  )6rX  r   r,  r¾  r+  r(  rŸ   r÷  Úurllib.parser   rc  rZ  rQ  r,   rÓ   r´   rs   r   r¶   r�   rR  rS  rT  rU  rg  r   rÓ  rW  rX  rõ   rC  rY  r¸   rO  r•  r–  rŠ  r)  r¢   r˜  rK   r  r  r-   r    r¡   r·   Ú_itemsÚparentrC   Ú_populate_listrt   rÔ   r)  ) r2   rÖ  rœ   r
  r€   r  rß  r  r   rZ  rÛ   rÜ   r�   rx  ry  r\  r]  r{  r|  Úepisodes_addedr}  rÀ   r_  r`  r•  rŠ  r›  r  rx   Úfilteredr3  r  s                                   @r8   rð  z&MyTVDialog._handle_series_detail_click“  sK  ø€ à×3Ò3Ñ5Ô5ð 	Ø�5ð ˜ÒÐØ×1Ò1Ñ3Ô3Ð3Ø�4ð ˜$ÒÐØ×'Ò'Ñ)Ô)Ð)Ø�4ð ˜$ÒÐØ×3Ò3Ñ5Ô5Ð5Ø�4ð ˜$ÒÐØ×,Ò,°UÐ,Ñ;Ô;Ð;Ø�4ð ˜$ÒÐØÔ5ˆIØ×*Ò*Ð+GÑHÔHÐNÈBˆKØ×%Ò%Ð&DÑEÔEÐKÈˆFØ×%Ò%Ð&DÑEÔEÐKÈˆFØ×#Ò#Ð$@ÑAÔAÐGÀRˆDØ×#Ò#Ð$@ÑAÔAÐGÀRˆDð ×"Ò" 9¨k¸4ÀÈÐQUÑVÔVÐVØ�4ð ˜$ÒÑØ/Ð/Ð/Ð/Ð/Ð/Ø/Ð/Ð/Ð/Ð/Ð/àÔ5ˆIØ×*Ò*Ð+GÑHÔHÐNÈBˆKð ×,Ò,°UÐ,Ñ;Ô;Ð;Ø�JŠJ‰LŒLˆLð$Ø%)¤Z×%:Ò%:Ð;PÑ%QÔ%QÐ"Ø<NÐ!V¥Ð%7Ñ!8Ô!8Ð!8ÐTV��øð$Ø!#���øøøõ ! Ð'BÀBÑGÔGÐMÈ2ˆJÝ(7Ô(DÀZÐQZÑ([Ô([Ñ%ˆK˜õ ”}¥TÔ%8Ñ9Ô9ˆHØ�NŠNÑÔÐà”z×.Ò.¨tÑ4Ô4ˆHØ(¨,�FˆFØˆNà  >Ò1Ð1Ø&×AÒAÀ)ÈVÐU[Ð]aÔ]gÑhÔh�	Ø ð Øå+ÔBÀ9ÈkÐ[dÑeÔe�	Ý%Ô8¸À9ÈjÑYÔY�Ý$Ô<¸YÑGÔG�à—’˜S "Ñ%Ô%Ð%Ø !Ñ#�Ø!*¨8Ô!4°iÀ	Ô6J˜�ð ! >Ò1Ð1ð  Ò!Ð!Ý”‘”×"Ò" 8Ñ,Ô,Ð,Ð,õ ”ÐMÀÐMÐMÍtÌÑ_Ô_Ð_à�4ð ˜$ÒÑØˆOˆOˆOØ@Ð@Ð@Ð@Ð@Ð@àÔ5ˆIØ×*Ò*Ð+GÑHÔHÐUÈIˆKØÔ7ˆJð ×,Ò,°UÐ,Ñ;Ô;Ð;ðBð A¸ð  Að  AÐ]mÐ]mÑ]oÔ]oð  Að  Að  A�Ø#Ÿ<š<¨°R˜<Ñ8Ô8�Ø"Ÿ-š-™/œ/×-Ò-¨i¸Ñ<Ô<�àð  Ø×$Ò$Ð%AÀ6ÑJÔJÐJØ˜4ð ×,Ò,Ñ.Ô.Ð.ð Ô.ð Yà"Ô2×DÒDÀZÑPÔP�GØU\Ð"gÐ"QÐ"Q¸WÔ=PÐ"QÑ"QÔ"QÐ"QÕbeÑbgÔbg�KØZÐZÐZÐZ¨7ÐZÑZÔZÐ[^Ð\^Ð[^Ô_�Hàð YØ=E˜Ô3Ô:ØÔ3Ô:×FÒFÐGgÐirÑsÔsÐsØÔ3Ô:×FÒFÐGhð  kEð  xCð  kEð  kEñ  Fô  Fð  FØÔ3×BÒBÀ8ÑLÔLÐLØÔ3Ô:×EÒEÀdÑKÔKÐKÐKà×(Ò(Ð)OÐQWÑXÔXÐXøøåð Bð Bð BÝ”Ð=¸!Ð=Ð=½t¼}ÑMÔMÐMØ× Ò Ð!7¸ÑAÔAÐAÐAÐAÐAÐAÐAøøøøðBøøøð �4àˆus,   Æ-F0 Æ0F6Í+A(S# ÏDS# Ó#
T/Ó-8T*Ô*T/r   r§   c                 ó–   — ddl m} |                     |                     ||
||p||||	|t	          |pd¦  «        ¬¦	  «	        ¦  «         dS )zQOpen the Millionaire game (the modal card) over MyTV; MyTV stays open underneath.r   )Úmillionairer   )	r˜  rà  r  r€   r  rä  rå  rQ  r­   N)Ú	wcs.gamesr�  Ú	open_gameÚSubjectr¤   )r2   rœ   r˜  r  r€   r  rß  r  rä  rå  rà  r�  s               r8   r÷  zMyTVDialog._show_game_dialog"  s�   € ð 	*Ð)Ð)Ð)Ð)Ð)Ø×Ò˜k×1Ò1Ø J°TÀ&ÐBRÈFÐboØ'¸ÐQWÕadÐenÐetÐrtÑauÔauð 2ñ wô wñ 	xô 	xð 	xð 	xð 	xr9   c                 ó¼   — | j         | j        | j        | j        fv rdS | j                             d¦  «        dk    }| j                             d¦  «        dk    }|p|S )z?Check if background needs PIL processing (effects or collages).TÚmytv_background_blurr@   Úmytv_background_glow)rj   rm   ri  rj  r,   rÓ   )r2   Úblur_enabledÚglow_enableds      r8   rl   z+MyTVDialog._is_background_processing_needed/  si   € ð Œ=˜TÔ4°dÔ6LÈdÔNaÐbÐbÐbØ�4ð ”z×,Ò,Ð-CÑDÔDÈÒNˆØ”z×,Ò,Ð-CÑDÔDÈÒNˆØÐ+˜|Ð+r9   c                 ó^  — | j                              d¦  «        pd}ddddddd	œ}|                     |d¦  «        }|| _        t	          j        d
|› d|› �t          j        ¦  «         |                      dt          |¦  «        ¦  «         | j                              d¦  «        pd}	 t          |¦  «        }n# t          $ r d}Y nw xY wt          d|dz  z  ¦  «        }|d›d�}|                      d|¦  «         | j                              d¦  «        dk    }|                      d|rdnd¦  «         |rx| j                              d¦  «        pd}	dddddd œ}
|
                     |	d¦  «        }|                      d!|¦  «         t	          j        d"|	› d#|› d$�t          j        ¦  «         d%S d%S )&zMRead background settings and set window properties for XML. Returns mode_idx.Úmytv_background_modeõ   Fanart seriÃ¡lur   r   r   r   r   r   )u	   StatickÃ©rš  zStill epizodyu   KolÃ¡Å¾ posterÅ¯u   KolÃ¡Å¾ stillÅ¯u   Mix kolÃ¡Å¾z[MyTV] Background mode: 'z' -> úWCS.MyTV.BackgroundModeÚmytv_background_dimÚ50r°  éÿ   rH  Ú02XÚ000000zWCS.MyTV.BackgroundDimÚmytv_background_animationr@   zWCS.MyTV.Animationr   Úmytv_anim_styleú
Jemny dechr  r$  r\  Ú3Ú4)r£  zPulzujici srdcezPlynouci tokzDynamicka vlnazZrcadlovy odrazzWCS.MyTV.AnimStylez[MyTV] Animation: style=z (idx=rµ  N)r,   rÓ   r¢   rj   r�   r¸   rº   rC   r¤   r´   r   )r2   Ú
mode_valueÚmode_mapÚmode_idxÚdim_pctÚdim_valÚ	dim_alphaÚdim_hexÚanim_enabledrp  Ú	style_mapÚ	style_idxs               r8   ri   z'MyTVDialog._setup_background_properties:  s  € ð ”Z×*Ò*Ð+AÑBÔBÐWÐFWˆ
ð Ø ØØ !Ø Øð
ð 
ˆð —<’< 
¨AÑ.Ô.ˆØ ˆŒåŒÐH¨ZÐHÐH¸hÐHÐHÍ$Ì,ÑWÔWÐWØ×ÒÐ2µC¸±M´MÑBÔBÐBð ”*×'Ò'Ð(=Ñ>Ô>ÐFÀ$ˆð	Ý˜'‘l”lˆGˆGøÝð 	ð 	ð 	ØˆGˆGˆGð	øøøõ ˜˜w¨™}Ñ-Ñ.Ô.ˆ	ØÐ*Ð*Ð*Ð*ˆØ×ÒÐ1°7Ñ;Ô;Ð;ð ”z×,Ò,Ð-HÑIÔIÈVÒSˆØ×ÒÐ-¸Ð/M¨v¨vÈ2ÑNÔNÐNàð 	Yà”J×)Ò)Ð*;Ñ<Ô<ÐLÀˆEà!Ø#&Ø #Ø"%Ø#&ðð ˆIð "Ÿš e¨SÑ1Ô1ˆIØ×ÒÐ1°9Ñ=Ô=Ð=ÝŒHÐI°ÐIÐI¸YÐIÐIÐIÍ4Ì<ÑXÔXÐXÐXÐXð	Yð 	Ys   Â(B8 Â8CÃCc                 ó  — |                       d¦  «        pd}	 t          |¦  «        }n# t          $ r
 | j        }Y nw xY w| j                             d¦  «        dk    }| j                             d¦  «        dk    }|p|}|s|| j        | j        | j        fv rdS t          s!t          j
        dt          j        ¦  «         dS d}|| j        k    r‡|sc	 |                      d¦  «        }|                     ¦   «         }	|	d	k    r*|                     |	¦  «        }
|
                      d
¦  «        }n#  Y dS xY w|sdS | j                             |¦  «        }|sdS d	dl}|                     | j        |||fd¬¦  «                             ¦   «          dS )zCUpdate background image based on current mode and selected channel.r›  r$  r”  r@   r•  Nz*[MyTV] PIL not available, effects disabledr|   r   r�   Trx  )rŸ   r´   r   rM  r,   rÓ   rk   rN  ÚPIL_AVAILABLEr�   r¸   rO  rg   rŒ   rž   r-   r    rA   r:  Ú_generate_background_asyncrG   )r2   r�   Úmode_strÚmoder–  r—  Úeffects_enabledrx   r“   r¥   r•   rA   s               r8   rn   zMyTVDialog._update_backgroundk  sÜ  € à×#Ò#Ð$=Ñ>Ô>ÐEÀ#ˆð	"Ý�x‘=”=ˆDˆDøÝð 	"ð 	"ð 	"Ø”>ˆDˆDˆDð	"øøøð ”z×,Ò,Ð-CÑDÔDÈÒNˆØ”z×,Ò,Ð-CÑDÔDÈÒNˆØ&Ð6¨,ˆð ð 	 4¨D¬N¸D¼NÈDÌMÐ+ZÐ#ZÐ#ZØˆFõ ð 	ÝŒHÐAÅ4Ä?ÑSÔSÐSØˆFð ˆØ�4”>Ò!Ð!àð ðØ#'§?¢?°4Ñ#8Ô#8�LØ&×:Ò:Ñ<Ô<�CØ˜a’x�xØ+×7Ò7¸Ñ<Ô<˜Ø%)×%5Ò%5°lÑ%CÔ%C˜
øøðØ�F�Føøøàð Ø�àÔ*×<Ò<¸ZÑHÔHˆGØð Ø�ð 	ÐÐÐØ×ÒØÔ2Ø˜
 GÐ,Øð 	ñ 	
ô 	
÷ Š%‰'Œ'ˆ'ˆ'ˆ's   ™) ©=¼=ÃAD, Ä,D1c                 óò
  — 	 | j                              d¦  «        dk    }| j                              d¦  «        pd}| j                              d¦  «        dk    }| j                              d¦  «        pd}d|› |› d	|› |› �}d
}	d
}
|| j        k    r	d}
d|› �}�ne|| j        k    ry	 |                      d¦  «        }|                     ¦   «         dk    r(|                     d¦  «                             d¦  «        }
n#  Y nxY w|
sd
S dt          |
¦  «        › d|› �}�ná|| j	        k    ry	 |                      d¦  «        }|                     ¦   «         dk    r(|                     d¦  «                             d¦  «        }
n#  Y nxY w|
sd
S dt          |
¦  «        › d|› �}�n]g }|| j
        k    rz|rv|j        ro|j        d
d…         D ]_}|                     d¦  «        p|                     d¦  «        }|r1|                     d¦  «        sd|› �}|                     d|f¦  «         Œ`�n·|| j        k    r•	 |                      d¦  «        }t!          t#          d|                     ¦   «         ¦  «        ¦  «        D ]E}|                     |¦  «        }|                     d¦  «        }|r|                     d|f¦  «         ŒF�n#  Y �nxY w|| j        k    �r|rv|j        ro|j        d
d…         D ]_}|                     d¦  «        p|                     d¦  «        }|r1|                     d¦  «        sd|› �}|                     d|f¦  «         Œ`	 |                      d¦  «        }t!          t#          d|                     ¦   «         ¦  «        ¦  «        D ]E}|                     |¦  «        }|                     d¦  «        }|r|                     d|f¦  «         ŒFn#  Y nxY w|sd
S d|› d|› dt'          |¦  «        › d|› �}| j                             |¦  «        }|r.|                      d|¦  «         |                      dd¦  «         d
S || j        | j        | j	        fv rD|                      |
¦  «        }	|	r,|	                     d¦  «        }	|                      |	dd ¦  «        }	n6|| j        k    r|                      |¦  «        }	n|                      |¦  «        }	|	r`|                      |	¦  «        }	| j                             ||	¦  «        }|r0|                      d|¦  «         |                      dd¦  «         d
S d
S d
S # t<          $ r-}t?          j         d!|› �t>          j!        ¦  «         Y d
}~d
S d
}~ww xY w)"z6Generate background with effects in background thread.r”  r@   Úmytv_background_blur_radiusÚ5r•  Úmytv_background_glow_intensityr¤  ÚbrF  NzQspecial://home/addons/plugin.video.milionar/resources/media/hub_background_v2.jpgÚ
bg_static_r\   r   r  Ú
bg_fanart_r`  rŠ  Ú	bg_still_rË   r™   r€   rš   zhttps://image.tmdb.org/t/p/w342ro  é   Úbg_collage_rX   rY   ÚRGBé€  é8  z$[MyTV] Error generating background: )"r,   rÓ   rk   rM  rg   rŠ   rž   r  ÚhashrN  rm   r¡   r¢   r£   rµ   ri  rL  rñ   rj  r¹   r/   Úget_asset_pathrC   Ú_download_imageÚconvertÚ_resize_to_coverÚ_generate_mix_collageÚ_generate_collageÚ_apply_effectsÚsave_pil_imagerÔ   r�   r¸   r)  )r2   r´  r�   rx   Úblur_onÚblur_rÚglow_onÚglow_iÚeffects_keyÚresult_imageÚ
source_urlr¼   ry   rS  r§   r€   r‘  r•   rŠ  Ú
cache_pathr3  s                        r8   r²  z%MyTVDialog._generate_background_async   s�  € ðx	Pà”j×+Ò+Ð,BÑCÔCÀvÒMˆGØ”Z×*Ò*Ð+HÑIÔIÐPÈSˆFØ”j×+Ò+Ð,BÑCÔCÀvÒMˆGØ”Z×*Ò*Ð+KÑLÔLÐSÐPSˆFØA˜gÐA vÐAÐA°ÐA¸ÐAÐAˆKàˆLØˆJð �t”~Ò%Ð%Øp�
Ø6¨Ð6Ð6�	‘	ð ˜œÒ'Ð'ðØ#'§?¢?°4Ñ#8Ô#8�LØ#×(Ò(Ñ*Ô*¨QÒ.Ð.Ø%1×%=Ò%=¸aÑ%@Ô%@×%GÒ%GÈÑ%QÔ%Q˜
øøðØ�DøøøØ!ð Ø�FØI­¨jÑ)9Ô)9ÐIÐI¸KÐIÐI�	‘	ð ˜œÒ&Ð&ðØ#'§?¢?°4Ñ#8Ô#8�LØ#×(Ò(Ñ*Ô*¨QÒ.Ð.Ø%1×%=Ò%=¸aÑ%@Ô%@×%GÒ%GÈÑ%PÔ%P˜
øøðØ�DøøøØ!ð Ø�FØH­¨ZÑ(8Ô(8ÐHÐH¸;ÐHÐH�	‘	ð �à˜4Ô2Ò2Ð2Øð B 7Ô#6ð BØ&-Ô&9¸#¸2¸#Ô&>ð Bð B˜FØ%+§Z¢Z°Ñ%>Ô%>Ð%VÀ&Ç*Â*ÈXÑBVÔBV˜FØ%ð BØ'-×'8Ò'8¸Ñ'@Ô'@ð !XØ-WÈvÐ-WÐ-W FØ &§¢¨x¸Ð.@Ñ AÔ AÐ Aøùà˜TÔ3Ò3Ð3ðØ'+§¢°tÑ'<Ô'<˜Ý!&¥s¨2¨|×/@Ò/@Ñ/BÔ/BÑ'CÔ'CÑ!DÔ!Dð @ð @˜AØ#/×#;Ò#;¸AÑ#>Ô#>˜DØ$(§K¢K°Ñ$8Ô$8˜EØ$ð @Ø &§¢¨w¸Ð.>Ñ ?Ô ?Ð ?øñ	@øð
Ø™øøøà˜TÔ0Ò0Ñ0Øð B 7Ô#6ð BØ&-Ô&9¸"¸1¸"Ô&=ð Bð B˜FØ%+§Z¢Z°Ñ%>Ô%>Ð%VÀ&Ç*Â*ÈXÑBVÔBV˜FØ%ð BØ'-×'8Ò'8¸Ñ'@Ô'@ð !XØ-WÈvÐ-WÐ-W FØ &§¢¨x¸Ð.@Ñ AÔ AÐ AøðØ'+§¢°tÑ'<Ô'<˜Ý!&¥s¨1¨l×.?Ò.?Ñ.AÔ.AÑ'BÔ'BÑ!CÔ!Cð @ð @˜AØ#/×#;Ò#;¸AÑ#>Ô#>˜DØ$(§K¢K°Ñ$8Ô$8˜EØ$ð @Ø &§¢¨w¸Ð.>Ñ ?Ô ?Ð ?øð	@øð
Ø˜øøøàð Ø�FàY¨$ÐYÐY°ÐYÐY½cÀ&¹k¼kÐYÐYÈKÐYÐY�	àœ×3Ò3°IÑ>Ô>ˆJØð Ø× Ò Ð!=¸zÑJÔJÐJà× Ò Ð!<¸fÑEÔEÐEØ�ð ˜œ¨¬¸¼ÐFÐFÐFà#×3Ò3°JÑ?Ô?�Øð SØ#/×#7Ò#7¸Ñ#>Ô#>�Là#'×#8Ò#8¸ÀtÈTÑ#RÔ#R�Løð ˜4Ô.Ò.Ð.Ø#'×#=Ò#=¸fÑ#EÔ#E�L�Là#'×#9Ò#9¸&Ñ#AÔ#A�Làð Jà#×2Ò2°<Ñ@Ô@�à!œ[×7Ò7¸	À<ÑPÔP�
Øð JØ×$Ò$Ð%AÀ:ÑNÔNÐNà×$Ò$Ð%@À&ÑIÔIÐIÐIÐIðJð Jð
Jð Jøõ
 ð 	Pð 	Pð 	PÝŒHÐ?¸AÐ?Ð?ÅÄÑOÔOÐOÐOÐOÐOÐOÐOÐOøøøøð	Pøøøs˜   ‚B#T? Â&AC< Ã;T? Ã<D Ã>T? Ä"T? Ä*AF  Å?T? Æ FÆT? ÆB)T? È5B
K Ê?T? ËKËB
T? ÍB
O ÏT? ÏOÏT? Ï$A#T? Ñ	C0T? Ô?
U6Õ	"U1Õ1U6c                 ó*  — |j         |j        z  }||z  }||k    r|}t          ||z  ¦  «        }n|}t          ||z  ¦  «        }|                     ||ft          j        ¦  «        }||z
  dz  }||z
  dz  }	|                     ||	||z   |	|z   f¦  «        S )z6Resize image to cover target dimensions (crop excess).r   )ÚwidthÚheightr´   Úresizer   ÚLANCZOSÚcrop)
r2   ÚimageÚtarget_wÚtarget_hÚ	img_ratioÚtarget_ratioÚnew_hÚnew_wÚleftÚtops
             r8   rÇ  zMyTVDialog._resize_to_cover  s¯   € à”K %¤,Ñ.ˆ	Ø (Ñ*ˆà�|Ò#Ð#ØˆEÝ˜ 	Ñ)Ñ*Ô*ˆEˆEàˆEÝ˜ 	Ñ)Ñ*Ô*ˆEà—’˜e U˜^­U¬]Ñ;Ô;ˆà˜Ñ  QÑ&ˆØ�xÑ AÑ%ˆØ�zŠz˜4  d¨X¡o°s¸X±~ÐFÑGÔGÐGr9   c                 ó~  — ddl }ddlm} t          |¦  «        }|dk    rd\  }}n|dk    rd\  }}n|dk    rd	\  }}nd
\  }}d\  }}||z  }	||z  }
t	          j        d||fd¦  «        }t          |d||z  …         ¦  «        D �]7\  }\  }}|||z  k    r �n$	 |                      |¦  «        }|rÑ|                     d¦  «        }|j	        |j
        z  }|	|
z  }||k    r|
}t          ||z  ¦  «        }n|	}t          ||z  ¦  «        }|                     ||ft          j        ¦  «        }||	z
  dz  }||
z
  dz  }|                     ||||	z   ||
z   f¦  «        }||z  }||z  }|                     |||	z  ||
z  f¦  «         Œÿ# t           $ r-}t#          j        d|› �t"          j        ¦  «         Y d}~�Œ1d}~ww xY w|S )z$Generate a grid collage from images.r   N©ÚBytesIOr   )r   r   r¾  )r   r   é	   )r   r   )r   r   ©rÁ  rÂ  rÀ  )r†  r†  r†  r   z[MyTV] Collage image error: )r•  Úiorå  r¹   r   Únewrd   rÅ  rÆ  rÕ  rÖ  r´   r×  rØ  rÙ  ÚpasterÔ   r�   r¸   rO  )r2   rS  r•  rå  ÚcountÚcolsÚrowsÚcanvas_wÚcanvas_hÚcell_wÚcell_hÚcanvasr‘  Úimg_typer_  ÚimgrÝ  Ú
cell_ratiorß  rà  rá  râ  ÚcolÚrowr3  s                            r8   rÉ  zMyTVDialog._generate_collage.  sT  € àˆˆˆØÐÐÐÐÐõ �F‘”ˆØ�AŠ:ˆ:Ø‰JˆD�$�$Ø�aŠZˆZØ‰JˆD�$�$Ø�aŠZˆZØ‰JˆD�$�$à‰JˆD�$ð (Ñˆ�(Ø˜TÑ!ˆØ˜TÑ!ˆå”˜5 8¨XÐ"6¸ÑEÔEˆå"+¨F°:°D¸±I°:Ô,>Ñ"?Ô"?ð 	Nñ 	NÑˆA‰�˜#Ø�D˜4‘KÒÐØ‘ðNØ×*Ò*¨3Ñ/Ô/�Øð DàŸ+š+ eÑ,Ô,�CØ #¤	¨C¬JÑ 6�IØ!'¨&¡�Jà  :Ò-Ð-Ø &˜Ý # E¨IÑ$5Ñ 6Ô 6˜˜à &˜Ý # E¨IÑ$5Ñ 6Ô 6˜àŸ*š* e¨U ^µU´]ÑCÔC�Cð " F™N¨qÑ0�DØ  6™>¨aÑ/�CØŸ(š( D¨#¨t°f©}¸cÀF¹lÐ#KÑLÔL�Cð ˜d™(�CØ˜t™)�CØ—L’L  s¨V¡|°S¸6±\Ð&BÑCÔCÐCøøÝð Nð Nð NÝ”Ð;¸Ð;Ð;½T¼_ÑMÔMÐMÐMÐMÐMÐMÑMøøøøðNøøøð ˆs   ÂC(FÆ
F:Æ"F5Æ5F:c                 óP  — ddl }ddlm} d\  }}t          j        d||fd¦  «        }|                     |¦  «         g d¢}t          |dt          |¦  «        …         ¦  «        D �]?\  }\  }	}
|t          |¦  «        k    r �n"||         \  }}}}	 |                      |
¦  «        }|rÁ| 	                    d¦  «        }|j
        |j        z  }||z  }||k    r|}t          ||z  ¦  «        }n|}t          ||z  ¦  «        }|                     ||ft          j        ¦  «        }||z
  dz  }||z
  dz  }|                     ||||z   ||z   f¦  «        }|                     |||f¦  «         �Œ# t"          $ r-}t%          j        d	|› �t$          j        ¦  «         Y d}~�Œ9d}~ww xY w|S )
z3Generate creative mixed collage with varying sizes.r   Nrä  rç  rÀ  )é   rù  r†  )
)r   r   é€  é  )r   rû  rú  rû  )rú  r   éà  éh  )rú  rý  rü  rý  )rú  iÐ  rü  rý  )é`  r   é�  é  )éð  r   rÿ  r   )rþ  r   rÿ  r   )r  r   rÿ  r   )rþ  rû  i   rû  r   z [MyTV] Mix collage image error: )rb  rè  rå  r   ré  rØ   rd   r¹   rÅ  rÆ  rÕ  rÖ  r´   r×  rØ  rÙ  rê  rÔ   r�   r¸   rO  )r2   rS  rb  rå  rî  rï  rò  Ú	positionsr‘  ró  r_  ÚxÚyÚwrò   rô  rÝ  rõ  rß  rà  rá  râ  r3  s                          r8   rÈ  z MyTVDialog._generate_mix_collageh  s  € àˆˆˆØÐÐÐÐÐà'Ñˆ�(Ý”˜5 8¨XÐ"6¸ÑEÔEˆà�Š�vÑÔÐð
ð 
ð 
ˆ	õ #,¨F°?µC¸	±N´N°?Ô,CÑ"DÔ"Dð 	Rñ 	RÑˆA‰�˜#Ø•C˜	‘N”NÒ"Ð"Ø‘à" 1œ‰JˆAˆq�!�QðRØ×*Ò*¨3Ñ/Ô/�Øð .ØŸ+š+ eÑ,Ô,�Cð !$¤	¨C¬JÑ 6�IØ!" Q¡�Jà  :Ò-Ð-Ø !˜Ý # E¨IÑ$5Ñ 6Ô 6˜˜à !˜Ý # E¨IÑ$5Ñ 6Ô 6˜àŸ*š* e¨U ^µU´]ÑCÔC�Cà! A™I¨!Ñ+�DØ  1™9¨Ñ*�CØŸ(š( D¨#¨t°a©x¸¸q¹Ð#AÑBÔB�Cà—L’L  q¨! fÑ-Ô-Ð-ùøÝð Rð Rð RÝ”Ð?¸AÐ?Ð?ÅÄÑQÔQÐQÐQÐQÐQÐQÑQøøøøðRøøøð ˆs   ÂCE,Å,
F#Å6"FÆF#c                 óR  — | j                              d¦  «        dk    rZ	 t          | j                              d¦  «        pd¦  «        }|                     t	          j        |¬¦  «        ¦  «        }n#  Y nxY w| j                              d¦  «        dk    r�	 ddlm} t          | j                              d	¦  «        pd
¦  «        }|                     |¦  «        }| 	                    d|dz  z   ¦  «        }|                     t	          j        |¬¦  «        ¦  «        }n#  Y nxY w|S )z*Apply blur/glow effects based on settings.r”  r@   r·  r¸  )Úradiusr•  r   )ÚImageEnhancer¹  r¤  r   gš™™™™™©?)
r,   rÓ   r´   Úfilterr   ÚGaussianBlurÚPILr  Ú
BrightnessÚenhance)r2   rÚ  r  r  Ú	intensityÚenhancers         r8   rÊ  zMyTVDialog._apply_effects¢  s5  € ð Œ:× Ò Ð!7Ñ8Ô8¸FÒBÐBðÝ˜TœZ×2Ò2Ð3PÑQÔQÐXÐUXÑYÔY�ØŸš¥[Ô%=ÀVÐ%LÑ%LÔ%LÑMÔM��øðØ�øøøð Œ:× Ò Ð!7Ñ8Ô8¸FÒBÐBð	Ø,Ð,Ð,Ð,Ð,Ð,Ý ¤
× 5Ò 5Ð6VÑ WÔ WÐ ^Ð[^Ñ_Ô_�	à'×2Ò2°5Ñ9Ô9�Ø ×(Ò(¨¨i¸$Ñ.>Ñ)?Ñ@Ô@�àŸš¥[Ô%=ÀYÐ%OÑ%OÔ%OÑPÔP��øðØ�øøøàˆs    AA2 Á2A6ÂBD  Ä D$c                 óÄ  — ddl }ddlm} 	 |                     d¦  «        r>t	          j        |¦  «        }t	          j        |¦  «        rt          j        |¦  «        S dS | 	                    |d¬¦  «        }|j
        dk    r"t          j         ||j        ¦  «        ¦  «        S n<# t          $ r/}t          j        d|› d	|› �t          j        ¦  «         Y d}~nd}~ww xY wdS )
z-Download image from URL and return PIL Image.r   Nrä  z
special://r  r  rB  z[MyTV] Download image error: z - )r•  rè  rå  r£   ÚxbmcvfsÚtranslatePathÚexistsr   Úopenr¢   rM  ÚcontentrÔ   r�   r¸   rO  )r2   r_  r•  rå  Ú
local_pathr›  r3  s          r8   rÅ  zMyTVDialog._download_image»  s  € àˆˆˆØÐÐÐÐÐð	Sà�~Š~˜lÑ+Ô+ð Ý$Ô2°3Ñ7Ô7�
Ý”> *Ñ-Ô-ð 2Ý œ: jÑ1Ô1Ð1Ø�tð  —|’| C°�|Ñ4Ô4ˆHØÔ# sÒ*Ð*Ý”z ' '¨(Ô*:Ñ";Ô";Ñ<Ô<Ð<ð +øåð 	Sð 	Sð 	SÝŒHÐ@°SÐ@Ð@¸QÐ@Ð@Å$Ä/ÑRÔRÐRÐRÐRÐRÐRÐRøøøøð	Søøøð ˆts   ŒAB$ ÁAB$ Â$
CÂ.%CÃC)r:   r;   )F)T)NF)r˜   )r   NNr§   )N)aÚ__name__Ú
__module__Ú__qualname__rk   rM  rN  rm   ri  rj  r(   rK   rE   rz   rp   r�   ro   r�   rÏ   rÒ   r  r‘   rÐ   r×   rÕ   rk  rh  rd  r£  rÃ  rÕ  r  ru   rö  r¼  rû  r   r¾  r,  r<  rL  rô  rý  r¿  r   rƒ  rÓ  r}  r™  rï  r±  rü  r  rþ  r  rî  rø  rü  ró  rù  rú  r  r.  r1  r³  rñ  rÔ  rø  r>  r+  rX  rv   r½  rÀ  rò  rº  r  rÄ  rh  rÿ  r»  rq  rÑ   rõ  r~  r²  rð  r÷  rl   ri   rn   r²  rÇ  rÉ  rÈ  rÊ  rÅ  Ú__classcell__)r7   s   @r8   r   r      sm  ø€ € € € € à€IØ€IØ€HØÐØÐØ€Nð!ð !ð !ð !ð !ð*"ð "ð "ð "ð27ð 7ð 7ðQ,ð Q,ð Q,ðh"(ð "(ð "(ð "(ðH)+ð )+ð )+ðV8\ð 8\ð 8\ðt^)ð ^)ð ^)ð ^)ð@Cdð Cdð CdðJM$ð M$ð M$ð^8ð 8ð 8ð$Tð $Tð $TðL<ð <ð <ð|Lð Lð Lð Lð\Fð Fð FðP/Vð /Vð /Vðb8Nð 8Nð 8Nðtð ð ð@Qð @Qð @QðDC1ð C1ð C1ð C1ð C1ðJ7ð 7ð 7ð 7ð 7ð<Q3ð Q3ð Q3ð Q3ð Q3ðf,'ð ,'ð ,'ð^ð ð ð	"ð 	"ð 	"ð4ð 4ð 4ð>ð ð ð
ð ð ð
Bð Bð Bð2.ð .ð .ð .ð` Fð  Fð  FðD+*ð +*ð +*ðbkð kð kðZ#ð #ð #ð"'ð 'ð 'ðRð ð ð6Cð Cð Cð UFð UFð UFðn;`ð ;`ð ;`ðzxð xð xðtð ð ð*@ð @ð @ðDVð Vð VðpO*ð O*ð O*ðbW.ð W.ð W.ðv01ð 01ð 01ðd#1ð #1ð #1ðJ%ð %ð %ð(ð (ð (ð*'(ð '(ð '(ðR$(ð $(ð $(ðT+ð +ð +ð @"ð @"ð @"ðDCð Cð Cð	ð 	ð 	ðð ð ð;ð ;ð ;ð$-ð $-ð $-ð $-ðLJð Jð JðX#ð #ð #ð #ð Fð Fð Fð-ð -ð -ð(ð ð ðð ð ð8 .ð  .ð  .ðDð ð ð ð,)ð )ð )ð)ð )ð )ðð ð ð426ð 26ð 26ðhð ð ð ð,Sð Sð Sð43Uð 3Uð 3Uðj
ð 
ð 
ð2Að Að Aðð ð ð&Ið Ið Ið` OSØ$,ðxð xð xð xð	,ð 	,ð 	,ð/Yð /Yð /Yðb3ð 3ð 3ð 3ðjzPð zPð zPðxHð Hð Hð$8ð 8ð 8ðt8ð 8ð 8ðtð ð ð2ð ð ð ð ð ð r9   r   r   c                 óð   — |                       d¦  «        pd}dddddœ}|                     |d¦  «        }	t          |	|                      d¦  «        d	d
||||||¬¦
  «
        }
|
                     ¦   «          ~
d S )NÚmytv_designr$  zai/DialogMyTV_classic.xmlzai/DialogMyTV.xmlzai/DialogMyTV_appletv.xmlzai/DialogMyTV_kodi.xml)r  r$  r\  r¤  ÚpathÚDefaultÚ1080i)Úshow_nav_sidebarÚnav_positionr   r   r   r    )rÓ   r¢   r   rU  ÚdoModal)r,   r   r!  r�   r   r   ÚeditÚdesignÚ
design_mapÚxml_fileÚdialogs              r8   Úshow_my_tv_dialogr(  Ò  s¡   € à×Ò˜mÑ,Ô,Ð3°€Fà(Ø Ø(Ø%ð	ð €Jð �~Š~˜fÐ&9Ñ:Ô:€HåØØ×Ò˜6Ñ"Ô"ØØØ)Ø!Ø%ØØØðñ ô €Fð ‡N‚NÑÔÐØˆˆr9   )Fr   Nr   r   F)#r�   r„   Ú	xbmcaddonr  Úosrˆ  r   Ú!wcs.ai.DialogAIChatRecommendationr   r   Úwcs.ai.MediaChannelManagerr   r+   Úwcs.ai.DialogAddMediar   r	   Úwcsr
   r   Úwcs.cachingr   r  r   r   r   r±  ÚImportErrorr¸   rO  r'  r   r   r   r   r(  © r9   r8   ú<module>r2     sª  ðà €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø gÐ gÐ gÐ gÐ gÐ gÐ gÐ gØ PÐ PÐ PÐ PÐ PÐ PØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )ðUØ1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø€M€MøØð Uð Uð UØ€MØ€D„HÐBÀDÄOÑTÔTÐTÐTÐTðUøøøð "Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "ðt>ð t>ð t>ð t>ð t>Ð+ñ t>ô t>ð t>ðn}ð ð ð ð ð s   Á A ÁA-Á,A-