snippets

More or less useful code snippets
Log | Files | Refs

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)