This repository has been archived by the owner on Nov 11, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathimpftermin_checker.py
80 lines (62 loc) · 2.48 KB
/
impftermin_checker.py
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/python3
import sys
import time
import json
from datetime import datetime
from random import randrange
from web_controller import WebController
class Dataset:
def __init__(self,
name,
plz,
url,
age = 99,
code = "ohne",
min_date = datetime(1970, 1, 1, 0, 0, 0),
notification_emails = ["[email protected]"]):
self.name = name
self.code = code
self.plz = plz
self.url = url
self.age = age
self.min_date = min_date
self.notification_emails = notification_emails
if __name__ == "__main__":
# Config-Datei öffnen
with open("config.json", encoding="utf-8") as config_file:
config = json.load(config_file)
if config["use_chrome"]:
driver = WebController.create_chromedriver()
else:
driver = WebController.create_firefoxdriver()
# Dauerschleife über alle Datasets in Config-Datei
# Jeweils x Sekunden Pause nach Durchlaufen aller Datasets
while True:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"\n\nEs ist {now}, starte nächsten Versuch:")
for dataset in config["datasets"]:
data = Dataset(name=dataset["name"], url=dataset["url"], plz=dataset["plz"],
notification_emails=dataset["notification_emails"])
if "code" in dataset:
data.code = dataset["code"]
else:
data.code = "ohne"
if "min_date" in dataset:
data.min_date = datetime.strptime(dataset["min_date"], "%Y-%m-%d")
else:
data.min_date = datetime(1970, 1, 1, 0, 0, 0)
if "age" in dataset:
data.age = dataset["age"]
else:
data.age = 99
if WebController.check_impftermin(driver=driver, dataset=data, config=config):
sys.exit(0)
# Warte vor dem nächsten Dataset
wait_time_dataset = config['wait_time_between_each_dataset'] + randrange(5)
print(f"Warte {wait_time_dataset}s vor dem nächsten Code.")
time.sleep(wait_time_dataset)
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
wait_time_run = config['wait_time_between_each_run'] + randrange(45)
print(f"\nEs ist {now}, warte {wait_time_run}s vor dem nächsten Lauf.")
time.sleep(wait_time_run)
print("Wartezeit abgelaufen.")