§
   öiè3 |7mã                   óv   — d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	 ddl
mZ  G d„ d¦  «        Zdad„ ZdS )a*  
Monitor pro countdown dialog pri prehravani z MyTV playlistu.
Sleduje cas prehravani a pred koncem kazde epizody zobrazi
AutoplayCountdownDialog s info o dalsi polozce v playlistu.

Pouziva poll-based pristup (ne xbmc.Player callback) protoze
playlist polozky bezi v separatnich Python procesech.
é    N)ÚurlparseÚparse_qsÚunquote_plus)ÚAutoplayCountdownDialogc                   óŽ   ‡ — e Zd ZdZdZdZdZdZˆ fd„Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚPlaylistCountdownMonitorzÁMonitor pro countdown dialog pri playlist prehravani.
    
    Akce:
    - Play Now / Timeout -> playnext() (preskoci na dalsi v playlistu)
    - Cancel -> stop() (zastavi cele prehravani)
    é   é   é   Nc                 ó„   •— | j         €2t          ¦   «                              | ¦  «        | _         d| j         _        | j         S )NF)Ú	_instanceÚsuperÚ__new__Ú_inited)ÚclsÚ	__class__s    €ús/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/playback/PlaylistCountdownMonitor.pyr   z PlaylistCountdownMonitor.__new__#   s4   ø€ ØŒ=Ð Ý!™GœGŸOšO¨CÑ0Ô0ˆCŒMØ$)ˆCŒMÔ!ØŒ}Ðó    c                 óè   — | j         rd S d| _        d | _        t          j        ¦   «         | _        d | _        |                      ¦   «          d| _         t          j        dt          j	        ¬¦  «         d S )NFTz8[plugin.video.wcs] PlaylistCountdownMonitor: Initialized©Úlevel)
r   Ú_activeÚ_monitor_threadÚxbmcÚPlayerÚ_playerÚ_external_metaÚ_load_settingsÚlogÚLOGINFO©Úselfs    r   Ú__init__z!PlaylistCountdownMonitor.__init__)   sn   € ØŒ<ð 	ØˆFØˆŒØ#ˆÔÝ”{‘}”}ˆŒØ"ˆÔØ×ÒÑÔÐØˆŒÝŒÐKÕSWÔS_Ð`Ñ`Ô`Ð`Ð`Ð`r   c                 óN  — 	 t          j        ¦   «         }t          |                     d¦  «        pd¦  «        | _        t          dt          d| j        ¦  «        ¦  «        | _        t          |                     d¦  «        pd¦  «        | _        t          d| j        ¦  «        | _        | j        | j        k    rt          d| j        dz
  ¦  «        | _        t          d| j        | j        z
  ¦  «        | _        dS # t          t          f$ r d	| _        d| _        d
| _        Y dS w xY w)zNacte nastaveni z addonu.Úautoplay_countdown_secondsÚ30é
   éx   Úautoplay_trigger_secondsÚ5r   é   é   é   N)Ú	xbmcaddonÚAddonÚintÚ
getSettingÚ_countdown_secondsÚmaxÚminÚ_trigger_secondsÚ_countdown_durationÚ
ValueErrorÚ	TypeError)r"   Úaddons     r   r   z'PlaylistCountdownMonitor._load_settings4   s!  € ð	*Ý”OÑ%Ô%ˆEÝ&)¨%×*:Ò*:Ð;WÑ*XÔ*XÐ*`Ð\`Ñ&aÔ&aˆDÔ#Ý&)¨"­c°#°tÔ7NÑ.OÔ.OÑ&PÔ&PˆDÔ#Ý$'¨×(8Ò(8Ð9SÑ(TÔ(TÐ([ÐX[Ñ$\Ô$\ˆDÔ!Ý$'¨¨4Ô+@Ñ$AÔ$AˆDÔ!ØÔ$¨Ô(?Ò?Ð?Ý(+¨A¨tÔ/FÈÑ/JÑ(KÔ(K�Ô%Ý'*¨1¨dÔ.EÈÔH]Ñ.]Ñ'^Ô'^ˆDÔ$Ð$Ð$øÝ�IÐ&ð 	*ð 	*ð 	*Ø&(ˆDÔ#Ø$%ˆDÔ!Ø')ˆDÔ$Ð$Ð$Ð$ð	*øøøs   ‚C6C: Ã:&D$Ä#D$c           	      óÂ  — |                       ¦   «          || _        d| _        | j        rB| j                             ¦   «         r)d| _        | j                             d¬¦  «         d| _        |rdnd}t          j        d|› d| j        › d	| j	        › d
�t          j
        ¬¦  «         t          j        | j        d¬¦  «        | _        | j                             ¦   «          dS )a+  Aktivuje monitoring prehravani.
        
        Args:
            meta: Volitelny dict s klici 'channel_id', 'tmdb_id', 'season', 'episode'.
                  Pokud je nastaven, pouzije se misto parsovani playlist URL.
                  Nutne pro manual playback (PlayMedia bez playlistu).
        TFr
   )Útimeoutzexternal metazplaylist URLz=[plugin.video.wcs] PlaylistCountdownMonitor: Activated (mode=z, countdown at zs, trigger at ús)r   ©ÚtargetÚdaemonN)r   r   r   r   Úis_aliveÚjoinr   r   r2   r5   r    Ú	threadingÚThreadÚ_monitor_loopÚstart)r"   ÚmetaÚmodes      r   Úactivatez!PlaylistCountdownMonitor.activateF   s  € ð 	×ÒÑÔÐØ"ˆÔØˆŒð Ôð 	  DÔ$8×$AÒ$AÑ$CÔ$Cð 	 Ø ˆDŒLØÔ ×%Ò%¨aÐ%Ñ0Ô0Ð0ØˆDŒLà"&Ð:ˆˆ¨NˆÝŒðkØðkð kØ*.Ô*Aðkð kØQUÔQfðkð kð kå”,ð	
ñ 	
ô 	
ð 	
õ  )Ô/°tÔ7IÐRVÐWÑWÔWˆÔØÔ×"Ò"Ñ$Ô$Ð$Ð$Ð$r   c                 ób   — d| _         d| _        t          j        dt          j        ¬¦  «         dS )zDeaktivuje monitoring.FNz8[plugin.video.wcs] PlaylistCountdownMonitor: Deactivatedr   )r   r   r   r   r    r!   s    r   Ú
deactivatez#PlaylistCountdownMonitor.deactivatec   s1   € àˆŒØ"ˆÔÝŒÐKÕSWÔS_Ð`Ñ`Ô`Ð`Ð`Ð`r   c                 óv  — t          j        dt           j        ¬¦  «         |                      ¦   «         s)t          j        dt           j        ¬¦  «         d| _        dS | j        rž|                      ¦   «         }|dk    r;t          j        d|d›d	�t           j        ¬¦  «         |                      |¦  «         n t          j        d
t           j        ¬¦  «         t          j        dt           j        ¬¦  «         d| _        dS d}| j        �r…| j	         
                    ¦   «         s"t          j        dt           j        ¬¦  «         �nJ	 t          j        t           j        ¦  «        }|                     ¦   «         }n# t          $ r d}Y nw xY w||k    râ|dk    r<t          j        d|› d|› d�t           j        ¬¦  «         |                      ¦   «         sn¼|}t          j        d|› �t           j        ¬¦  «         |                      ¦   «         s t          j        dt           j        ¬¦  «         |                      ¦   «         }|dk    rt#          j        d¦  «         �ŒZ|                      |¦  «         �Œqt#          j        d¦  «         | j        �°…d| _        t          j        dt           j        ¬¦  «         dS )z8Hlavni monitoring smycka -- sleduje playlist prehravani.zA[plugin.video.wcs] PlaylistCountdownMonitor: Monitor loop startedr   zL[plugin.video.wcs] PlaylistCountdownMonitor: Playback never started, exitingFNr   zD[plugin.video.wcs] PlaylistCountdownMonitor: PlayMedia mode (total: ú.0fr<   zK[plugin.video.wcs] PlaylistCountdownMonitor: PlayMedia mode - no total timez?[plugin.video.wcs] PlaylistCountdownMonitor: Monitor loop endedéÿÿÿÿzF[plugin.video.wcs] PlaylistCountdownMonitor: Playback stopped, exitingz>[plugin.video.wcs] PlaylistCountdownMonitor: Position changed z -> z, waiting for new videozJ[plugin.video.wcs] PlaylistCountdownMonitor: Monitoring playlist position zO[plugin.video.wcs] PlaylistCountdownMonitor: No next item (single episode mode)r
   r	   )r   r   r    Ú_wait_for_playback_startÚ
LOGWARNINGr   r   Ú_wait_for_total_timeÚ_monitor_episoder   Ú	isPlayingÚPlayListÚPLAYLIST_VIDEOÚgetpositionÚ	ExceptionÚ_wait_for_new_videoÚ_has_next_in_playlistÚtimeÚsleep)r"   Ú
total_timeÚlast_playlist_posÚplaylistÚcurrent_poss        r   rD   z&PlaylistCountdownMonitor._monitor_loopk   s8  € åŒÐTÕ\`Ô\hÐiÑiÔiÐið ×,Ò,Ñ.Ô.ð 	ÝŒHÐcÕkoÔkzÐ{Ñ{Ô{Ð{Ø ˆDŒLØˆFð Ôð 	Ø×2Ò2Ñ4Ô4ˆJØ˜AŠ~ˆ~Ý”ð2Ø)Ð1ð2ð 2ð 2åœ,ðñ ô ð ð
 ×%Ò% jÑ1Ô1Ð1Ð1å”ØaÝœ/ðñ ô ð õ ŒHÐVÕ^bÔ^jÐkÑkÔkÐkØ ˆDŒLØˆFð ÐàŒlñ &	Ø”<×)Ò)Ñ+Ô+ð å”ÐaÕimÔiuÐvÑvÔvÐvÙð!Ýœ=­Ô)<Ñ=Ô=�Ø&×2Ò2Ñ4Ô4��øÝð !ð !ð !Ø ���ð!øøøð Ð/Ò/Ð/Ø$¨Ò)Ð)å”Hð  ZÐ^oð  Zð  Zð  vAð  Zð  Zð  Zõ  bfô  bnð  oñ  oô  oð  oØ×3Ò3Ñ5Ô5ð Øà$/Ð!Ý”ÐsÐfqÐsÐsÕ{ô  |Hð  Iñ  Iô  Ið  Ið ×1Ò1Ñ3Ô3ð DÝ”HÐnÕvzô  wCð  Dñ  Dô  Dð  Dð "×6Ò6Ñ8Ô8�
Ø ’?�?Ý”J˜q‘M”M�MÙð ×%Ò% jÑ1Ô1Ð1áåŒJ�q‰MŒMˆMðM Œlñ &	ðP ˆŒÝŒÐRÕZ^ÔZfÐgÑgÔgÐgÐgÐgs   Å	2E< Å<FÆ
Fc                 óž   — t          d¦  «        D ]<}| j        s dS | j                             ¦   «         r dS t	          j        d¦  «         Œ=dS )z$Pocka az zacne prehravani (max 30s).é<   FTç      à?)Úranger   r   rR   rY   rZ   )r"   Ú_s     r   rN   z1PlaylistCountdownMonitor._wait_for_playback_start·   sY   € å�r‘”ð 	ð 	ˆAØ”<ð Ø�u�uØŒ|×%Ò%Ñ'Ô'ð Ø�t�tÝŒJ�s‰OŒOˆOˆOØˆur   c                 ó  — t          d¦  «        D ]n}| j        r| j                             ¦   «         s dS 	 | j                             ¦   «         }|dk    r|c S n# t
          $ r Y nw xY wt          j        d¦  «         ŒodS )z)Pocka na dostupnost total time (max 10s).éd   r   çš™™™™™¹?)rb   r   r   rR   ÚgetTotalTimerV   rY   rZ   )r"   rc   Útotals      r   rP   z-PlaylistCountdownMonitor._wait_for_total_timeÁ   s    € å�s‘”ð 		ð 		ˆAØ”<ð  t¤|×'=Ò'=Ñ'?Ô'?ð Ø�q�qðØœ×1Ò1Ñ3Ô3�Ø˜1’9�9Ø �L�L�Lð øåð ð ð Ø�ðøøøåŒJ�s‰OŒOˆOˆOØˆqs   ¶ AÁ
A'Á&A'c           
      ó2  — d}	 | j                              ¦   «         }n# t          $ r Y nw xY wt          j        d|d›d�t          j        ¬¦  «         t          j        d¦  «         | j        r| j          	                    ¦   «         s6t          j        d¦  «         | j        r| j          	                    ¦   «         sdS t          d	¦  «        D ]ú}| j        s dS | j          	                    ¦   «         s1t          j        d
¦  «         | j          	                    ¦   «         s dS ŒV	 | j                              ¦   «         }| j                              ¦   «         }|dk    rFt          ||z
  ¦  «        dk    r0t          j        d|d›d|d›d|d›d�t          j        ¬¦  «          dS n# t          $ r Y nw xY wt          j        d¦  «         Œû	 | j                              ¦   «         }t          j        d|d›d�t          j        ¬¦  «         n# t          $ r Y nw xY wdS )aY  Pocka az se nacte nove video po PlayerControl(Next).
        
        Kodi po preskoku na dalsi playlist item chvili vraci
        getTotalTime()/getTime() stareho videa. Musime pockat
        az se totalTime zmeni (jiny nez stary).
        
        Returns:
            True pokud se nove video nactelo, False pokud prehravani skoncilo
        r   zO[plugin.video.wcs] PlaylistCountdownMonitor: Waiting for new video (old_total: rL   r<   r   r+   r
   Fre   r	   r'   zI[plugin.video.wcs] PlaylistCountdownMonitor: New video confirmed (total: z
s vs old: z	s, time: ú.1fTrf   z][plugin.video.wcs] PlaylistCountdownMonitor: TotalTime unchanged, using time fallback (time: )r   rg   rV   r   r   r    rY   rZ   r   rR   rb   ÚgetTimeÚabsrO   )r"   Ú	old_totalrc   Úcurrent_totalÚcurrent_times        r   rW   z,PlaylistCountdownMonitor._wait_for_new_videoÏ   s¥  € ð ˆ	ð	Øœ×1Ò1Ñ3Ô3ˆIˆIøÝð 	ð 	ð 	ØˆDð	øøøõ 	ŒØoÐ^gÐoÐoÐoÐoÝ”,ð	
ñ 	
ô 	
ð 	
õ 	Œ
�1‰Œˆð Œ|ð 	 4¤<×#9Ò#9Ñ#;Ô#;ð 	ÝŒJ�q‰MŒMˆMØ”<ð  t¤|×'=Ò'=Ñ'?Ô'?ð Ø�uõ �s‘”ð 	ð 	ˆAØ”<ð Ø�u�uØ”<×)Ò)Ñ+Ô+ð Ý”
˜1‘”�Ø”|×-Ò-Ñ/Ô/ð !Ø ˜5˜5ØðØ $¤× 9Ò 9Ñ ;Ô ;�Ø#œ|×3Ò3Ñ5Ô5�ð ! 1Ò$Ð$­¨]¸YÑ-FÑ)GÔ)GÈ"Ò)LÐ)LÝ”HðmØ#0Ðlðmð mØ@IÐlðmð mØXdÐlðmð mð må"œlðñ ô ð ð
  ˜4˜4øøÝð ð ð Ø�ðøøøåŒJ�s‰OŒOˆOˆOð	Øœ<×/Ò/Ñ1Ô1ˆLÝŒHð/Ø&Ð.ð/ð /ð /å”oðñ ô ð ð øõ
 ð 	ð 	ð 	ØˆDð	øøøàˆts1   „ ž
+ª+Ä#A;F"Æ"
F/Æ.F/Ç>H È
HÈHc                 ó  — | j         rt          | j         ¦  «        S 	 t          j        t          j        ¦  «        }|                     ¦   «         }|dk     rdS ||         }|                     ¦   «         }|rd|vrdS t          |¦  «        }t          |j	        ¦  «        }t          |                     ddg¦  «        d         ¦  «        }|                     ddg¦  «        d         }|                     ddg¦  «        d         }	|                     ddg¦  «        d         }
|r|sdS |||	rt          |	¦  «        nd|
rt          |
¦  «        ndd	œS # t          $ r.}t          j        d
|› �t          j        ¬¦  «         Y d}~dS d}~ww xY w)zïZiska channel_id, tmdb_id, season, episode.
        
        Pouzije externi meta (z activate) nebo parsuje URL z playlistu.
        
        Returns:
            dict s klici 'channel_id', 'tmdb_id', 'season', 'episode' nebo None
        r   Nz	plugin://Úmytv_channel_idÚ Útmdb_idÚseason_numberÚepisode_number)Ú
channel_idrs   ÚseasonÚepisodezF[plugin.video.wcs] PlaylistCountdownMonitor: Error getting item meta: r   )r   Údictr   rS   rT   rU   ÚgetPathr   r   Úqueryr   Úgetr0   rV   r   ÚLOGERROR)r"   r]   ÚposÚitemÚpathÚparsedÚparamsrv   rs   rw   rx   Úes               r   Ú_get_current_item_metaz/PlaylistCountdownMonitor._get_current_item_meta  s­  € ð Ôð 	-Ý˜Ô+Ñ,Ô,Ð,ð	Ý”}¥TÔ%8Ñ9Ô9ˆHØ×&Ò&Ñ(Ô(ˆCØ�QŠwˆwØ�tØ˜C”=ˆDØ—<’<‘>”>ˆDØð ˜;¨dÐ2Ð2Ø�tÝ˜d‘^”^ˆFÝ˜fœlÑ+Ô+ˆFÝ% f§j¢jÐ1BÀRÀDÑ&IÔ&IÈ!Ô&LÑMÔMˆJØ—j’j ¨R¨DÑ1Ô1°!Ô4ˆGØ—Z’Z °"°Ñ6Ô6°qÔ9ˆFØ—j’jÐ!1°B°4Ñ8Ô8¸Ô;ˆGØð  Wð Ø�tà(Ø"Ø)/Ð6�#˜f™+œ+˜+°QØ+2Ð9�3˜w™<œ<˜<¸ð	ð ð øõ ð 	ð 	ð 	ÝŒHÐaÐ^_ÐaÐaÕimÔivÐwÑwÔwÐwØ�4�4�4�4�4øøøøð	øøøs*   �8E Á"E Á;B(E Ä%(E Å
FÅ#FÆFc                 óî  — t          j        d|d›d|d›�t           j        ¦  «         |                      ¦   «         }|s!t          j        dt           j        ¦  «         dS t          j        d|› �t           j        ¦  «         	 ddlm} |                     |d	         |d
         |d         |d         ||¦  «         dS # t          $ r.}t          j        d|› �t           j        ¬¦  «         Y d}~dS d}~ww xY w)z/Ulozi aktualni resume pozici do ChannelHistory.zF[DEBUG] PlaylistCountdownMonitor._save_resume_point: called with time=rj   z total=zB[DEBUG] PlaylistCountdownMonitor._save_resume_point: meta is None!Nz:[DEBUG] PlaylistCountdownMonitor._save_resume_point: meta=r   ©ÚChannelHistoryrv   rs   rw   rx   zB[plugin.video.wcs] PlaylistCountdownMonitor: Error saving resume: r   )	r   r   r    r„   Úwcs.air‡   Úset_resume_pointrV   r}   )r"   ro   r[   rF   r‡   rƒ   s         r   Ú_save_resume_pointz+PlaylistCountdownMonitor._save_resume_point<  sa  € õ 	Œð  DÐZfð  Dð  Dð  DÐs}ð  Dð  Dð  Dõ  FJô  FRñ  	Sô  	Sð  	SØ×*Ò*Ñ,Ô,ˆØð 	åŒHÐYÕ[_Ô[gÑhÔhÐhØˆFåŒÐTÈdÐTÐTÕVZÔVbÑcÔcÐcð	tØ-Ð-Ð-Ð-Ð-Ð-Ø×+Ò+Ø�\Ô" D¨¤OØ�X”  Y¤Ø˜jñô ð ð ð øõ
 ð 	tð 	tð 	tÝŒHÐ]ÐZ[Ð]Ð]ÕeiÔerÐsÑsÔsÐsÐsÐsÐsÐsÐsÐsøøøøð	tøøøs   Â8B< Â<
C4Ã#C/Ã/C4c           	      óÚ  — |                       ¦   «         }|sdS 	 ddlm} |                     |d         |d         |d         |d         ¦  «         |                     |d         |d         ¦  «         t          j        d|d         d	›d
|d         d	›d|d         › d�t
          j        ¬¦  «         dS # t          $ r.}t          j        d|› �t
          j	        ¬¦  «         Y d}~dS d}~ww xY w)z7Oznaci aktualni epizodu jako shlednutou a smaze resume.Nr   r†   rv   rs   rw   rx   z@[plugin.video.wcs] PlaylistCountdownMonitor: Marked as watched SÚ02dÚEz
 (channel=ú)r   zD[plugin.video.wcs] PlaylistCountdownMonitor: Error marking watched: )
r„   rˆ   r‡   Úupdate_series_progressÚclear_resume_pointr   r   r    rV   r}   )r"   rF   r‡   rƒ   s       r   Ú_mark_episode_watchedz.PlaylistCountdownMonitor._mark_episode_watchedQ  sZ  € à×*Ò*Ñ,Ô,ˆØð 	ØˆFð	vØ-Ð-Ð-Ð-Ð-Ð-Ø×1Ò1Ø�\Ô" D¨¤OØ�X”  Y¤ñô ð ð ×-Ò-¨d°<Ô.@À$ÀyÄ/ÑRÔRÐRÝŒHð^Ø˜”NÐ]ð^ð ^Ø)-¨i¬Ð]ð^ð ^ØHLÈ\ÔHZð^ð ^ð ^å”lðñ ô ð ð ð øõ
 ð 	vð 	vð 	vÝŒHÐ_Ð\]Ð_Ð_ÕgkÔgtÐuÑuÔuÐuÐuÐuÐuÐuÐuÐuøøøøð	vøøøs   šBB2 Â2
C*Â<#C%Ã%C*c                 ó2  — d}d}t          j        d|d›d| j        › d�t           j        ¬¦  «         | j        �r]| j                             ¦   «         sdS 	 | j                             ¦   «         }||z
  }n# t          $ r Y dS w xY wt          j	        ¦   «         }||z
  dk    rB|d	k    r<t          j        d
|d›d�t           j        ¦  «         |  
                    ||¦  «         |}|| j        k    rŠ|sˆd}|                      ¦   «          |                      ¦   «         s"t          j        dt           j        ¬¦  «         dS t          j        d|d›d�t           j        ¬¦  «         |                      |¦  «         dS t          j        d¦  «         | j        �°[dS dS )z6Sleduje jednu epizodu a zobrazi countdown pred koncem.Fr   zH[plugin.video.wcs] PlaylistCountdownMonitor: Monitoring episode (total: rL   zs, countdown at zs before end)r   r,   r'   zD[DEBUG] PlaylistCountdownMonitor._monitor_episode: SAVING resume at rj   zs (30s interval)TzK[plugin.video.wcs] PlaylistCountdownMonitor: No next item at countdown timezK[plugin.video.wcs] PlaylistCountdownMonitor: Showing countdown (remaining: r<   r	   N)r   r   r2   r    r   r   rR   rk   rV   rY   rŠ   r‘   rX   Ú_show_countdownrZ   )r"   r[   Úcountdown_shownÚlast_resume_savero   Ú	remainingÚnows          r   rQ   z)PlaylistCountdownMonitor._monitor_episodee  s7  € àˆØÐåŒð^Ø!Ð]ð^ð ^Ø7;Ô7Nð^ð ^ð ^å”,ð	
ñ 	
ô 	
ð 	
ð Œlñ !	Ø”<×)Ò)Ñ+Ô+ð Ø�ðØ#œ|×3Ò3Ñ5Ô5�Ø&¨Ñ5�	�	øÝð ð ð Ø��ðøøøõ ”)‘+”+ˆCØÐ%Ñ%¨Ò+Ð+°¸rÒ0AÐ0Aå”ð  CÐ`lð  Cð  Cð  Cð  Cõ  EIô  EQñ  Rô  Rð  RØ×'Ò'¨°jÑAÔAÐAØ#&Ð à˜DÔ3Ò3Ð3¸OÐ3Ø"&�ð ×*Ò*Ñ,Ô,Ð,ð ×1Ò1Ñ3Ô3ð Ý”HÐjÕrvÔr~ÐÑÔÐØ�Eå”ÐxÐgpÐxÐxÐxÐxõ  AEô  AMð  Nñ  Nô  Nð  NØ×$Ò$ YÑ/Ô/Ð/Ø�åŒJ�q‰MŒMˆMðC Œlñ !	ð !	ð !	ð !	ð !	s   ÁA5 Á5
BÂBc                 óÌ   — 	 t          j        t           j        ¦  «        }|                     ¦   «         }|dk    o||                     ¦   «         dz
  k     S # t
          $ r Y dS w xY w)z2Kontroluje zda existuje dalsi polozka v playlistu.r   r	   F)r   rS   rT   rU   ÚsizerV   )r"   r]   r~   s      r   rX   z.PlaylistCountdownMonitor._has_next_in_playlist•  sm   € ð	Ý”}¥TÔ%8Ñ9Ô9ˆHØ×&Ò&Ñ(Ô(ˆCØ˜!’8Ð9  h§m¢m¡o¤o¸Ñ&9Ò 9Ð9øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚AA Á
A#Á"A#c                 óæ  — 	 t          j        t           j        ¦  «        }|                     ¦   «         }|dk     s||                     ¦   «         dz
  k    rdS ||dz            }|                     ¦   «         }|                     ¦   «         p|                     ¦   «         pd}|                     ¦   «         pd}| 	                    ¦   «         }| 
                    ¦   «         }d}	|r|r
d|d›d|d›�}	|                     d¦  «        pd}
|                     ¦   «         }|                     ¦   «         }d}d}|rt          |¦  «        nd}|r|dk    r|d	›}d
|› d�}|r	d
|› d|› �}n|}n|rt          |¦  «        }t          j        d|› d|	› d|› dt!          |
¦  «        › �t           j        ¬¦  «         ||	|
||||dœS # t$          $ r.}t          j        d|› �t           j        ¬¦  «         Y d}~dS d}~ww xY w)zlZiska metadata dalsi polozky z Kodi playlistu.
        
        Returns:
            dict nebo None
        r   r	   Nrr   ÚSrŒ   r�   Úthumbrj   u   â˜… z/10u   /10 â€¢ z8[plugin.video.wcs] PlaylistCountdownMonitor: Next item: ú z 'z' thumb=r   )ÚtitleÚseason_episoderœ   ÚratingÚrating_onlyÚ	year_onlyÚseries_namezE[plugin.video.wcs] PlaylistCountdownMonitor: Error reading playlist: )r   rS   rT   rU   r™   ÚgetVideoInfoTagÚgetTVShowTitleÚgetLabelÚgetTitleÚ	getSeasonÚ
getEpisodeÚgetArtÚ	getRatingÚgetYearÚstrr   Úboolr    rV   r}   )r"   r]   r~   Ú	next_itemÚinfo_tagr£   Úepisode_titlerw   rx   rŸ   rœ   Ú
rating_valÚyear_valÚrating_textr¡   r¢   Úrating_formattedrƒ   s                     r   Ú_get_next_playlist_infoz0PlaylistCountdownMonitor._get_next_playlist_infož  s�  € ð8	Ý”}¥TÔ%8Ñ9Ô9ˆHØ×&Ò&Ñ(Ô(ˆCà�QŠwˆw˜# §¢¡¤°1Ñ!4Ò4Ð4Ø�tà   q¡Ô)ˆIà ×0Ò0Ñ2Ô2ˆHØ"×1Ò1Ñ3Ô3ÐQ°y×7IÒ7IÑ7KÔ7KÐQÈrˆKØ$×-Ò-Ñ/Ô/Ð5°2ˆMØ×'Ò'Ñ)Ô)ˆFØ×)Ò)Ñ+Ô+ˆGàˆNØð @˜'ð @Ø!? VÐ!?Ð!?Ð!?°'Ð!?Ð!?Ð!?�à×$Ò$ WÑ-Ô-Ð3°ˆEà!×+Ò+Ñ-Ô-ˆJØ×'Ò'Ñ)Ô)ˆHàˆKØˆKØ)1Ð9�˜H™œ˜°rˆIàð ,˜j¨1šn˜nØ&0Ð#6Ð#6Ð Ø:Ð%5Ð:Ð:Ð:�Øð .Ø"MÐ)9Ð"MÐ"MÀ8Ð"MÐ"M�K�Kà"-�K�KØð ,Ý! (™mœm�åŒHð9È;ð 9ð 9ÐYgð 9ð 9Ø!ð9ð 9Ý+/°©;¬;ð9ð 9å”lðñ ô ð ð 'Ø"0ØØ%Ø*Ø&Ø*ðð ð øõ ð 	ð 	ð 	ÝŒHÐ`Ð]^Ð`Ð`ÕhlÔhuÐvÑvÔvÐvØ�4�4�4�4�4øøøøð	øøøs   ‚AF8 ÁE F8 Æ8
G0Ç#G+Ç+G0c                 ó\  — |                       ¦   «         }|s"t          j        dt          j        ¬¦  «         dS || j        z
  }t          dt          || j        ¦  «        ¦  «        }t          j        d|d›d|d         › d	|d
         › d�t          j        ¬¦  «         d„ }t          j	        ¦   «         }t          j        ¦   «         }t          ||                     d¦  «        t          |¦  «        |d         |d
         |d         |d         ddd|                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |¬¦  «        }|                     ¦   «          |                     ¦   «         }~|t          j        k    rMt          j        dt          j        ¬¦  «         d„ }	t%          j        |	d¬¦  «                             ¦   «          dS |t          j        k    r[t          j        dt          j        ¬¦  «         t          j        ¦   «                              ¦   «          |                      ¦   «          dS |t          j        k    r"t          j        dt          j        ¬¦  «         dS |t          j        k    r"t          j        dt          j        ¬¦  «         dS dS )z3Zobrazi AutoplayCountdownDialog s daty z playlistu.z>[plugin.video.wcs] PlaylistCountdownMonitor: No next item infor   Nr   zI[plugin.video.wcs] PlaylistCountdownMonitor: Countdown dialog (duration: rL   z	s, next: r£   r�   rŸ   rŽ   c                  ón   — t          j        dt           j        ¬¦  «         t          j        d¦  «         d S )Nz][plugin.video.wcs] PlaylistCountdownMonitor: Timeout callback - executing PlayerControl(Next)r   úPlayerControl(Next))r   r   r    Úexecutebuiltin© r   r   Útimeout_callbackzBPlaylistCountdownMonitor._show_countdown.<locals>.timeout_callbackò  sH   € ÝŒHÐtõ  }Aô  }Ið  Jñ  Jô  Jð  JÝÔÐ 5Ñ6Ô6Ð6Ð6Ð6r   r€   rž   rœ   rr   r    r¡   r¢   )Úshow_countdown_atÚnext_episode_titleÚnext_episode_season_episodeÚnext_episode_thumbr£   Úseries_tmdb_idÚseries_fanartÚcurrent_episode_plotÚnext_episode_ratingÚnext_episode_rating_onlyÚnext_episode_year_onlyr¼   z@[plugin.video.wcs] PlaylistCountdownMonitor: User chose play nowc                  óV   — t          j        d¦  «         t          j        d¦  «         d S )Nra   r¹   )rY   rZ   r   rº   r»   r   r   Úplay_next_delayedzCPlaylistCountdownMonitor._show_countdown.<locals>.play_next_delayed  s'   € Ý”
˜3‘”�ÝÔ#Ð$9Ñ:Ô:Ð:Ð:Ð:r   Tr=   zB[plugin.video.wcs] PlaylistCountdownMonitor: User stopped playbackz][plugin.video.wcs] PlaylistCountdownMonitor: User dismissed countdown, letting episode finishzD[plugin.video.wcs] PlaylistCountdownMonitor: Timeout - auto playnext)r¶   r   r   r    r5   r3   r4   r6   r.   r/   r   Úget_dialog_xml_filenameÚgetAddonInfor0   r|   ÚdoModalÚget_user_actionÚACTION_PLAY_NOWrB   rC   rE   ÚACTION_CANCEL_AUTOPLAYr   ÚstoprJ   ÚACTION_DISMISSÚACTION_TIMEOUT)
r"   r–   Ú	next_infoÚreal_durationr¼   r9   Ú
dialog_xmlÚdialogÚuser_actionrÈ   s
             r   r“   z(PlaylistCountdownMonitor._show_countdownà  sì  € à×0Ò0Ñ2Ô2ˆ	Øð 	ÝŒHÐUÕ]aÔ]iÐjÑjÔjÐjØˆFð " DÔ$9Ñ9ˆÝ˜A�s =°$Ô2JÑKÔKÑLÔLˆåŒðpØ'Ðoðpð pØ6?ÀÔ6Nðpð pØQZÐ[kÔQlðpð pð på”,ð	
ñ 	
ô 	
ð 	
ð	7ð 	7ð 	7õ ”Ñ!Ô!ˆÝ,ÔDÑFÔFˆ
Ý(ØØ×Ò˜vÑ&Ô&Ý! -Ñ0Ô0Ø(¨Ô1Ø(1Ð2BÔ(CØ(¨Ô1Ø! -Ô0ØØØ!#Ø )§¢¨h¸Ñ ;Ô ;Ø%.§]¢]°=À"Ñ%EÔ%EØ#,§=¢=°¸bÑ#AÔ#AØ-ð
ñ 
ô 
ˆð" 	�ŠÑÔÐØ×,Ò,Ñ.Ô.ˆØð Õ1ÔAÒAÐAÝŒHÐWÕ_cÔ_kÐlÑlÔlÐlð;ð ;ð ;õ ÔÐ$5¸dÐCÑCÔC×IÒIÑKÔKÐKÐKÐKØÕ3ÔJÒJÐJÝŒHÐYÕaeÔamÐnÑnÔnÐnÝŒK‰MŒM×ÒÑ Ô Ð Ø�OŠOÑÔÐÐÐØÕ3ÔBÒBÐBÝŒHÐtõ  }Aô  }Ið  Jñ  Jô  Jð  Jð  Jð  JàÕ3ÔBÒBÐBÝŒHÐ[ÕcgÔcoÐpÑpÔpÐpÐpÐpð CÐBr   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÍ   ÚACTION_CANCELrÑ   r   r   r#   r   rH   rJ   rD   rN   rP   rW   r„   rŠ   r‘   rQ   rX   r¶   r“   Ú__classcell__)r   s   @r   r   r      s_  ø€ € € € € ðð ð €OØ€MØ€Nà€Iðð ð ð ð ð	að 	að 	að*ð *ð *ð$%ð %ð %ð %ð:að að aðJhð Jhð JhðXð ð ðð ð ðCð Cð CðJ&ð &ð &ðPtð tð tð*vð vð vð(,ð ,ð ,ð`ð ð ð>ð >ð >ðD=qð =qð =qð =qð =qð =qð =qr   r   c                  ó:   — t           €t          ¦   «         a t           S )z1Vrati globalni instanci PlaylistCountdownMonitor.)Ú_playlist_monitorr   r»   r   r   Úget_playlist_monitorrß   &  s   € õ Ð Ý4Ñ6Ô6ÐÝÐr   )rÚ   r   Úxbmcguir.   rB   rY   Úurllib.parser   r   r   Úwcs.playback.dialogs.countdownr   r   rÞ   rß   r»   r   r   ú<module>rã      sÎ   ððð ð €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à BÐ BÐ BÐ BÐ BÐ BðHqð Hqð Hqð Hqð Hqñ Hqô Hqð Hqð\ Ð ðð ð ð ð r   