Add script that notifies of joins over IFTTT
This commit is contained in:
parent
af9213cab6
commit
75ef33e181
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
server.log
|
server.log
|
||||||
map
|
map
|
||||||
|
secrets.py
|
||||||
|
52
notify/notify_joins.py
Executable file
52
notify/notify_joins.py
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# Read the Minecraft server log and diff it against the server log it saw last. If there any new joins in the diff, send
|
||||||
|
# a notification.
|
||||||
|
import codecs
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from secrets import IFTTT_WEBHOOK_KEY_TYLER, IFTTT_WEBHOOK_KEY_KAELAN
|
||||||
|
|
||||||
|
LOG_FILENAME = '/srv/minecraft-panic-shack/logs/latest.log'
|
||||||
|
OLD_LOG_FILENAME = '/srv/minecraft-panic-shack/logs/last-read.log'
|
||||||
|
USERNAME_BLACKLIST = ['anarchyeight', 'kinedactyl']
|
||||||
|
IFTTT_EVENT_NAME = 'user_joined_panic_shack'
|
||||||
|
|
||||||
|
|
||||||
|
def read_log(filename):
|
||||||
|
with codecs.open(filename, encoding='utf-8') as log:
|
||||||
|
return log.readlines()
|
||||||
|
|
||||||
|
|
||||||
|
def save_log(filename, lines):
|
||||||
|
with codecs.open(filename, 'w', encoding='utf-8') as log:
|
||||||
|
log.writelines(lines)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if (datetime.fromtimestamp(os.path.getmtime(LOG_FILENAME)) >
|
||||||
|
datetime.fromtimestamp(os.path.getmtime(OLD_LOG_FILENAME))):
|
||||||
|
new_log = read_log(LOG_FILENAME)
|
||||||
|
old_log = read_log(OLD_LOG_FILENAME)
|
||||||
|
if new_log[0] != old_log[0]:
|
||||||
|
# A log rotate occured
|
||||||
|
old_log = []
|
||||||
|
if len(new_log) > len(old_log):
|
||||||
|
for new_line in new_log[len(old_log):]:
|
||||||
|
match = re.match('[\[][0-9:]+[\]]\s[\[]Server thread/INFO]: (\S+) joined the game', new_line)
|
||||||
|
if match:
|
||||||
|
username = match.group(1)
|
||||||
|
if username not in USERNAME_BLACKLIST:
|
||||||
|
# IFTTT does not support sharing Applets anymore :(
|
||||||
|
r = requests.post(
|
||||||
|
'https://maker.ifttt.com/trigger/{}/with/key/{}'.format(IFTTT_EVENT_NAME,
|
||||||
|
IFTTT_WEBHOOK_KEY_TYLER),
|
||||||
|
data={'value1': username})
|
||||||
|
r = requests.post(
|
||||||
|
'https://maker.ifttt.com/trigger/{}/with/key/{}'.format(IFTTT_EVENT_NAME,
|
||||||
|
IFTTT_WEBHOOK_KEY_KAELAN),
|
||||||
|
data={'value1': username})
|
||||||
|
save_log(OLD_LOG_FILENAME, new_log)
|
Loading…
Reference in New Issue
Block a user