refactor the code to abstract from the weather provider
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user