Added optional parameters
This commit is contained in:
		| @@ -17,6 +17,19 @@ import arrow | |||||||
| import math, decimal | import math, decimal | ||||||
| dec = decimal.Decimal | dec = decimal.Decimal | ||||||
|  |  | ||||||
|  |  | ||||||
|  | """Optional parameters""" | ||||||
|  | round_temperature = True | ||||||
|  | round_windspeed = True | ||||||
|  | use_beaufort = True | ||||||
|  | show_wind_direction = False | ||||||
|  | use_wind_direction_icon = False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | """Set the optional parameters""" | ||||||
|  | decimal_places_temperature = None if round_temperature == True else 1 | ||||||
|  | decimal_places_windspeed = None if round_windspeed == True else 1 | ||||||
|  |  | ||||||
| print('Initialising weather...', end=' ') | print('Initialising weather...', end=' ') | ||||||
| owm = pyowm.OWM(api_key, language=language) | owm = pyowm.OWM(api_key, language=language) | ||||||
| print('Done') | print('Done') | ||||||
| @@ -102,14 +115,26 @@ temperature_fc4_pos = (coloumn7, row3) | |||||||
| windspeed_to_beaufort = [0.02, 1.5, 3.3, 5.4, 7.9, 10.7, 13.8, 17.1, 20.7, | windspeed_to_beaufort = [0.02, 1.5, 3.3, 5.4, 7.9, 10.7, 13.8, 17.1, 20.7, | ||||||
|   24.4, 28.4, 32.6, 100] |   24.4, 28.4, 32.6, 100] | ||||||
|  |  | ||||||
| """Function to convert tempertures from kelvin to celcius or fahrenheit""" |  | ||||||
| def to_units(kelvin): | def to_units(kelvin): | ||||||
|  |   """Function to convert tempertures from kelvin to celcius or fahrenheit""" | ||||||
|  |   degrees_celsius = round(kelvin - 273.15, ndigits = decimal_places_temperature) | ||||||
|  |   fahrenheit = round((kelvin - 273.15) * 9/5 + 32, | ||||||
|  |                      ndigits = decimal_places_temperature) | ||||||
|   if units == 'metric': |   if units == 'metric': | ||||||
|     conversion =  str(int(kelvin - 273.15)) + '°C' |     conversion = str(degrees_celsius) + '°C' | ||||||
|   else: |        | ||||||
|     conversion = str(int((kelvin - 273.15) * 9/5 + 32)) + 'F' |   if units == 'imperial': | ||||||
|  |     conversion = str(fahrenheit) + 'F' | ||||||
|  |  | ||||||
|   return conversion |   return conversion | ||||||
|  |  | ||||||
|  | def red_temp(negative_temperature): | ||||||
|  |   if display_type == 'colour' and negative_temperature[0] == '-' and units == 'metric': | ||||||
|  |     colour = 'red' | ||||||
|  |   else: | ||||||
|  |     colour = 'black' | ||||||
|  |   return colour | ||||||
|  |  | ||||||
| """Function to convert time objects to specified format 12/24 hours""" | """Function to convert time objects to specified format 12/24 hours""" | ||||||
| """Simple means just the hour and if 12 hours, am/pm as well""" | """Simple means just the hour and if 12 hours, am/pm as well""" | ||||||
| def to_hours(datetime_object, simple = False): | def to_hours(datetime_object, simple = False): | ||||||
| @@ -186,9 +211,23 @@ def main(): | |||||||
|       cloudstatus_now = str(weather.get_clouds()) |       cloudstatus_now = str(weather.get_clouds()) | ||||||
|       weather_description_now = str(weather.get_detailed_status()) |       weather_description_now = str(weather.get_detailed_status()) | ||||||
|       windspeed_now = weather.get_wind(unit='meters_sec')['speed'] |       windspeed_now = weather.get_wind(unit='meters_sec')['speed'] | ||||||
|  |       wind_degrees = forecast_fc1.get_wind()['deg'] | ||||||
|  |       wind_direction = ["N","NE","E","SE","S","SW","W","NW"][round( | ||||||
|  |         wind_degrees/45) % 8] | ||||||
|  |  | ||||||
|       beaufort = str([windspeed_to_beaufort.index(_) for _ in |       if use_beaufort == True: | ||||||
|         windspeed_to_beaufort if windspeed_now < _][0]) |         wind = str([windspeed_to_beaufort.index(_) for _ in | ||||||
|  |           windspeed_to_beaufort if windspeed_now < _][0]) | ||||||
|  |       else: | ||||||
|  |         meters_sec = round(windspeed_now, ndigits = windspeed_decimal_places) | ||||||
|  |         miles_per_hour = round(windspeed_now * 2,23694, | ||||||
|  |                                ndigits = windspeed_decimal_places) | ||||||
|  |         if units == 'metric': | ||||||
|  |           wind = str(meters_sec) + 'm/s' | ||||||
|  |         if units == 'imperial': | ||||||
|  |           wind = str(miles_per_hour) + 'mph' | ||||||
|  |       if show_wind_direction == True: | ||||||
|  |         wind += '({0})'.format(wind_direction) | ||||||
|  |  | ||||||
|       """Calculate the moon phase""" |       """Calculate the moon phase""" | ||||||
|       def get_moon_phase(): |       def get_moon_phase(): | ||||||
| @@ -212,15 +251,21 @@ def main(): | |||||||
|         font = w_font, fill_height = 0.9) |         font = w_font, fill_height = 0.9) | ||||||
|       write_text(icon_small, icon_small, '\uf07a', humidity_icon_now_pos, |       write_text(icon_small, icon_small, '\uf07a', humidity_icon_now_pos, | ||||||
|         font = w_font, fill_height = 0.9) |         font = w_font, fill_height = 0.9) | ||||||
|       write_text(icon_small, icon_small, '\uf050', windspeed_icon_now_pos, |        | ||||||
|         font = w_font, fill_height = 0.9) |       if use_wind_direction_icon == False:   | ||||||
|  |         write_text(icon_small, icon_small, '\uf050', windspeed_icon_now_pos, | ||||||
|  |           font = w_font, fill_height = 0.9) | ||||||
|  |       else: | ||||||
|  |         write_text(icon_small, icon_small, '\uf0b1', windspeed_icon_now_pos, | ||||||
|  |           font = w_font, fill_height = 0.9, rotation = -wind_degrees) | ||||||
|  |  | ||||||
|       write_text(coloumn_width-icon_small, row_height, |       write_text(coloumn_width-icon_small, row_height, | ||||||
|         temperature_now, temperature_now_pos, font = font) |         temperature_now, temperature_now_pos, font = font, text_colour = | ||||||
|  |                  red_temp(temperature_now)) | ||||||
|       write_text(coloumn_width-icon_small, row_height, humidity_now+'%', |       write_text(coloumn_width-icon_small, row_height, humidity_now+'%', | ||||||
|         humidity_now_pos, font = font) |         humidity_now_pos, font = font) | ||||||
|       write_text(coloumn_width-icon_small, row_height, beaufort, |       write_text(coloumn_width-icon_small, row_height, wind, | ||||||
|         windspeed_now_pos, font = font) |         windspeed_now_pos, font = font, autofit = True) | ||||||
|  |  | ||||||
|       """Add weather details in column 3""" |       """Add weather details in column 3""" | ||||||
|       write_text(coloumn_width, row_height, moonphase , moon_phase_now_pos, |       write_text(coloumn_width, row_height, moonphase , moon_phase_now_pos, | ||||||
| @@ -237,38 +282,41 @@ def main(): | |||||||
|         to_hours(sunset_time_now), sunset_time_now_pos, font = font, |         to_hours(sunset_time_now), sunset_time_now_pos, font = font, | ||||||
|                  fill_width = 0.9) |                  fill_width = 0.9) | ||||||
|  |  | ||||||
|       """Add weather details in column 4""" |       """Add weather details in column 4 (forecast 1)""" | ||||||
|       write_text(coloumn_width, row_height, to_hours(fc1, simple=True), |       write_text(coloumn_width, row_height, to_hours(fc1, simple=True), | ||||||
|         text_fc1_pos, font = font) |         text_fc1_pos, font = font) | ||||||
|       write_text(coloumn_width, row_height, weathericons[weather_icon_fc1], |       write_text(coloumn_width, row_height, weathericons[weather_icon_fc1], | ||||||
|         icon_fc1_pos, font = w_font, fill_height = 1.0) |         icon_fc1_pos, font = w_font, fill_height = 1.0) | ||||||
|       write_text(coloumn_width, row_height, temperature_fc1, |       write_text(coloumn_width, row_height, temperature_fc1, | ||||||
|           temperature_fc1_pos, font = font) |         temperature_fc1_pos, font = font, text_colour = red_temp( | ||||||
|  |           temperature_fc1)) | ||||||
|  |  | ||||||
|       """Add weather details in column 5""" |       """Add weather details in column 5 (forecast 2)""" | ||||||
|       write_text(coloumn_width, row_height, to_hours(fc2, simple=True), |       write_text(coloumn_width, row_height, to_hours(fc2, simple=True), | ||||||
|         text_fc2_pos, font = font) |         text_fc2_pos, font = font) | ||||||
|       write_text(coloumn_width, row_height, weathericons[weather_icon_fc2], |       write_text(coloumn_width, row_height, weathericons[weather_icon_fc2], | ||||||
|         icon_fc2_pos, font = w_font, fill_height = 1.0) |         icon_fc2_pos, font = w_font, fill_height = 1.0) | ||||||
|       write_text(coloumn_width, row_height, temperature_fc2, |       write_text(coloumn_width, row_height, temperature_fc2, | ||||||
|           temperature_fc2_pos, font = font) |           temperature_fc2_pos, font = font, text_colour = red_temp( | ||||||
|  |           temperature_fc2)) | ||||||
|  |  | ||||||
|       """Add weather details in column 6""" |       """Add weather details in column 6 (forecast 3)""" | ||||||
|       write_text(coloumn_width, row_height, to_hours(fc3, simple=True), |       write_text(coloumn_width, row_height, to_hours(fc3, simple=True), | ||||||
|         text_fc3_pos, font = font) |         text_fc3_pos, font = font) | ||||||
|       write_text(coloumn_width, row_height, weathericons[weather_icon_fc3], |       write_text(coloumn_width, row_height, weathericons[weather_icon_fc3], | ||||||
|         icon_fc3_pos, font = w_font, fill_height = 1.0) |         icon_fc3_pos, font = w_font, fill_height = 1.0) | ||||||
|       write_text(coloumn_width, row_height, temperature_fc3, |       write_text(coloumn_width, row_height, temperature_fc3, | ||||||
|           temperature_fc3_pos, font = font) |           temperature_fc3_pos, font = font, text_colour = red_temp( | ||||||
|  |           temperature_fc3)) | ||||||
|  |  | ||||||
|       """Add weather details in last coloumn""" |       """Add weather details in coloumn 7 (forecast 4)""" | ||||||
|       write_text(coloumn_width, row_height, to_hours(fc4, simple=True), |       write_text(coloumn_width, row_height, to_hours(fc4, simple=True), | ||||||
|         text_fc4_pos, font = font) |         text_fc4_pos, font = font) | ||||||
|       write_text(coloumn_width, row_height, weathericons[weather_icon_fc4], |       write_text(coloumn_width, row_height, weathericons[weather_icon_fc4], | ||||||
|         icon_fc4_pos, font = w_font, fill_height = 1.0) |         icon_fc4_pos, font = w_font, fill_height = 1.0) | ||||||
|       write_text(coloumn_width, row_height, temperature_fc4, |       write_text(coloumn_width, row_height, temperature_fc4, | ||||||
|           temperature_fc4_pos, font = font) |           temperature_fc4_pos, font = font, text_colour = red_temp( | ||||||
|  |           temperature_fc4)) | ||||||
|  |  | ||||||
|       """Add vertical lines between forecast sections""" |       """Add vertical lines between forecast sections""" | ||||||
|       draw = ImageDraw.Draw(image) |       draw = ImageDraw.Draw(image) | ||||||
| @@ -299,6 +347,5 @@ def main(): | |||||||
|         font = font) |         font = font) | ||||||
|       pass |       pass | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|   main() |   main() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user