
   }su3                   V   d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d	d
lmZmZ 	 d dl m!c m"c m#Z# d dl$m!c m"c m"Z" n# e%$ r dZ"dZ#Y nw xY wda&da'i Z( e            ej        _)         ed          ej        j)        _*         ed          ej        j)        _+         edddg          ej        j)        _,         edddd	          ej        j)        _-         e
d           ej        j)        _.         ed          ej        j)        _/         e            ej        j)        _0         ed          ej        j)        _1         ed          ej        j)        _2         ed          ej        j)        _3        d	dlm4Z4 d	dl5m6Z6m7Z7  G d d          Z8d2dZ9d2dZ:d Z;d Z<d3dZ=d Z>d Z?d  Z@d! ZAd" ZBd# ZCd2d$ZDd% ZEd& ZFd' ZGd( ZHd) ZId* ZJd+ ZKd,ZL ed-          ZM eNd.            eeLeMejO        eG/          ZP eeLeMejO        eH/          ZQ eeLeMejR        eF/          ZSej        j)        j1        T                    eJd0           ej        j)        j2        T                    eKd0           d1 ZUdS )4    )absolute_importprint_functionN)ConfigClockConfigEnableDisableConfigSelectionConfigSelectionNumberConfigSubsection
ConfigTextConfigYesNoconfig)plugins)	eEPGCacheeTimer)PluginDescriptor)
MessageBox)threads   )_logF)defaultinterval
fixed time)r   choices      0   )r   minmax	stepwidthT)e2m3u2bouquet)E2m3u2b_CheckE2m3u2b_Menuc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )AutoStartTimerc                    || _         t                      | _        	 | j        j                            | j                  | _        n+#  | j        j                            | j                   Y nxY w| 	                                 d S N)
sessionr   timertimeoutconnecton_timer
timer_conncallbackappendupdate)selfr'   s       /home/vix/6.4/builds/openvix/release/vuultimo4k/tmp/work/cortexa15hf-neon-vfpv4-oe-linux-gnueabi/enigma2-plugin-extensions-e2m3u2bouquet/enigma2-plugin-extensions-e2m3u2bouquet-0.9.0+gitAUTOINC+7d0469119f-r1/image/usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/plugin.py__init__zAutoStartTimer.__init__1   sr    XX
	6"j088GGDOO	6J&&t}55555s   )A &A.c                 0   t          dt                     t          j        j        j        j        rct          j        j        j        j        dk    rSt          t          j        j        j	        j                  }t          j
                    }t          |          |dz  dz  z   S t          j        j        j        j        dk    rt          j        j        j        j        }t          j        t          j
                              }t          t          j        |j        |j        |j        |d         |d         |j        |j        |j        |j        f	                    }t          dt          j        t          j        |                    f           |S d S d	S )
Nz)[e2m3u2b] AutoStartTimer -> get_wake_timefiler   <   r   r   r   zfixed schedule time: )printr   r   r   e2m3u2bautobouquetupdatevaluescheduletypeintupdateintervaltimeschedulefixedtime	localtimemktimetm_yeartm_montm_mdaytm_sectm_wdaytm_ydaytm_isdstasctime)r0   r   nowtfixed_time_clocknowfixed_wake_times         r1   get_wake_timezAutoStartTimer.get_wake_time:   sP   9DDDD>!39 	~%28JFFv~5DJKKy{{4yyHrMB$677'4:lJJ#)>#9#K#Q nTY[[11"%dk3;
CKYijkYl3CA3F
TWT_adalnqnz3| '} '} #~ #~.T^O=\=\0]0]^___&& KJ 2    c           
         t          dt                     | j                                         |                                 }t          j                    }t          |          }|dk    r||k    rwt          j        j	        j
        j        dk    r4t          t          j        j	        j        j                  }||dz  dz  z  }n$t          j        j	        j
        j        dk    r|dz  }||z
  }| j                            |           nd}t          d	                    t          j        t          j        |                    t          j        t          j        |                              t                     |S )
Nz"[e2m3u2b] AutoStartTimer -> updater4   r   r   r6   r   iQ r7   z'[e2m3u2b] next wake up time {} (now={}))r8   r   r(   stoprO   r?   r=   r   r   r9   r<   r;   r>   startLongTimerformatrJ   rA   )r0   wakerK   rM   r   	next_wakes         r1   r/   zAutoStartTimer.updateN   so   2====
!!##y{{$ii!88s{{>)6<
JJ"6>#9#H#NOOHHrMB..DD^+8>,NNL(Ds
IJ%%i0000D 	7>>t|DN[_L`L`?a?acgcoptp~  @C  qD  qD  dE  dE  F  F  MP  	Q  	Q  	Q  	QrP   c                 N   | j                                          t          t          j                              }|}t	          d                    |          t                     t	          dt                     t          j        j	        j
        j        dk    r|                                 }||z
  dk     rZ	 t                       nJ# t          $ r=}t	          d|t                     t          j        j	        j        j        r Y d }~nd }~ww xY w|                                  d S )Nz [e2m3u2b] on_timer occured at {}r4   zP[e2m3u2b] Stating bouquet update because auto update bouquet schedule is enabledr   r6   z[e2m3u2b] on_timer Error:)r(   rR   r=   r?   r8   rT   r   r   r   r9   r<   r;   rO   start_update	Exceptiondebugr/   )r0   rM   rU   es       r1   r+   zAutoStartTimer.on_timerg   s    
$)++077<<3GGGG`gjkkkk>!.4DD%%''D #:??   113????>)/5      	s   8C 
D3D		Dc                 2    t          dt                     d S )Nz%[e2m3u2b] AutoStartTimer -> getStatusr4   r8   r   )r0   s    r1   
get_statuszAutoStartTimer.get_status{   s    5C@@@@@@rP   N)__name__
__module____qualname__r2   rO   r/   r+   r^    rP   r1   r$   r$   0   sd            (  2  (A A A A ArP   r$   c           	      ^   	 t          d           t          j                    }t          j                            t          j                            t          j        d                    r|                    t          j                            t          j        d                     g }g }t          j
        |j                  D ]\  }}|j        r|j                            d          s~|                    |           t          j                            t          j        d                    t          j        |j                                      }|                    |           t&          j        j        j                                        rXt1          j        t4          ||          }|                    t8          |t;          t=          j                              |            d S t5          ||           t9          d |t;          t=          j                              |            d S d S )Nzstart_update calledz
config.xmlzSupplier Namezsuls_iptv_{}.sources.xml)r8   r    ConfigospathisfilejoinCFGPATHread_configsix	iteritems	providersenabledname
startswithr.   EPGIMPORTPATHrT   get_safe_filenametwistedpythonruntimeplatformsupportsThreadsr   deferToThreadstart_process_providersaddCallbackstart_update_callbackr=   r?   )	epgimporte2m3u2b_configproviders_to_processepgimport_sourcefileskeyprovider_configepgimport_sourcefilenameds           r1   rX   rX      s   	
   ")++N	w~~bgll=#8,GGHH \""27<<0E|#T#TUUU! "$'M.2J$K$K 	G 	G C& G/C/N/N/_/_ G$++O<<<+-7<<8SUo9?@_`o`t@u@u9v9v,x ,x(%,,-EFFF>!*::<< 	\%&=?SUcddAMM/1FDIKKHXHXZcddddd#$8.III!$(=s49;;?O?OQZ[[[[[%\ \rP   c                 z   t          t          j                              |z
  }d                    t          |                    }|t          j        _        t          d                    |          t                     t          rt          j        j        j        j        du r|'t          j	        t          j                    d           }d t#          |          D             }|                                 ||_        t(          |_        |                    t          j                    dz              d S d S d S )	NzFinished bouquet update in {}sz[e2m3u2b] {}r4   Tc                     dS )NTrb   )xs    r1   <lambda>z'start_update_callback.<locals>.<lambda>   s    t rP   c                     g | ]}|S rb   rb   ).0ss     r1   
<listcomp>z)start_update_callback.<locals>.<listcomp>   s    GGG1GGGrP   i )longDescUntil)r=   r?   rT   strr    Statusmessager8   r   	EPGImportr   r   r9   do_epgimportr;   r   getInstanceepgimport_sourcesreversesourcesepgimport_doneonDonebeginImport)resultr   
start_timer|   elapsed_secsmsgr   s          r1   r{   r{      s   	$$
2L
*
1
1#l2C2C
D
DC#&M 	.


$
$3////  KV^+8>$FF!+I,A,C,C^^TTIGG/0EFFGGG#	)	DIKK=,IJJJJJK KFFrP   c                    d}| D ]}t          j        |          }t          t          j                              t          |j        j                  z
  dk    r|                                }t          d                    |j        j	                  t                     |                                 t          d                    |j        j	                  t                     |r|                                 t          j        t          j        t          j                                        }|t          j        j        j        _        t          j        j        j                                         t          j                     d S )NFi`T  z$[e2m3u2b] Starting backend script {}r4   z$[e2m3u2b] Finished backend script {})r    Providerr=   r?   r   last_provider_updateprovider_updater8   rT   ro   r   process_providerwrite_configrJ   rA   r   r9   last_updater;   savereload_bouquets)r~   r}   providers_updatedr   providerrA   s         r1   ry   ry      sC   / 	] 	] )/::ty{{c(/"FGGG%OO ( 8 8 : :4;;HO<PQQX[\\\\!!###4;;HO<PQQX[\\\\\ &##%%%T^DIKK8899I/8FN&,
N&++---!#####rP   c           	   #      K   | D ]N}	 t          j        |          D ]}|V  # t          $ r#}t          d|d|t                     Y d }~Gd }~ww xY wd S )Nz$[e2m3u2b] Failed to open epg source z Error: r4   )	EPGConfigenumSourcesFilerY   r8   r   )sourcefiles
sourcefiler   r[   s       r1   r   r      s      ! _ _
	_.z::   	_ 	_ 	_8*jRSZ]^^^^^^^^^	_	_ _s   $
AAAc                 2    t          dt                     d S )Nz'[e2m3u2b] Automatic epg import finishedr4   r]   )rebootepgfiles     r1   r   r      s    	
3#>>>>>>rP   c                  r    	 t          d           t          j                     t          j                     d S )Nzdo_reset called)r8   r    uninstallerr   rb   rP   r1   do_resetr      s<     

!#####rP   c                     t                       t          s*|                     t          |           t                     d S t          |            d S r&   )check_cfg_folderr   openWithCallback	open_menur!   r'   kwargss     r1   mainr      sP        7!3!3]CCCCC'rP   c                 :    |                      t                     d S r&   )openr"   )r'   s    r1   r   r      s    LLrP   c                     	 	 t          j        t          j                   d S # t          $ rY} | j        t
          j        k    r3t          d| t                     t          j
        j        j        j        r Y d } ~ d S Y d } ~ d S d } ~ ww xY w)Nz&[e2m3u2b] unable to create config dir:r4   )re   makedirsr    ri   OSErrorerrnoEEXISTr8   r   r   r   r9   rZ   r;   )r[   s    r1   r   r      s    
M)*****   7el"":ACHHHH~%+1  #"""""     s   # 
BABBc                  x    	 t          dt                     t          t                                           d S d S )Nz[e2m3u2b] Done configuringr4   )r8   r   autoStartTimerr/   rb   rP   r1   done_configuringr      sA    	
&S1111! "!rP   c                  (   	 t          t          j                              } t          dt                     	 t	                       d S # t
          $ r>}t          d|t                     t          j        j        j	        j
        r Y d }~d S d }~ww xY w)NzM[e2m3u2b] Stating bouquet update because auto update bouquet at start enabledr4   z$[e2m3u2b] on_boot_start_check Error:)r=   r?   r8   r   rX   rY   r   r   r9   rZ   r;   )rM   r[   s     r1   on_boot_start_checkr      s     dikk

C	
Y`cdddd   4acBBBB>!'- 		 	 	 	 	 	s   A	 	
B3BBc                 T   t          d                    | t          j                              t                     | dk    rPt          I|C|at
          t          |          at          j        j	        j
        j        rt                       d S d S d S t          dt                     d S )Nz$[e2m3u2b] autostart {} occured at {}r4   r   z[e2m3u2b] stop)r8   rT   r?   r   _sessionr   r$   r   r   r9   autobouquetupdateatbootr;   r   )reasonr'   r   s      r1   	autostartr     s     

0
7
7	
L
LSVWWWW{{x'H%!/!8!8~%=C &#%%%%% & & 	S))))))rP   c                  2    t          dt                     dS )Nz[e2m3u2b] get_next_wakeupr4   r7   r]   rb   rP   r1   get_next_wakeupr     s    	
%C00002rP   c                 @    	 | dk    rt           t          t           dfgS g S )Nmainmenu-   )plugin_namequick_import_menu)menuids    r1   menuHookr   #  s(    ,/bABB
HrP   c                 "    	 t          | fi | d S r&   )r   r   s     r1   extensions_menur   *  s#    FrP   c                 ~    |                      t          t          t          d          t          j        dd           d S )NzDUpdate of channels will start. This may take a few minutes.
Proceed?   T)r)   r   )r   quick_import_callbackr   r   
TYPE_YESNOr   s     r1   r   r   0  sd    2J  CJ  AK  AK  MW  Mb  ln  x|  }  }  }  }  }rP   c                     | sd S 	 t                       d S # t          $ r>}t          d|t                     t          j        j        j        j        r Y d }~d S d }~ww xY w)Nz'[e2m3u2b] manual_update_callback Error:r4   )	rX   rY   r8   r   r   r   r9   rZ   r;   )	confirmedr[   s     r1   r   r   4  s        7EEEE>!'- 		 	 	 	 	 	s    
A3AAc                    t          dt                     	 | j        rt          j        t
                     d S t          j        t
                     d S # t          $ r"}t          d|t                     Y d }~d S d }~ww xY w)Nz [e2m3u2b] update extensions menur4   z,[e2m3u2b] Failed to update extensions menu: )r8   r   r;   r   	addPluginextDescriptorQuickremovePluginrY   cfg_elr[   s     r1   update_extensions_menur   ?  s    	
,37777K< 	5011111 !344444 K K K<acJJJJJJJJJJK    A A 
BA<<Bc                    t          dt                     	 | j        rt          j        t
                     d S t          j        t
                     d S # t          $ r"}t          d|t                     Y d }~d S d }~ww xY w)Nz[e2m3u2b] update main menur4   z&[e2m3u2b] Failed to update main menu: )r8   r   r;   r   r   extDescriptorQuickMainr   rY   r   s     r1   update_main_menur   J  s    	
&S1111E< 	9455555 !788888 E E E6DDDDDDDDDDEr   zIPTV Bouquet Makerz'IPTV for Enigma2 - E2m3u2bouquet pluginz[e2m3u2b] add notifier)ro   descriptionwherefnc)initial_callc                     t          t          t          t           j        t           j        gt
          t                    t          t          t          t           j        dt                    g}t          j
        j        j        j        r|                    t                     t          j
        j        j        j        r|                    t"                     |S )N)ro   r   r   r   	wakeupfnczimages/e2m3ubouquetlogo.png)ro   r   r   iconr   )r   r   plugin_descriptionWHERE_AUTOSTARTWHERE_SESSIONSTARTr   r   WHERE_PLUGINMENUr   r   r   r9   
extensionsr;   r.   r   r   r   )r   r   s     r1   Pluginsr   _  s    * 0 3 %		
 		
 		
 	*"3.	
 	
 	
F6 ~(. *()))~&, .,---MrP   r&   )FN)V
__future__r   r   r   re   r?   rk   twisted.python.runtimers   Components.configr   r   r   r   r	   r
   r   r   Components.PluginComponentr   enigmar   r   Plugins.Pluginr   Screens.MessageBoxr   twisted.internetr    r   r   &Plugins.Extensions.EPGImport.EPGConfig
Extensionsr   r   &Plugins.Extensions.EPGImport.EPGImportImportErrorr   r   providers_listr9   rZ   r:   r<   r>   r@   r   r   r   r   r   r    menur!   r"   r$   rX   r{   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   WHERE_EXTENSIONSMENUextDescriptorr   
WHERE_MENUr   addNotifierr   rb   rP   r1   <module>r     s   6 6 6 6 6 6 6 6  				  



     Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z . . . . . . $ $ $ $ $ $ $ $ + + + + + + ) ) ) ) ) ) $ $ $ $ $ $        >>>>>>>>>>>>>>>>>>>>>>>>>   IIII
  *)++ 225AAA  +6;u+E+E+E  (&5ojS]_kRl&m&m&m  #(=(=aQTVbc(d(d(d  %+6;q+A+A+A  (1<U1K1K1K  .%/Z\\  "$/K$>$>$>  !"-+e"<"<"<  &1k$&?&?&?  #       - - - - - - - -LA LA LA LA LA LA LA LA^\ \ \ \6K K K K$$ $ $0_ _ _? ? ? ?$ $ $    	 	 	       * * * *$      } } }  K K KE E E #Q@AA       k?QYiY~  ET  U  U  U%%;DV^n  _D  J[  \  \  \ )){HZbrb}  DL  M  M  M    ! - -.DSX - Y Y Y    + +,<5 + Q Q Q         s   A3 3	A?>A?