def friendly_format(ts, offset=None, short=False): try: ts = float(ts) except TypeError: return ts if offset: ts = ts + int(offset) if short: now = api.utctime() if offset: now = now + int(offset) now = datetime.fromtimestamp(now) ts = datetime.fromtimestamp(int(ts)) delta = datetime(now.year, now.month, now.day, 23, 59, 59) - ts if now.year - ts.year != 0: text = ts.strftime('%B %d, %Y') elif delta.days == 0: text = 'Today at %s' % ts.strftime('%I:%M%p') elif delta.days == 1: text = 'Yesterday at %s' % ts.strftime('%I:%M%p') elif delta.days in [2, 3]: text = ts.strftime('%A at %I:%M%p') else: text = '%s %s at %s' % (months[ts.month], ts.day, ts.strftime('%I:%M%p')) else: ts = datetime.fromtimestamp(ts) text = ts.strftime('%A, %B %d, %Y at %I:%M%p') return text.replace(' 0', ' ').replace('AM', 'am').replace('PM', 'pm')
def isoformat(ts, offset=None, last_hour=True): try: ts = float(ts) except TypeError: return ts if offset: ts = ts + int(offset) if last_hour: now = api.utctime() if now - ts < 3600: ts = datetime.fromtimestamp(ts) return ts.isoformat() return '' else: ts = datetime.fromtimestamp(ts) return ts.isoformat()
def unique_by_timestamp(text): text = '%s-%s' % (text, api.utctime()) return md5(text).hexdigest()