def next(lrrbot, conn, event, respond_to): """ Command: !next Command: !nextstream Command: !sched Command: !schedule Gets the next scheduled stream from the calendar """ if lrrbot.calendar_override == None: event_name, event_time, event_wait = googlecalendar.get_next_event() if event_time: nice_time = event_time = event_time.astimezone( config["timezone"]).strftime("%a %I:%M %p %Z") if event_wait < 0: nice_duration = utils.nice_duration(-event_wait, 1) + " ago" else: nice_duration = utils.nice_duration(event_wait, 1) + " from now" conn.privmsg( respond_to, "Next scheduled stream: %s at %s (%s)" % (event_name, nice_time, nice_duration)) else: conn.privmsg( respond_to, "There don't seem to be any upcoming scheduled streams") else: now = datetime.datetime.now(config["timezone"]) conn.privmsg( respond_to, "(Overwritten) %s, current moonbase time %s" % (lrrbot.calendar_override, now.strftime("%I:%M %p")))
def next(lrrbot, conn, event, respond_to): event_name, event_time, event_wait = googlecalendar.get_next_event() if event_time: nice_time = event_time = event_time.astimezone(config["timezone"]).strftime("%a %I:%M %p %Z") if event_wait < 0: nice_duration = utils.nice_duration(-event_wait, 1) + " ago" else: nice_duration = utils.nice_duration(event_wait, 1) + " from now" conn.privmsg(respond_to, "Next scheduled stream: %s at %s (%s)" % (event_name, nice_time, nice_duration)) else: conn.privmsg(respond_to, "There don't seem to be any upcoming scheduled streams")
def get_next_event_text(calendar, after=None, include_current=None, tz=None, verbose=True): """ Build the actual human-readable response to the !next command. The tz parameter can override the timezone used to display the event times. This can be an actual timezone object, or a string timezone name. Defaults to moonbase time. """ if after is None: after = datetime.datetime.now(datetime.timezone.utc) if not tz: tz = config['timezone'] elif isinstance(tz, str): tz = tz.strip() try: tz = utils.get_timezone(tz) except pytz.exceptions.UnknownTimeZoneError: return "Unknown timezone: %s" % tz events = get_next_event(calendar, after=after, include_current=include_current) if not events: return "There don't seem to be any upcoming scheduled streams" strs = [] for i, ev in enumerate(events): # If several events are at the same time, just show the time once after all of them if i == len(events) - 1 or ev['start'] != events[i+1]['start']: if verbose: if ev['location'] is not None: title = "%(title)s (%(location)s)" % ev else: title = ev['title'] if ev['start'] < after: nice_duration = utils.nice_duration(after - ev['start'], 1) + " ago" else: nice_duration = utils.nice_duration(ev['start'] - after, 1) + " from now" strs.append("%s at %s (%s)" % (title, ev['start'].astimezone(tz).strftime(DISPLAY_FORMAT), nice_duration)) else: strs.append("%s at %s" % (ev['title'], ev['start'].astimezone(tz).strftime(DISPLAY_FORMAT))) else: strs.append(ev['title']) response = ', '.join(strs) if verbose: if calendar == CALENDAR_LRL: response = "Next scheduled stream: " + response elif calendar == CALENDAR_FAN: response = "Next scheduled fan stream: " + response return utils.shorten(response, 450) # For safety
def next(lrrbot, conn, event, respond_to): """ Command: !next Command: !nextstream Command: !sched Command: !schedule Gets the next scheduled stream from the calendar """ if lrrbot.calendar_override == None: event_name, event_time, event_wait = googlecalendar.get_next_event() if event_time: nice_time = event_time = event_time.astimezone(config["timezone"]).strftime("%a %I:%M %p %Z") if event_wait < 0: nice_duration = utils.nice_duration(-event_wait, 1) + " ago" else: nice_duration = utils.nice_duration(event_wait, 1) + " from now" conn.privmsg(respond_to, "Next scheduled stream: %s at %s (%s)" % (event_name, nice_time, nice_duration)) else: conn.privmsg(respond_to, "There don't seem to be any upcoming scheduled streams") else: now = datetime.datetime.now(config["timezone"]) conn.privmsg(respond_to, "(Overwritten) %s, current moonbase time %s" % (lrrbot.calendar_override, now.strftime("%I:%M %p")))
def uptime(lrrbot, conn, event, respond_to): """ Command: !uptime Post the duration the stream has been live. """ stream_info = twitch.get_info() if stream_info and stream_info.get("stream_created_at"): start = dateutil.parser.parse(stream_info["stream_created_at"]) now = datetime.datetime.now(datetime.timezone.utc) conn.privmsg(respond_to, "The stream has been live for %s" % utils.nice_duration(now-start, 0)) elif stream_info: conn.privmsg(respond_to, "Twitch won't tell me when the stream went live.") else: conn.privmsg(respond_to, "The stream is not live.")
def notifications(conn, cur, session): row_data = get_notifications(cur) for row in row_data: if row['time'] is None: row['duration'] = None else: row['duration'] = utils.nice_duration(time.time() - row['time'], 2) row_data.reverse() if row_data: maxkey = row_data[0]['key'] else: cur.execute("SELECT MAX(NOTIFICATIONKEY) FROM NOTIFICATION") maxkey = cur.fetchone()[0] if maxkey is None: maxkey = -1 return flask.render_template('notifications.html', row_data=row_data, maxkey=maxkey, session=session)