SharkyEXE icon

Untitled

SharkyEXE | PRO | 08/03/18 04:50:17 PM UTC | 0 ⭐ | 737 👁️ | Never ⏰ | []
text |

7.65 KB

|

None

|

0 👍

/

0 👎

from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Components.Button import Button
from Components.ActionMap import ActionMap
from Components.ConfigList import ConfigListScreen
from Components.config import config, ConfigSubsection, ConfigDateTime, ConfigClock, ConfigText, getConfigListEntry
import enigma
from enigma import eTimer, iServiceInformation
from datetime import datetime, time as dt_time
from os import system
import gettext
import time, httplib
 config.plugins.SetClock = ConfigSubsection()
config.plugins.SetClock.HostName = ConfigText(default='ya.ru', fixed_size=False)
ver = '1.1'
 def _(txt):
    t = gettext.gettext(txt)
    return t
  def Plugins(**kwargs):
    return [PluginDescriptor(name='SetClock', description='SetClock plug-in v.' + ver + ' (c)2011 by SatCat', where=PluginDescriptor.WHERE_PLUGINMENU, icon='plugin.png', fnc=main), PluginDescriptor(name='SetClock', description='SetClock plug-in v.' + ver + '(c)2011 by SatCat', where=[PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc=autostart)]
  def main(session, servicereference = None, **kwargs):
    try:
        session.open(SetClockMain)
    except:
        print '[SetClock] Pluginexecution failed'
  def autostart(reason, **kwargs):
    global session
    if reason == 0 and kwargs.has_key('session'):
        session = kwargs['session']
        session.open(AutoCorrTime)
  def get_time_str(res_time):     
    replace_months = {
        'Jan': '1',
        'Feb': '2',
        'Mar': '3',
        'Apr': '4',
        'May': '5',
        'June': '6',
        'Jun': '6',
        'July': '7',
        'Jul': '7',
        'Aug': '8',
        'Sept': '9',
        'Sep': '9',
        'Oct': '10',
        'Nov': '11',
        'Dec': '12',
    }
    try:
        time_tuple = time.strptime(res_time, '%a, %d %b %Y %H:%M:%S %Z')
    except ValueError:
        for m1, m2 in replace_months.items():    
            res_time = res_time.replace(m1, m2)
        time_tuple = time.strptime(res_time, '%a, %d %m %Y %H:%M:%S %Z')
    t = time.localtime(time.mktime(time_tuple) - time.timezone)
    r = time.strftime('%Y%m%d%H%M.%S', t)
    open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write('({0}), ({1})'.format(type(r), r))
    return r
 class AutoCorrTime(Screen):
    skin = '''
    <screen position="100,100" size="280,300" title="SetClock" >
    </screen>'''
     def __init__(self, session):
        Screen.__init__(self, session)
        self.session = session
        if time.localtime().tm_year == 2000:
            self.limit = 0
            self.cursorTimer = eTimer()
            self.cursorTimer.callback.append(self.timer)
            self.cursorTimer.start(75, False)
     def timer(self):
        if time.localtime().tm_year > 2000:
            refstr = dtt = 'n/a'
            try:
                service = self.session.nav.getCurrentService()
                if service:
                    info = service.info()
                    if info:
                        refstr = info.getInfoString(iServiceInformation.sServiceref)
            except:
                refstr = 'ref error'
             if refstr == '1:0:1:1:65:64:3840000:0:0:0:':
                tc = time.time() - 189391980
                dtt = datetime.fromtimestamp(tc).strftime('%Y%m%d%H%M')
                enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
                try:
                    system('/bin/date -s %s' % dtt)
                    print '[SetClock] Set clock!'
                except:
                    pass
                 self.cursorTimer.stop()
                print '[SetClock] Stop timer.'
        self.limit = self.limit + 1
        if self.limit > 1200:
            self.cursorTimer.stop()
            print '[SetClock] Stop timer (limit).'
  class SetClockMain(ConfigListScreen, Screen):
    skin = '''
  <screen position="center,250" size="420,190" title="SetClock Menu" >
   <widget name="config" position="10,10" size="400,130" scrollbarMode="showOnDemand" />
   <widget name="key_green" position="0,150" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;18" transparent="1"/>
   <ePixmap name="green" position="0,150" size="140,40" zPosition="2" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
   <widget name="key_blue" position="140,150" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;18" transparent="1"/>
   <ePixmap name="blue" position="140,150" size="140,40" zPosition="2" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
   <widget name="key_red" position="280,150" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;18" transparent="1"/>
   <ePixmap name="red" position="280,150" size="140,40" zPosition="2" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
    </screen>'''
     def __init__(self, session, args = 0):
        self.skin = SetClockMain.skin
        self.session = session
        Screen.__init__(self, session)
        self.list = []
        self.date_en = ConfigDateTime(default=time.time(), formatstring='%d.%m.%y')
        self.entryDate = getConfigListEntry(_('Date'), self.date_en)
        self.time_en = ConfigClock(default=time.time())
        self.entryTime = getConfigListEntry(_('Time'), self.time_en)
        self.list.append(self.entryDate)
        self.list.append(self.entryTime)
        self.list.append(getConfigListEntry('HTTP host:', config.plugins.SetClock.HostName))
        self['key_green'] = Button(_('SET!'))
        self['key_blue'] = Button(_('HTTP SET'))
        self['key_red'] = Button(_('Cancel'))
        ConfigListScreen.__init__(self, self.list, session=session)
        self['setupActions'] = ActionMap(['SetupActions', 'ColorActions'], {'red': self.cancel,
         'green': self.set,
         'blue': self.inet_set,
         'save': self.set,
         'cancel': self.cancel,
         'ok': self.pressed_ok}, -2)
        self['config'].list = self.list
        self['config'].l.setList(self.list)
     def pressed_ok(self):
        config.plugins.SetClock.HostName.save()
        self.set()
     def set(self, dtt = 0):
        d = time.localtime(self.date_en.value)
        dtt = '%d%02d%02d%02d%02d' % (d.tm_year,
         d.tm_mon,
         d.tm_mday,
         self.time_en.value[0],
         self.time_en.value[1])
        enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
        try:
            system('/bin/date -s %s' % dtt)
        except:
            pass
         self.close()
        print '[SetClock] SET! ** %s' % time.strftime('%X %x (%Y) %Z')
     def inet_set(self):
        config.plugins.SetClock.HostName.save()
        conn = httplib.HTTPConnection(config.plugins.SetClock.HostName.value)
        try:
            conn.request('HEAD', '/favicon.ico')
            t_rtt = time.clock()
            res_time = conn.getresponse().getheader('date')
        except:
            self.session.open(MessageBox, 'Error: No server responce: ' + config.plugins.SetClock.HostName.value, MessageBox.TYPE_ERROR, timeout=3)
            return            
         enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
         try:
            system('/bin/date -s %s' % get_time_str(res_time))
        except:
            pass
         self.close()
        print '[SetClock] inet SET! ** %s' % time.strftime('%X %x (%Y) %Z')
     def cancel(self):
        self.close()

Comments