This repository has been archived on 2024-01-26. You can view files and clone it, but cannot push or open issues or pull requests.
space_status/main.py
bernd2k 5523cf9ab5 checking the status on the space api
checking the status on the space api
detecing change, and preparing the corresponding text.
currently, the standard text will be used only
2018-02-10 13:30:32 +01:00

81 lines
No EOL
2.6 KiB
Python

# status bot
import json
import os
import time
import urllib.request, json
import datetime
def internet_on(url):
try:
urllib.request.urlopen(url)
return True
except urllib.error.URLError as e:
print(e.reason)
return False
while True:
# starting by configuring the bot
file_configure_path = "config.json"
with open(file_configure_path, 'r') as f:
data_config = json.load(f)
if internet_on("http://twitter.com") == True:
# finding out the status of the space...
api_url = data_config["status_api"]["url"]
with urllib.request.urlopen(api_url) as url:
data_space = json.loads(url.read().decode())
#print(data_space["state"]["open"])
file_path = "space.json"
if os.path.exists(file_path) == True:
# Reading data back
with open(file_path, 'r') as f:
data_space_b4 = json.load(f)
#print(data_space_b4["state"]["open"])
if data_space["state"]["open"] != data_space_b4["state"]["open"]:
print("status changed.")
# starting by configuring the bot
file_status_path = "status.json"
with open(file_status_path, 'r') as f:
data_status = json.load(f)
# finding out wich state it change and sending out the text
if data_space["state"]["open"] == False:
print("closing at", time.time(), ",last change happend at", datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
print("Text:", data_status["closing_text"][0]["text"])
else:
print("opening at", time.time(), ",last change happend at", datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
print("Text:", data_status["opening_text"][0]["text"])
else:
print("status is still the same at", time.time(), datetime.datetime.fromtimestamp(
int(data_space["state"]["lastchange"]) ).strftime('%Y-%m-%d %H:%M:%S'))
else:
print("welcome to your initial round")
# saving the current space status just too compare them in the next round
with open(file_path, 'w') as outfile:
json.dump(data_space, outfile, indent=4)
else:
print(time.time(), "internet is off")
# how often shall we check for status?
time.sleep(data_config["status_api"]["checking_period"])