Some code tweaks and improvements
str-function for weather now more modular daily weather for first two days is not included anymore Fixed bug: each daily weather now includes the real temperatures, not the ones from the last day
This commit is contained in:
		
							parent
							
								
									e623b317c9
								
							
						
					
					
						commit
						f6d0db3f41
					
				
					 1 changed files with 26 additions and 47 deletions
				
			
		| 
						 | 
				
			
			@ -38,26 +38,22 @@ class HourlyWeather:
 | 
			
		|||
        self.description = json_data['weather'][0]['description']
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        if self.probability_of_precipitation == 0:
 | 
			
		||||
            return "*{time}*: {main} | {temperature}°C 🧑: {feels_like}°C" \
 | 
			
		||||
                   " 💨: {wind_speed}m/s" \
 | 
			
		||||
                .format(time=self.time.strftime("%Hh"), main=self.main,
 | 
			
		||||
        string = ""
 | 
			
		||||
        string += "*{time}*: {main} | {temperature:.0f}°C 🧑: {feels_like:.0f}°C" \
 | 
			
		||||
            .format(time=self.time.strftime("%Hh"),
 | 
			
		||||
                    main=self.main,
 | 
			
		||||
                    temperature=self.temperature,
 | 
			
		||||
                        feels_like=self.feels_like,
 | 
			
		||||
                        wind_speed=self.wind_speed)
 | 
			
		||||
        else:
 | 
			
		||||
            return "*{time}*: {main} | {temperature}°C 🧑: {feels_like}°C ☔: {pop:.0f}% {rain}mm 💨: {wind_speed}m/s" \
 | 
			
		||||
                .format(time=self.time.strftime("%Hh"), main=self.main,
 | 
			
		||||
                        temperature=self.temperature,
 | 
			
		||||
                        feels_like=self.feels_like,
 | 
			
		||||
                        pop=(100 * self.probability_of_precipitation),
 | 
			
		||||
                        rain=self.rain,
 | 
			
		||||
                        wind_speed=self.wind_speed)
 | 
			
		||||
                    feels_like=self.feels_like)
 | 
			
		||||
        if self.probability_of_precipitation != 0:
 | 
			
		||||
            string += " ☔: {pop:.0f}% {rain}mm".format(pop=100 * self.probability_of_precipitation, rain=self.rain)
 | 
			
		||||
 | 
			
		||||
        string += " 💨{wind_speed:.1f}km/h".format(wind_speed=3.6 * self.wind_speed)
 | 
			
		||||
        return string
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DailyWeather:
 | 
			
		||||
    time: datetime
 | 
			
		||||
    temp = dict()
 | 
			
		||||
    temp: dict
 | 
			
		||||
    feels_like: float
 | 
			
		||||
    wind_speed: float
 | 
			
		||||
    probability_of_precipitation: float
 | 
			
		||||
| 
						 | 
				
			
			@ -67,9 +63,7 @@ class DailyWeather:
 | 
			
		|||
 | 
			
		||||
    def __init__(self, json_data: json):
 | 
			
		||||
        self.time = datetime.fromtimestamp(json_data['dt'])
 | 
			
		||||
        self.temp['min'] = json_data['temp']['min']
 | 
			
		||||
        self.temp['day'] = json_data['temp']['day']
 | 
			
		||||
        self.temp['max'] = json_data['temp']['max']
 | 
			
		||||
        self.temp = {'min': json_data['temp']['min'], 'day': json_data['temp']['day'], 'max': json_data['temp']['max']}
 | 
			
		||||
        self.feels_like = json_data['feels_like']['day']
 | 
			
		||||
        self.wind_speed = json_data['wind_speed']
 | 
			
		||||
        self.probability_of_precipitation = json_data['pop']
 | 
			
		||||
| 
						 | 
				
			
			@ -81,28 +75,18 @@ class DailyWeather:
 | 
			
		|||
        self.description = json_data['weather'][0]['description']
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        if self.probability_of_precipitation == 0:
 | 
			
		||||
            return "*{time}*: {main} | {min} - {day} - {max} 🧑: {feels_like_day}" \
 | 
			
		||||
                   " 💨: {wind_speed}m/s" \
 | 
			
		||||
        string = ""
 | 
			
		||||
        string += "*{time}*: {main} | {min}°C - {day}°C - {max}°C 🧑: {feels_like_day:.0f}°C" \
 | 
			
		||||
            .format(time=self.time.strftime("%d"),
 | 
			
		||||
                    main=self.main,
 | 
			
		||||
                    min=self.temp['min'],
 | 
			
		||||
                    day=self.temp['day'],
 | 
			
		||||
                    max=self.temp['max'],
 | 
			
		||||
                        feels_like_day=self.feels_like,
 | 
			
		||||
                        wind_speed=self.wind_speed)
 | 
			
		||||
        else:
 | 
			
		||||
            return "*{time}*: {main} | {min} - {day} - {max} 🧑: {feels_like_day}" \
 | 
			
		||||
                   " ☔: {pop:.0f}% {rain}mm 💨: {wind_speed}m/s" \
 | 
			
		||||
                .format(time=self.time.strftime("%d"),
 | 
			
		||||
                        main=self.main,
 | 
			
		||||
                        min=self.temp['min'],
 | 
			
		||||
                        day=self.temp['day'],
 | 
			
		||||
                        max=self.temp['max'],
 | 
			
		||||
                        feels_like_day=self.feels_like,
 | 
			
		||||
                        pop=(100 * self.probability_of_precipitation),
 | 
			
		||||
                        rain=self.rain,
 | 
			
		||||
                        wind_speed=self.wind_speed)
 | 
			
		||||
                    feels_like_day=self.feels_like)
 | 
			
		||||
        if self.probability_of_precipitation != 0:
 | 
			
		||||
            string += " ☔: {pop:.0f}% {rain}mm".format(pop=100 * self.probability_of_precipitation, rain=self.rain)
 | 
			
		||||
        string += " 💨: {wind_speed:.1f}km/h".format(wind_speed=3.6 * self.wind_speed)
 | 
			
		||||
        return string
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TotalWeather:
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +94,7 @@ class TotalWeather:
 | 
			
		|||
    daily_weather = []
 | 
			
		||||
 | 
			
		||||
    def __init__(self, json_data: json):
 | 
			
		||||
        for single_daily_weather in json_data['daily']:
 | 
			
		||||
        for single_daily_weather in json_data['daily'][2:]:
 | 
			
		||||
            self.daily_weather.append(DailyWeather(single_daily_weather))
 | 
			
		||||
        for single_hourly_weather in json_data['hourly']:
 | 
			
		||||
            self.hourly_weather.append(HourlyWeather(single_hourly_weather))
 | 
			
		||||
| 
						 | 
				
			
			@ -173,11 +157,6 @@ def get_city_by_name(city_name: str) -> City:
 | 
			
		|||
    return City(cid=city_list[0]['id'], name=city_list[0]['name'], lat=city_list[0]['coord']['lat'],
 | 
			
		||||
                lon=city_list[0]['coord']['lon'])
 | 
			
		||||
 | 
			
		||||
    # city_lat = city['coord']['lat']
 | 
			
		||||
    # city_lon = city['coord']['lon']
 | 
			
		||||
    #
 | 
			
		||||
    # print(str(city_lat) + "  " + str(city_lon))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_city_list():
 | 
			
		||||
    with open("city.list.json", "r") as city_list_file:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue