|
@@ -6,7 +6,6 @@ import urllib.request
|
|
|
|
|
|
from bs4 import BeautifulSoup
|
|
|
from datetime import datetime as dt
|
|
|
-from threading import Thread
|
|
|
|
|
|
# @brief Checks the DWD pages for wind information
|
|
|
# Format:
|
|
@@ -18,12 +17,10 @@ from threading import Thread
|
|
|
# - first element of wind data tuple: minimum altitude AMSL for this wind information
|
|
|
# - second element of wind data tuple: wind direction
|
|
|
# - third element of wind data tuple: wind speed (KT)
|
|
|
-class DwdCrawler(Thread):
|
|
|
+class DwdCrawler():
|
|
|
def __init__(self):
|
|
|
- Thread.__init__(self)
|
|
|
- self.dataAvailable = False
|
|
|
- self.executing = True
|
|
|
- self.start()
|
|
|
+ self.updateTime = None
|
|
|
+ self.windData = None
|
|
|
|
|
|
def parseGaforAreas(areas : str):
|
|
|
areas = areas.replace(':', '')
|
|
@@ -102,7 +99,7 @@ class DwdCrawler(Thread):
|
|
|
# analyze the received data
|
|
|
if None != content:
|
|
|
windInformation = []
|
|
|
- udpdateTime = None
|
|
|
+ nextUpdate = None
|
|
|
windTable = []
|
|
|
areaIds = None
|
|
|
|
|
@@ -119,15 +116,18 @@ class DwdCrawler(Thread):
|
|
|
elif None != areaIds:
|
|
|
windTable = DwdCrawler.parseWindTableRow(line, windTable)
|
|
|
elif 'Aktualisierung erfolgt um ' in line:
|
|
|
- updateTime = DwdCrawler.parseNextUpdateTime(line)
|
|
|
+ nextUpdate = DwdCrawler.parseNextUpdateTime(line)
|
|
|
|
|
|
# return the collected information
|
|
|
- if 0 != len(windInformation) and None != updateTime:
|
|
|
- return updateTime, windInformation
|
|
|
+ if 0 == len(windInformation) or None == nextUpdate:
|
|
|
+ return None, None
|
|
|
else:
|
|
|
- return None
|
|
|
+ return nextUpdate, windInformation
|
|
|
+
|
|
|
+ def receiveWindData(self):
|
|
|
+ self.updateTime = None
|
|
|
+ self.windData = None
|
|
|
|
|
|
- def run(self):
|
|
|
with urllib.request.urlopen('https://www.dwd.de/DE/fachnutzer/luftfahrt/teaser/luftsportberichte/luftsportberichte_node.html') as site:
|
|
|
data = site.read().decode('utf-8')
|
|
|
site.close()
|
|
@@ -152,6 +152,8 @@ class DwdCrawler(Thread):
|
|
|
|
|
|
# indicate that new wind data is available
|
|
|
if None != self.updateTime:
|
|
|
- self.dataAvailable = True
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ return False
|
|
|
|
|
|
- self.executing = False
|
|
|
+ return False
|