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 = (_('Январь'),
- _('February'),
- _('March'),
- _('April'),
- _('May'),
- _('June'),
- _('July'),
- _('August'),
- _('September'),
- _('October'),
- _('November'),
- _('December'))
- shortMONTHS = (_('Jan'),
- _('Feb'),
- _('Mar'),
- _('Apr'),
- _('May'),
- _('Jun'),
- _('Jul'),
- _('Aug'),
- _('Sep'),
- _('Oct'),
- _('Nov'),
- _('Dec'))
- DAYWEEK = (_('Понедельник'),
- _('Вторник'),
- _('Среда'),
- _('Четверг'),
- _('Пятница'),
- _('Суббота'),
- _('Воскресенье'))
- shortDAYWEEK = (_('Mon'),
- _('Tue'),
- _('Wed'),
- _('Thu'),
- _('Fri'),
- _('Sat'),
- _('Sun'))
- 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>2} д{}' . 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
- spos = self.fmt_string.find('%')
- self.fmt_string = self.fmt_string.replace('%A',_(DAYWEEK[t.tm_wday]))
- self.fmt_string = self.fmt_string.replace('%B',_(MONTHS[t.tm_mon-1]))
- self.fmt_string = self.fmt_string.replace('%a',_(shortDAYWEEK[t.tm_wday]))
- self.fmt_string = self.fmt_string.replace('%b',_(shortMONTHS[t.tm_mon-1]))
- if spos > 0:
- s1 = self.fmt_string[:spos]
- s2 = strftime(self.fmt_string[spos:], t)
- return str(s1+s2)
- else:
- return strftime(self.fmt_string, t)
- elif self.type == self.PERMANENTCLOCK:
- #d = _('%H:%M:%S\n%d.%m.%Y\n%A')
- #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))
- #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))
- 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