From b9a1316a0e442cbbb71f08ffdc55d33a8fa2426f Mon Sep 17 00:00:00 2001 From: Neythen Date: Sat, 4 Dec 2021 15:54:31 +0000 Subject: [PATCH] weather fixed --- api_caller.py | 23 +++++++++++++++-------- server.py | 9 +++++++-- static/app.js | 2 +- stockTicker.py | 41 ++++++++++++++++++++--------------------- 4 files changed, 43 insertions(+), 32 deletions(-) diff --git a/api_caller.py b/api_caller.py index c2ab64e..25520b9 100644 --- a/api_caller.py +++ b/api_caller.py @@ -343,9 +343,6 @@ def updateWeather(): for location in all_locations: loc = gn.geocode(location) - - - current_weather = {} lat = loc.latitude @@ -370,8 +367,8 @@ def updateWeather(): current_weather['rain_chance'] = r.json()['hourly'][0]['pop'] - - current_weathers[location] = current_weather + if location in current_locations: + current_weathers[location] = current_weather daily_weather = [] daily = r.json()['daily'] @@ -383,10 +380,20 @@ def updateWeather(): dct['min_temp'] = day['temp']['min'] dct['max_temp'] = day['temp']['max'] daily_weather.append(dct) + + #add relevant urrent information to first day in daily + daily_weather[0]['temp'] = weather['temp'] + daily_weather[0]['rain_chance'] = current_weather['rain_chance'] + daily_weather[0]['humidity'] = current_weather['humidity'] + daily_weather[0]['wind_speed'] = current_weather['wind_speed'] + daily_weather[0]['uv'] = current_weather['uv'] + daily_weather[0]['clouds'] = current_weather['clouds'] + daily_weather[0]['wind_speed'] = current_weather['wind_speed'] + daily_weather[0]['wind_direction'] = current_weather['wind_direction'] + daily_weather[0]['visibility'] = current_weather['visibility'] - - - daily_weathers[location] = daily_weather + if location in daily_locations: + daily_weathers[location] = daily_weather diff --git a/server.py b/server.py index a7863b8..37e4c2d 100644 --- a/server.py +++ b/server.py @@ -414,9 +414,12 @@ def save_trade_settings(input_settings): api_caller.sendline('f') def save_weather_settings(input_settings): + + print(input_settings) filename = 'current_weather.json' if input_settings['feature'] == 'Current Weather' else 'daily_weather.json' + print(filename) current_settings = json.load(open('csv/' + filename, 'r')) @@ -431,8 +434,10 @@ def save_weather_settings(input_settings): if input_settings['feature'] == 'Daily Forecast': current_settings['current_weather'] = input_settings['current_weather'] - - current_settings = combine_dict(current_settings, input_settings['locations'], 'locations') + locations = {} + for key in input_settings['locations']: + locations[key] = [] + current_settings['locations'] = locations json.dump(current_settings, open('csv/' + filename, 'w+')) diff --git a/static/app.js b/static/app.js index fd8182f..cc8f553 100644 --- a/static/app.js +++ b/static/app.js @@ -973,7 +973,7 @@ function saveSettings() { s = getMessageSettings(page); break; } - + settings = { ...settings, ...s }; // merge both sets of settings fetch("/feature_settings", { diff --git a/stockTicker.py b/stockTicker.py index 5009c0d..8d46f9c 100644 --- a/stockTicker.py +++ b/stockTicker.py @@ -2063,7 +2063,7 @@ class StockTicker(): else: imgs = [] - current_weathers = json.load(open('csv/current_weather.json', 'r')) + daily_weathers = json.load(open('csv/daily_weather.json', 'r')) @@ -2072,7 +2072,7 @@ class StockTicker(): for i, location in enumerate(locations): img = Image.new('RGB', (1000, 32)) - current_weather = current_weathers['locations'][location] + daily_weather = daily_weathers['locations'][location] small_font = ImageFont.load("./fonts/5x7.pil") @@ -2081,12 +2081,9 @@ class StockTicker(): location_img = self.textImage(location.upper(), extra_small_font, r = 255, g = 255, b = 0) - - - - main = current_weather['main_weather'] + main = daily_weather[0]['main_weather'] if main == 'Clouds': - main = current_weather['description'] + main = daily_weather['description'] weather_ids = {'Clear': '01', 'few clouds': '02', 'scattered clouds': '03', 'broken clouds':'04', 'overcast clouds':'04', 'Drizzle':'09', 'Rain':'10', 'Thunderstorm':'11', 'Snow':'13', 'Mist': '50', 'Smoke': '50', 'Haze': '50', 'Dust': '50', 'Fog': '50', 'Sand': '50', 'Ash': '50', 'Squall': '50', 'Tornado': '50'} @@ -2094,12 +2091,12 @@ class StockTicker(): weather_dir = './logos/weather_icons' weather_img = Image.open(weather_dir + '/weather_type_icons/' + weather_ids[main] + '.png') - temp_img = self.textImage(str("{0:.0f}".format(current_weather['temp'])), large_font) + temp_img = self.textImage(str("{0:.0f}".format(daily_weather[0]['temp'])), large_font) deg_img = self.textImage('o', small_font) - min_img = self.textImage( "{0:.0f}".format(current_weather['min_temp']), small_font, r=0, g=0, b=255) - max_img = self.textImage( "{0:.0f}".format(current_weather['max_temp']), small_font, r=255, g=0, b=0) - main = current_weather['main_weather'] + min_img = self.textImage( "{0:.0f}".format(daily_weather[0]['min_temp']), small_font, r=0, g=0, b=255) + max_img = self.textImage( "{0:.0f}".format(daily_weather[0]['max_temp']), small_font, r=255, g=0, b=0) + main = daily_weather[0]['main_weather'] main_img = self.textImage(main.upper(), small_font) weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] @@ -2109,21 +2106,23 @@ class StockTicker(): date = str(int(datetime.now().strftime('%d'))) weekday = weekdays[datetime.today().weekday()] date_img = self.textImage((month + ' ' + date + ',' + weekday).upper(), extra_small_font) + + rain_img = Image.open(weather_dir + '/rain-chance.png') - rtext_img = self.textImage(str(int(current_weather['rain_chance']*100)) + '%', extra_small_font) + rtext_img = self.textImage(str(int(daily_weather[0]['rain_chance']*100)) + '%', extra_small_font) hum_img = Image.open(weather_dir + '/humidity.png') - htext_img = self.textImage(str(current_weather['humidity']) + '%', extra_small_font) + htext_img = self.textImage(str(daily_weather[0]['humidity']) + '%', extra_small_font) wind_img = Image.open(weather_dir + '/wind.png') - wtext_img = self.textImage(str(current_weather['wind_speed']) + 'm/s'.upper(), extra_small_font) + wtext_img = self.textImage(str(daily_weather[0]['wind_speed']) + 'm/s'.upper(), extra_small_font) uv_img = Image.open(weather_dir + '/uv.png') - utext_img = self.textImage(str(round(current_weather['uv'], 1)) , small_font) + utext_img = self.textImage(str(round(daily_weather[0]['uv'], 1)) , small_font) cloud_img = Image.open(weather_dir + '/clouds.png') - ctext_img = self.textImage(str(current_weather['clouds']) + '%', small_font) + ctext_img = self.textImage(str(daily_weather[0]['clouds']) + '%', small_font) wind_img = Image.open(weather_dir + '/wind.png') - wtext_img = self.textImage("{0:.0f}".format(current_weather['wind_speed']) + 'm/s'.upper(), small_font) - wdir_img = self.textImage(self.degreesToCompass(current_weather['wind_direction']), small_font) + wtext_img = self.textImage("{0:.0f}".format(daily_weather[0]['wind_speed']) + 'm/s'.upper(), small_font) + wdir_img = self.textImage(self.degreesToCompass(daily_weather[0]['wind_direction']), small_font) vis_img = Image.open(weather_dir + '/visibility.png') - vtext_img = self.textImage(str(round(current_weather['visibility']/1000, 1)) + 'km'.upper(), small_font) + vtext_img = self.textImage(str(round(daily_weather[0]['visibility']/1000, 1)) + 'km'.upper(), small_font) img.paste(location_img, (0,0)) @@ -2434,7 +2433,7 @@ class StockTicker(): #userSettings = ['crypto', 'stocks'] # these wil be read from csv, just for demo #userSettings = [ 'display_image', 'news'] # these wil be read from csv, just for demo userSettings = json.load(open('csv/display_settings.json')) - if len(userSettings[1][0])>0 and len(userSettings[1][1])>0 and 'Professional'==userSettings[0] : #if professional display + if 'Professional'==userSettings[0] and len(userSettings[1][0])>0 and len(userSettings[1][1])>0: #if professional display self.scrollProfessionalAnimated(userSettings[1]) elif len(userSettings[1])>0 and 'Standard'==userSettings[0]: self.scrollFunctionsAnimated(userSettings[1], animation = 'down') @@ -2473,7 +2472,7 @@ if __name__ == '__main__': #stock_ticker.process_msg('G') #stock_ticker.process_msg('f') #stock_ticker.process_msg('W') - stock_ticker.process_msg('A') + #stock_ticker.process_msg('A') while True: msg = getInput()