Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement