]> git.somenet.org - pub/jan/mattermost.git/blob - mw_intern/termin_reminder.py
[cron] intern.fsinf.at - Termin-reminder + FSS-TOPs-Info.
[pub/jan/mattermost.git] / mw_intern / termin_reminder.py
1 #!/usr/bin/env python3
2 # Someone's Mattermost scripts.
3 #  Copyright (c) 2016-2020 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
4 #  published under MIT-License
5 #
6
7 import datetime
8 import pprint
9 import re
10
11 import mwclient
12 import mattermost
13
14 import config
15
16
17 REXwreminder_line = re.compile(r"^\s*(\{\{mm-reminder\|[^\|\}]+\|.*\}\}.*)$", re.IGNORECASE|re.MULTILINE)
18 REXwreminder_data = re.compile(r"^^\s*\{\{mm-reminder\|([^\|\}]+)\|?(.*\}\}.*)$", re.IGNORECASE)
19
20
21 def processData(mws, mm, datasource, matchdata):
22     match = re.match(REXwreminder_data, matchdata)
23
24     timediff = datetime.datetime.now() - datetime.datetime.strptime(match.group(1), "%Y-%m-%d %H:%M")
25     if abs(timediff.total_seconds()) > 1800.0:
26         print("outside of 1800 sec.")
27         return
28
29     msg = "``BOT-AUTODELETE-SLOW`` Termin-Reminder source: "+datasource+"\n### ``"+(match.group(2).replace("}}", "``", 1))
30     print("Posting to channel:" +str(mm.create_post(config.mm_chanid, msg)))
31
32
33 def processWiki(mws, mm):
34     # notify of upcomming events. (up to: now +- 30 min)
35     page = mws.Pages["TOPs_der_kommenden_Fachschaftssitzung"]
36     pprint.pprint(page)
37     for t in re.findall(REXwreminder_line, page.text()):
38         try:
39             processData(mws, mm, "https://"+config.mw_name+"/wiki/TOPs_der_kommenden_Fachschaftssitzung", t)
40         except:
41             pass
42
43
44 if __name__ == "__main__":
45     mws = mwclient.Site(config.mw_name, path="/")
46     mws.login(config.mw_user, config.mw_user_pw)
47     mm = mattermost.MMApi(config.mm_api_url)
48     mm.login(config.mm_user, config.mm_user_pw)
49
50     processWiki(mws, mm)
51
52     mm.logout()