blob: 9af583fd90b7df2eea66a4e5ff577e74e3a78ab0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
import requests
import boto3
from datetime import datetime
from os import environ
from time import sleep
class AlarmpyBridge():
URL = "https://www.oref.org.il/WarningMessages/alert/alerts.json"
HEADERS = {
"Referer": "https://www.oref.org.il/11226-he/pakar.aspx",
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
}
def __init__(self):
self.sess = requests.Session()
self.sess.headers.update(self.HEADERS)
self.last = None
self.s3 = boto3.client("s3")
self.bucket_name = environ.get("S3_BUCKET_NAME")
def loop(self):
ts = datetime.now().isoformat()
print(f"{ts} Starting Alarmpy Bridge loop...")
while True:
try:
self.fetch()
except Exception as e:
print(e)
pass
finally:
sleep(0.5)
def fetch(self):
res = self.sess.get(self.URL).content
if res != self.last:
self.last = res
self.update()
def update(self):
res = self.last
ts = datetime.now().isoformat()
print(f"{ts} Updating {res}")
self.s3.put_object(
Bucket=self.bucket_name,
Body=res,
Key="alerts.json",
CacheControl="max-age=1, public",
StorageClass='STANDARD',
)
if __name__== "__main__":
ab = AlarmpyBridge()
ab.loop()
|