SharkyEXE icon

Untitled

SharkyEXE | PRO | 01/13/19 06:15:49 AM UTC | 0 ⭐ | 775 👁️ | Never ⏰ | []
text |

7.37 KB

|

None

|

0 👍

/

0 👎

# -*- coding: utf-8 -*-
# 2018.06.23 09:02:31 EAT
#Embedded file name: /usr/lib/enigma2/python/Components/Converter/ClockToText.py
from Converter import Converter
from time import localtime, strftime, mktime, time
from Components.Element import cached
from datetime import date, datetime
 MONTHS = (_("Января"),
 _("Февраля"),
 _("Марта"),
 _("Апреля"),
 _("Мая"),
 _("Июня"),
 _("Июля"),
 _("Августа"),
 _("Сентября"),
 _("Октября"),
 _("Ноября"),
 _("Декабря"))
 shortMONTHS = (_("Янв"),
 _("Фев"),
 _("Мар"),
 _("Апр"),
 _("Май"),
 _("Июн"),
 _("Июл"),
 _("Авг"),
 _("Сен"),
 _("Окт"),
 _("Ноя"),
 _("Дек"))
 DAYWEEK = (_("Понедельник"),
 _("Вторник"),
 _("Среда"),
 _("Четверг"),
 _("Пятница"),
 _("Суббота"),
 _("Воскресенье"))
 shortDAYWEEK = (_("Пнд"),
 _("Втр"),
 _("Срд"),
 _("Чтв"),
 _("Птн"),
 _("Сбт"),
 _("Вск"))
 class ClockToText(Converter, object):
    DEFAULT = 0
    WITH_SECONDS = 1
    IN_MINUTES = 2
    DATE = 3
    FORMAT = 4
    AS_LENGTH = 5
    TIMESTAMP = 6
    FULL = 7
    SHORT_DATE = 8
    LONG_DATE = 9
    VFD = 10
    AS_LENGTHHOURS = 11
    AS_LENGTHSECONDS = 12
    FULL_DATE = 13
    NEWYEAR = 14
    PERMANENTCLOCK = 15
  # add: date, date as string, weekday, ... 
 # (whatever you need!)
     def __init__(self, type):
        Converter.__init__(self, type)
        self.fix = ''
        if ';' in type:
            type, self.fix = type.split(';')
        if type == 'WithSeconds':
            self.type = self.WITH_SECONDS
        elif type == 'InMinutes':
            self.type = self.IN_MINUTES
        elif type == 'Date':
            self.type = self.DATE
        elif type == 'AsLength':
            self.type = self.AS_LENGTH
        elif type == 'AsLengthHours':
            self.type = self.AS_LENGTHHOURS
        elif type == 'AsLengthSeconds':
            self.type = self.AS_LENGTHSECONDS
        elif type == 'Timestamp':
            self.type = self.TIMESTAMP
        elif type == 'Full':
            self.type = self.FULL
        elif type == 'ShortDate':
            self.type = self.SHORT_DATE
        elif type == 'LongDate':
            self.type = self.LONG_DATE
        elif type == 'FullDate':
            self.type = self.FULL_DATE
        elif type == 'VFD':
            self.type = self.VFD
        elif type == 'NewYear':
            self.type = self.NEWYEAR
        elif type == 'PermanentClock':
            self.type = self.PERMANENTCLOCK
        #elif 'Format' in type:
        elif str(type).find('Format') != -1:
            self.type = self.FORMAT
            self.fmt_string = type[7:]
        else:
            self.type = self.DEFAULT
     @cached
    def getText(self):
        time = self.source.time
        if time is None:
            return ''
         def fix_space(string):
            if 'Proportional' in self.fix and t.tm_hour < 10:
                return ' ' + string
            if 'NoSpace' in self.fix:
                return string.lstrip(' ')
            return string
         def get_variant(amount, variants):
            cases = [2, 0, 1, 1, 1, 2]
            return variants[2 if (amount % 100 > 4 and amount % 100 < 20) else cases[min(amount % 10, 5)]]
         # handle durations
        if self.type == self.IN_MINUTES:
            return ngettext('%d Min', '%d Mins', time / 60) % (time / 60)
        if self.type == self.AS_LENGTH:
            if time < 0:
                return ''
            return '%d:%02d' % (time / 60, time % 60)
        if self.type == self.AS_LENGTHHOURS:
            if time < 0:
                return ''
            return '%d:%02d' % (time / 3600, time / 60 % 60)
        if self.type == self.AS_LENGTHSECONDS:
            if time < 0:
                return ''
            return '%d:%02d:%02d' % (time / 3600, time / 60 % 60, time % 60)
        if self.type == self.TIMESTAMP:
            return str(time)
        t = localtime(time)
        td = datetime(date.today().year + 1, 1, 1) - datetime.fromtimestamp(mktime(t))
        days, hours, minutes, seconds = td.days, td.seconds // 3600, td.seconds // 60 % 60, td.seconds % 60
        if self.type == self.WITH_SECONDS:
            return fix_space(_('%02d:%02d:%02d') % (t.tm_hour, t.tm_min, t.tm_sec))
        if self.type == self.NEWYEAR:
            title_text = _("До Нового , %s Года , остал%s :\n") % ( date.today().year + 1, get_variant(days, ('ся', 'ось', 'ось')))
            text = [
            '{:0>1} д{}' . format(days, get_variant(days, ('ень', 'ня', 'ней'))),
            '{:0>2} час{}' . format(hours, get_variant(hours, ('', 'а', 'ов'))),
            '{:0>2} минут{}' . format(minutes, get_variant(minutes, ('а', 'ы', ''))),
            '{:0>2} секунд{}' . format(seconds, get_variant(seconds, ('а', 'ы', '')))
            ]
            return title_text + ' ; '.join(text)
        if self.type == self.DEFAULT:
            return fix_space(_('%02d:%02d') % (t.tm_hour, t.tm_min))
        if self.type == self.DATE:
            d = _('%A')
            #Пример ниже
            #Wednesday, 2 Январь, 2019 year.
            #return _(strftime("%A",t)) + ", " + str(t[2]) + " " + MONTHS[t[1]-1] + ", " + str(t[0]) + _(" year.")
            #return _(strftime("%A",t))
        elif self.type == self.FULL:
            d = _('%d.%m.%Y')
        elif self.type == self.SHORT_DATE:
            d = _('%a %d/%m')
        elif self.type == self.LONG_DATE:
            d = _('%A %d %B')
        elif self.type == self.FULL_DATE:
            d = _('%a %d %B %Y')
        elif self.type == self.VFD:
            d = _('%H:%M %d/%m')
        elif self.type == self.FORMAT:
            #d = self.fmt_string
            x = self.fmt_string 
            spos = x.find('%')
            x = x.replace('%A',_(DAYWEEK[t.tm_wday]))
            x = x.replace('%B',_(MONTHS[t.tm_mon-1]))
            x = x.replace('%a',_(shortDAYWEEK[t.tm_wday]))
            x = x.replace('%b',_(shortMONTHS[t.tm_mon-1]))
            if spos > 0:
             s1 = x[:spos]
             s2 = strftime(x[spos:], t)
             return str(s1+s2)
            else:
             return strftime(x, t)
        elif self.type == self.PERMANENTCLOCK:
            #d = _('%H:%M:%S\n%d.%m.%Y\n%A')
            return _(strftime("%H:%M:%S",t)) + "\n" + strftime("%d.%m.%Y",t) + "\n" + DAYWEEK[t.tm_wday]
            #d = _('%H:%M:%S\n%B\n%A')
            #return _(strftime("%H:%M:%S",t)) + "\n" + MONTHS[t[1]-1] + "\n" + DAYWEEK[t[1]+1]
            #return _(strftime('%H:%M:%S\n%B\n%A',t))
            #return _(strftime("%H:%M:%S",t)) + "\n" + MONTHS[t.tm_mon-1] + "\n" + DAYWEEK[t.tm_wday]
            #d = _('%H:%M:%S\n%b\n%a')
            #return _(strftime("%H:%M:%S",t)) + "\n" + shortMONTHS[t[1]-1] + "\n" + shortDAYWEEK[t[1]+1]
            #return _(strftime('%H:%M:%S\n%b\n%a',t))
            #return _(strftime("%H:%M:%S",t)) + "\n" + shortMONTHS[t.tm_mon-1] + "\n" + shortDAYWEEK[t.tm_wday]
        else:
            return '???'
        return strftime(d, t)
     text = property(getText)
# okay decompyling /tmp/ClockToText.pyo 
# decompiled 1 files: 1 okay, 0 failed, 0 verify failed
# 2018.06.23 09:02:35 EAT

Comments