From 7a6f142a74072573b0e7c0e1bf32e8f9220bf0a8 Mon Sep 17 00:00:00 2001 From: aj Date: Thu, 16 May 2019 09:06:29 +0100 Subject: [PATCH] rewritten and using slack --- .gitignore | 1 + tflnotif.py | 94 +++++++++++------------------------------------------ 2 files changed, 20 insertions(+), 75 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/tflnotif.py b/tflnotif.py index 796e457..659edfa 100644 --- a/tflnotif.py +++ b/tflnotif.py @@ -1,91 +1,35 @@ -import requests, smtplib, os +import requests +import os url = 'https://api.tfl.gov.uk/' app_id = os.environ['TFLID'] app_key = os.environ['TFLKEY'] -def _TFLURL(path): - return 'https://api.tfl.gov.uk/' + path + '?app_id={}&app_key={}'.format(app_id, app_key) -def getLineStatusRequest(line): +def getLineStatusRequest(lines): payload = {'app_id': app_id, 'app_key': app_key} - return requests.get(url + 'Line/{}/Status'.format(line), params = payload) + return requests.get(url + 'Line/{}/Status'.format(','.join(lines)), params=payload) -def lineStatus(line): - resp = getLineStatusRequest(line) - print(resp.json()[0]['name']) - #print(resp.json()['name']) - #print(resp.json()[0]['lineStatuses'][0]['statusSeverityDescription']) +def sendNotification(linename, message): - for status in resp.json()[0]['lineStatuses']: - print(status['statusSeverityDescription']) - -def isDelayed(line): - resp = getLineStatusRequest(line) - - for status in resp.json()[0]['lineStatuses']: - if status['statusSeverity'] < 10: - return True - return False - -def getLineStatusDescription(line): - resp = getLineStatusRequest(line) - - if len(resp.json()[0]['lineStatuses']) > 1: - list = [] - for status in resp.json()[0]['lineStatuses']: - list.append(status['statusSeverityDescription']) - return list - else: - return resp.json()[0]['lineStatuses'][0]['statusSeverityDescription'] + json = {"text": "{}: {}".format(linename, message)} -def getLineStatusReason(line): - resp = getLineStatusRequest(line) - if isDelayed(line): - list = [] - for status in resp.json()[0]['lineStatuses']: - list.append(status['reason']) - return list - else: - return None + requests.post(os.environ['SLACKHOOK'], json=json) -def sendNotification(message, subject = ''): - server = smtplib.SMTP('smtp.gmail.com', 587) - server.ehlo() - server.starttls() - server.ehlo() - server.login(os.environ['TFLMAILFROM'], os.environ['TFLPW']) - - msg = 'Subject: {}\n\n{}'.format(subject, message) - server.sendmail(os.environ['TFLMAILFROM'], os.environ['TFLMAILTO'], msg) - server.quit() -message = 'met line: ' -for description in getLineStatusDescription('metropolitan'): - message += description + ' ' -metReasons = getLineStatusReason('metropolitan') -if metReasons: - for reason in metReasons: - message += '\n\t\t' + reason -message += '\n' -message += 'pic line: ' -for description in getLineStatusDescription('piccadilly'): - message += description + ' ' -picReasons = getLineStatusReason('piccadilly') -if picReasons: - for reason in picReasons: - message += '\n\t\t' + reason -message += '\n' -message += 'dis line: ' -for description in getLineStatusDescription('district'): - message += description + ' ' -disReasons = getLineStatusReason('district') -if disReasons: - for reason in disReasons: - message += '\n\t\t' + reason +if __name__ == '__main__': -#print(message) -sendNotification(message, 'tfl update') + statuses = getLineStatusRequest(['metropolitan', 'piccadilly']).json() + + for line in statuses: + + statustext = '' + + for status in line['lineStatuses']: + if status['statusSeverity'] < 10: + statustext += '\n' + status['reason'] + + sendNotification(line['id'][:3], ', '.join([i['statusSeverityDescription'] for i in line['lineStatuses']]) + statustext)