first shot at the openweathermap_wrapper extension (PyOwm replacement)
This commit is contained in:
		| @@ -19,7 +19,7 @@ from PIL import ImageFont | ||||
| from PIL import ImageOps | ||||
|  | ||||
| from icons.weather_icons.weather_icons import get_weather_icon | ||||
| from inkycal.custom import owm_forecasts | ||||
| from inkycal.custom import openweathermap_wrapper | ||||
| from inkycal.custom.functions import fonts | ||||
| from inkycal.custom.functions import internet_available | ||||
| from inkycal.custom.functions import top_level | ||||
| @@ -82,11 +82,11 @@ class Fullweather(inkycal_module): | ||||
|  | ||||
|     optional = { | ||||
|         "orientation": {"label": "Please select the desired orientation", "options": ["vertical", "horizontal"]}, | ||||
|         "temp_units": { | ||||
|         "temp_unit": { | ||||
|             "label": "Which temperature unit should be used?", | ||||
|             "options": ["celsius", "fahrenheit"], | ||||
|         }, | ||||
|         "wind_units": { | ||||
|         "wind_unit": { | ||||
|             "label": "Which wind speed unit should be used?", | ||||
|             "options": ["beaufort", "knots", "miles_hour", "km_hour", "meters_sec"], | ||||
|         }, | ||||
| @@ -112,7 +112,7 @@ class Fullweather(inkycal_module): | ||||
|         }, | ||||
|         "font": { | ||||
|             "label": "Font family to use for the entire screen", | ||||
|             "options": ["Roboto", "NotoSans", "Poppins"], | ||||
|             "options": ["NotoSans", "Roboto", "Poppins"], | ||||
|         }, | ||||
|         "chart_title": { | ||||
|             "label": "Title of the temperature and precipitation plot", | ||||
| @@ -151,17 +151,17 @@ class Fullweather(inkycal_module): | ||||
|             assert self.orientation in ["horizontal", "vertical"] | ||||
|         else: | ||||
|             self.orientation = "horizontal" | ||||
|         if "wind_units" in config: | ||||
|             self.wind_units = config["wind_units"] | ||||
|         if "wind_unit" in config: | ||||
|             self.wind_unit = config["wind_unit"] | ||||
|         else: | ||||
|             self.wind_units = "meters_sec" | ||||
|         if self.wind_units == "beaufort": | ||||
|             self.wind_unit = "meters_sec" | ||||
|         if self.wind_unit == "beaufort": | ||||
|             self.windDispUnit = "bft" | ||||
|         elif self.wind_units == "knots": | ||||
|         elif self.wind_unit == "knots": | ||||
|             self.windDispUnit = "kn" | ||||
|         elif self.wind_units == "km_hour": | ||||
|         elif self.wind_unit == "km_hour": | ||||
|             self.windDispUnit = "km/h" | ||||
|         elif self.wind_units == "miles_hour": | ||||
|         elif self.wind_unit == "miles_hour": | ||||
|             self.windDispUnit = "mph" | ||||
|         else: | ||||
|             self.windDispUnit = "m/s" | ||||
| @@ -171,13 +171,13 @@ class Fullweather(inkycal_module): | ||||
|         else: | ||||
|             self.wind_gusts = True | ||||
|  | ||||
|         if "temp_units" in config: | ||||
|             self.temp_units = config["temp_units"] | ||||
|         if "temp_unit" in config: | ||||
|             self.temp_unit = config["temp_unit"] | ||||
|         else: | ||||
|             self.temp_units = "celsius" | ||||
|         if self.temp_units == "fahrenheit": | ||||
|             self.temp_unit = "celsius" | ||||
|         if self.temp_unit == "fahrenheit": | ||||
|             self.tempDispUnit = "F" | ||||
|         elif self.temp_units == "celsius": | ||||
|         elif self.temp_unit == "celsius": | ||||
|             self.tempDispUnit = "°" | ||||
|  | ||||
|         if "weekly_title" in config: | ||||
| @@ -304,7 +304,7 @@ class Fullweather(inkycal_module): | ||||
|             self.image.paste(humidityIcon, (15, humidity_y)) | ||||
|  | ||||
|             # Humidity | ||||
|             humidityString = f"{self.current_weather.humidity} %" | ||||
|             humidityString = f"{self.current_weather['humidity']} %" | ||||
|             humidityFont = self.get_font("Bold", self.font_size + 8) | ||||
|             image_draw.text((65, humidity_y), humidityString, font=humidityFont, fill=(255, 255, 255)) | ||||
|  | ||||
| @@ -315,7 +315,7 @@ class Fullweather(inkycal_module): | ||||
|             self.image.paste(uvIcon, (15, ux_y)) | ||||
|  | ||||
|             # uvindex | ||||
|             uvString = f"{self.current_weather.uvi if self.current_weather.uvi else '0'}" | ||||
|             uvString = f"{self.current_weather['uvi'] if self.current_weather['uvi'] else '0'}" | ||||
|             uvFont = self.get_font("Bold", self.font_size + 8) | ||||
|             image_draw.text((65, ux_y), uvString, font=uvFont, fill=(255, 255, 255)) | ||||
|  | ||||
| @@ -327,7 +327,7 @@ class Fullweather(inkycal_module): | ||||
|         image_draw = ImageDraw.Draw(self.image) | ||||
|  | ||||
|         ## Add detailed weather status text to the image | ||||
|         sumString = self.current_weather.detailed_status.replace(" ", "\n ") | ||||
|         sumString = self.current_weather["detailed_status"].replace(" ", "\n ") | ||||
|         sumFont = self.get_font("Regular", self.font_size + 8) | ||||
|         maxW = 0 | ||||
|         totalH = 0 | ||||
| @@ -343,7 +343,7 @@ class Fullweather(inkycal_module): | ||||
|         logger.debug(f"Added current weather detailed status text: {sumString} at x:{sumtext_x}/y:{sumtext_y}.") | ||||
|  | ||||
|         ## Add current weather icon to the image | ||||
|         icon = get_weather_icon(icon_name=self.current_weather.weather_icon_name, size=150) | ||||
|         icon = get_weather_icon(icon_name=self.current_weather["weather_icon_name"], size=150) | ||||
|         # Create a mask from the alpha channel of the weather icon | ||||
|         if len(icon.split()) == 4: | ||||
|             mask = icon.split()[-1] | ||||
| @@ -355,7 +355,7 @@ class Fullweather(inkycal_module): | ||||
|         self.image.paste(icon, (icon_x, icon_y), mask) | ||||
|  | ||||
|         ## Add current temperature to the image | ||||
|         tempString = f"{self.current_weather.temperature(self.temp_units)['feels_like']:.0f}{self.tempDispUnit}" | ||||
|         tempString = f"{self.current_weather['temp_feels_like']:.0f}{self.tempDispUnit}" | ||||
|         tempFont = self.get_font("Bold", 68) | ||||
|         # Get the width of the text | ||||
|         tempStringbbox = tempFont.getbbox(tempString) | ||||
| @@ -425,7 +425,7 @@ class Fullweather(inkycal_module): | ||||
|  | ||||
|         # Plot Temperature as line plot in red | ||||
|         ax1.plot(timestamps, temperatures, marker=".", linestyle="-", color="r") | ||||
|         temp_base = 3 if self.temp_units == "celsius" else 5 | ||||
|         temp_base = 3 if self.temp_unit == "celsius" else 5 | ||||
|         fig.gca().yaxis.set_major_locator(ticker.MultipleLocator(base=temp_base)) | ||||
|         ax1.tick_params(axis="y", colors="red") | ||||
|         ax1.set_yticks(ax1.get_yticks()) | ||||
| @@ -508,7 +508,7 @@ class Fullweather(inkycal_module): | ||||
|             x_rect = self.left_section_width + 20 + i * rectangle_width  # Start from the title width | ||||
|             y_rect = int(self.height / 2 + 30) | ||||
|  | ||||
|             day_data = owm_forecasts.get_forecast_for_day(days_from_today=i, hourly_forecasts=self.hourly_forecasts) | ||||
|             day_data = self.my_owm.get_forecast_for_day(days_from_today=i) | ||||
|             rect = Image.new("RGBA", (int(rectangle_width), int(rectangle_height)), (255, 255, 255)) | ||||
|             rect_draw = ImageDraw.Draw(rect) | ||||
|  | ||||
| @@ -605,13 +605,22 @@ class Fullweather(inkycal_module): | ||||
|             raise NetworkNotReachableError | ||||
|  | ||||
|         # Get the weather | ||||
|         (self.current_weather, self.hourly_forecasts) = owm_forecasts.get_owm_data( | ||||
|             token=self.api_key, | ||||
|         self.my_owm = openweathermap_wrapper.OpenWeatherMap( | ||||
|             api_key=self.api_key, | ||||
|             city_id=self.location, | ||||
|             temp_units=self.temp_units, | ||||
|             wind_units=self.wind_units, | ||||
|             temp_unit=self.temp_unit, | ||||
|             wind_unit=self.wind_unit, | ||||
|             language=self.language, | ||||
|         ) | ||||
|         self.current_weather = self.my_owm.get_current_weather() | ||||
|         self.hourly_forecasts = self.my_owm.get_weather_forecast() | ||||
|         # (self.current_weather, self.hourly_forecasts) = owm_forecasts.get_owm_data( | ||||
|         #    token=self.api_key, | ||||
|         #    city_id=self.location, | ||||
|         #    temp_unit=self.temp_unit, | ||||
|         #    wind_unit=self.wind_unit, | ||||
|         #    language=self.language, | ||||
|         # ) | ||||
|  | ||||
|         ## Create Base Image | ||||
|         self.createBaseImage() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 mrbwburns
					mrbwburns