Skip to content

Instantly share code, notes, and snippets.

@TobsA13
Last active April 15, 2022 19:00
Show Gist options
  • Save TobsA13/02142829e26b3c6341c82022e981b9c3 to your computer and use it in GitHub Desktop.
Save TobsA13/02142829e26b3c6341c82022e981b9c3 to your computer and use it in GitHub Desktop.
Divera2SMS
import requests
from datetime import datetime
import messagebird
USER = "asd@tobsa.wtf"
PASS = ""
API_KEY_SMS = ""
ADMIN_NUMBER = ""
USER_NUMBER = ","
def new_news(news):
print("New news: {}".format(news['title']))
# set read
resp = requests.request("POST", "https://www.divera247.com/api/v2/news/read/" + str(news['id']),
params={"accesskey": ACCESS_TOKEN}, headers=headers)
if resp.status_code != 200:
sendErrorSMS("new_news 1")
resp = resp.json()
if not resp["success"]:
sendErrorSMS("new_news 2")
msg = "Neue Mitteilung:\n" \
"\n" \
"{}\n" \
"\n" \
"{}\n" \
"\n" \
"Ort: {}\n" \
"Author: {}\n" \
"Uhrzeit: {}" \
"".format(news['title'], refurbish_text(news['text']), news['address'], get_name_from_id(news['author_id']),
time_from_ts(news['date']))
sendSMS(msg)
def new_event(ev):
print("New event: {}".format(ev['title']))
# set read
resp = requests.request("POST", "https://www.divera247.com/api/v2/events/read/" + str(ev['id']),
params={"accesskey": ACCESS_TOKEN}, headers=headers)
if resp.status_code != 200:
sendErrorSMS("new_event 1")
resp = resp.json()
if not resp["success"]:
sendErrorSMS("new_event 2")
msg = "Neuer Termin:\n" \
"\n" \
"{}\n" \
"\n" \
"Start: {}\n" \
"Ende: {}\n" \
"Ort: {}\n" \
"\n" \
"{}\n" \
"\n" \
"Author: {}" \
"".format(ev['title'], time_from_ts(ev['start']), time_from_ts(ev['end']), ev['address'],
refurbish_text(ev['text']), get_name_from_id(ev['author_id']))
sendSMS(msg)
def get_name_from_id(id_user):
return CONSUMER[str(id_user)]['stdformat_name']
def refurbish_text(text):
return "\n".join(text.replace("<br />", '').splitlines())
def time_from_ts(ts):
return datetime.fromtimestamp(ts).strftime('%d.%m %H:%M')
def _sms(msg, number):
try:
SMS_CLIENT.message_create('FFW Divera', number, msg)
except messagebird.client.ErrorException as e:
print('\nAn error occured while requesting a Message object:\n')
for error in e.errors:
print(' code : %d' % error.code)
print(' description : %s' % error.description)
print(' parameter : %s\n' % error.parameter)
def sendSMS(msg):
_sms(msg, USER_NUMBER)
def sendErrorSMS(msg):
_sms("Error Divera2SMS!\n\n" + msg, ADMIN_NUMBER)
exit()
SMS_CLIENT = messagebird.Client(API_KEY_SMS)
# Login to Divera
payload = '{"Login": {"username": "' + USER + '","password": "' + PASS + '"}}'
headers = {'Content-Type': "application/json"}
response = requests.request("POST", "https://www.divera247.com/api/v2/auth/login", data=payload, headers=headers)
if response.status_code != 200:
sendErrorSMS("login 1")
response = response.json()
if not response["success"]:
sendErrorSMS("login 1")
ACCESS_TOKEN = response['data']['user']['access_token']
# print('DEBUG: Divera Accesskey "{}"'.format(ACCESS_TOKEN))
# Get new data from Divera
response = requests.request("GET", "https://www.divera247.com/api/v2/pull/all", params={"accesskey": ACCESS_TOKEN})
if response.status_code != 200:
sendErrorSMS("getData 1")
response = response.json()
if not response["success"]:
sendErrorSMS("getData 2")
CONSUMER = response['data']['cluster']['consumer']
NEWS = response['data']['news']['items']
EVENTS = response['data']['events']['items']
for new in NEWS:
if NEWS[new]['new']:
new_news(NEWS[new])
for event in EVENTS:
if EVENTS[event]['new']:
new_event(EVENTS[event])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment