date-events.py (1728B)
1 #!/usr/bin/python3 2 3 import pyqump 4 import requests 5 import re 6 from datetime import datetime 7 from os.path import expanduser 8 9 HOME=expanduser('~') 10 qump_token = open(HOME + '/.qump-token').read().strip() 11 pyqump.init(token = qump_token, server = 'https://haflan.dev') 12 13 # Quickfix to get date from midnight 14 date_today = datetime.now().replace(hour=0,minute=0,second=0,microsecond=0) 15 16 def get_events(): 17 date_re = re.compile('\d{2}-\d{2}') 18 # Get all lines of '/remind|/event' qumps 19 event_strs = '\n'.join(t['text'] for t in pyqump.load(regex='^/remind')).splitlines() 20 event_dates = [] 21 for e in event_strs[1:]: 22 if not e: 23 continue 24 match = re.match(date_re, e) 25 if match: 26 dt = datetime.strptime(match.group(0), '%m-%d').replace(year = date_today.year) 27 text = e.split(' ', 1)[1] 28 event_dates.append({ 'date': dt, 'text': text }) 29 return event_dates 30 31 def report(message): 32 gotify_token = open(HOME + '/.gotify-token').read().splitlines()[0] 33 headers = { 'X-Gotify-Key': gotify_token } 34 data = { 'title': 'Events', 'message': message } 35 res = requests.post('https://push.haflan.dev/message', headers=headers, data=data) 36 37 events = get_events() 38 in_week = [] 39 today = [] 40 for e in events: 41 days_to = (e['date'] - date_today).days 42 if days_to == 0: 43 today.append(e) 44 if 0 < days_to < 8: 45 in_week.append(e) 46 47 message = '' 48 if today: 49 message = 'TODAY:\n' 50 for e in today: 51 message += '- ' + e['text'] + '\n' 52 53 if in_week: 54 message += 'WEEK:\n' 55 for e in in_week: 56 message += '- ' + str(e['date'].strftime('%A')) + ': ' + e['text'] + '\n' 57 58 if not message: 59 message = 'Nothing happening this week' 60 report(message)