예제 #1
0
    def get_hourly_weather(self):
        weatherdata = []
        if self.id:
            url = URL_HOURLY_CITY_ID % self.id
        else:
            url = URL_HOURLY_CITY_LL % (self.latitude, self.longitude)
        print('OWMWeatherService Current Weather url:%s' % (url))
        parsed_json = read_json_from_url(url)
        if parsed_json is None:
            return weatherdata
        for contador, data in enumerate(parsed_json['list']):
            condition = CONDITION[data['weather'][0]['id']]
            temperature = cf.fa2f(data['main']['temp'])
            cloudiness = data['clouds']['all']
            # pressure = data['main']['pressure']
            humidity = data['main']['humidity']
            velocity = data['wind']['speed'] if 'wind' in data.keys() and\
                'speed' in data['wind'].keys() else 0.0
            t1 = cf.fa2f(data['main']['temp_min'])
            t2 = cf.fa2f(data['main']['temp_max'])
            direction = data['wind']['deg'] if 'wind' in data.keys() and\
                'deg' in data['wind'].keys() else 0.0
            if t1 < t2:
                temp_min = str(t1)
                temp_max = str(t2)
            else:
                temp_min = str(t2)
                temp_max = str(t1)
            wind_direction = weatherservice.degToCompass2(direction)

            wdd = {}
            wdd['datetime'] = datetime.fromtimestamp(data['dt'])
            wdd['condition'] = condition
            wdd['condition_text'] = weatherservice.get_condition(
                condition, 'text')
            wdd['condition_image'] = weatherservice.get_condition(
                condition, 'image')
            wdd['condition_icon'] = weatherservice.get_condition(
                condition, 'icon-light')
            wdd['temperature'] = cf.change_temperature(
                temperature, self.units.temperature).split(' ')[0]
            wdd['low'] = cf.change_temperature(temp_min,
                                               self.units.temperature)
            wdd['high'] = cf.change_temperature(temp_max,
                                                self.units.temperature)
            wdd['cloudiness'] = '%s' % (cloudiness)
            wdd['avehumidity'] = '%s' % (humidity)
            wdd['avewind'] = weatherservice.get_wind_condition2(
                velocity, wind_direction[0], self.units.wind)
            wdd['wind_icon'] = wind_direction[2]
            weatherdata.append(wdd)
        return weatherdata
 def get_hourly_weather(self):
     weatherdata = []
     if self.id:
         url = URL_HOURLY_CITY_ID % self.id
     else:
         url = URL_HOURLY_CITY_LL % (self.latitude, self.longitude)
     print('OWMWeatherService Current Weather url:%s' % (url))
     parsed_json = read_json_from_url(url)
     if parsed_json is None:
         return weatherdata
     for contador, data in enumerate(parsed_json['list']):
         condition = CONDITION[data['weather'][0]['id']]
         temperature = fa2f(data['main']['temp'])
         cloudiness = data['clouds']['all']
         pressure = data['main']['pressure']
         humidity = data['main']['humidity']
         velocity = data['wind']['speed'] if 'wind' in data.keys() and\
             'speed' in data['wind'].keys() else 0.0
         t1 = fa2f(data['main']['temp_min'])
         t2 = fa2f(data['main']['temp_max'])
         direction = data['wind']['deg'] if 'wind' in data.keys() and\
             'deg' in data['wind'].keys() else 0.0
         if t1 < t2:
             temp_min = str(t1)
             temp_max = str(t2)
         else:
             temp_min = str(t2)
             temp_max = str(t1)
         wind_direction = weatherservice.degToCompass2(direction)
         wdd = {}
         wdd['datetime'] = datetime.fromtimestamp(data['dt'])
         wdd['condition'] = condition
         wdd['condition_text'] = weatherservice.get_condition(
             condition, 'text')
         wdd['condition_image'] = weatherservice.get_condition(
             condition, 'image')
         wdd['condition_icon'] = weatherservice.get_condition(
             condition, 'icon-light')
         wdd['temperature'] = weatherservice.change_temperature(
             temperature, self.units.temperature).split(' ')[0]
         wdd['low'] = weatherservice.change_temperature(
             temp_min, self.units.temperature)
         wdd['high'] = weatherservice.change_temperature(
             temp_max, self.units.temperature)
         wdd['cloudiness'] = '%s' % (cloudiness)
         wdd['avehumidity'] = '%s' % (humidity)
         wdd['avewind'] = weatherservice.get_wind_condition2(
             velocity, wind_direction[0], self.units.wind)
         wdd['wind_icon'] = wind_direction[2]
         weatherdata.append(wdd)
     return weatherdata
    def get_weather(self):
        weather_data = self.get_default_values()
        if self.id is None:
            self.id = find_city(self.longitude, self.latitude)
            print('****', self.id)
        if self.id is not None:
            url = URL_CURRENT_CITY_ID % self.id
        else:
            url = URL_CURRENT_CITY_LL % (self.latitude, self.longitude)
        print('-------------------------------------------------------')
        print('OpenWeatherMap Weather Service url:%s' % (url))
        print('-------------------------------------------------------')
        parsed_json = read_json_from_url(url)
        if parsed_json is None or\
                'weather' not in parsed_json.keys() or\
                'main' not in parsed_json.keys() or\
                'wind' not in parsed_json.keys() or\
                'clouds' not in parsed_json.keys():
            return weather_data
        weather_data['update_time'] = time.time()
        weather_data['ok'] = True
        if parsed_json['weather'][0]['id'] not in CONDITION.keys():
            condition = 'not available'
        else:
            condition = CONDITION[parsed_json['weather'][0]['id']]
        temperature = fa2f(parsed_json['main']['temp'])
        pressure = parsed_json['main']['pressure'] if 'pressure' in\
            parsed_json['main'] else 0
        humidity = parsed_json['main']['humidity'] if 'humidity' in\
            parsed_json['main'] else 0
        velocity = parsed_json['wind']['speed'] if 'speed' in\
            parsed_json['wind'] else 0
        cloudiness = parsed_json['clouds']['all']
        if 'deg' in parsed_json['wind'].keys():
            direction = parsed_json['wind']['deg']
        else:
            direction = 0
        wind_direction = weatherservice.degToCompass2(direction)
        weather_data['current_conditions']['condition'] = condition
        weather_data['current_conditions']['condition_text'] =\
            weatherservice.get_condition(condition, 'text')
        if weather_data['current_conditions']['isday']:
            weather_data['current_conditions']['condition_image'] =\
                weatherservice.get_condition(condition, 'image')
            weather_data['current_conditions']['condition_icon_dark'] =\
                weatherservice.get_condition(condition, 'icon-dark')
            weather_data['current_conditions']['condition_icon_light'] =\
                weatherservice.get_condition(condition, 'icon-light')
        else:
            weather_data['current_conditions']['condition_image'] =\
                weatherservice.get_condition(condition, 'image-night')
            weather_data['current_conditions']['condition_icon_dark'] =\
                weatherservice.get_condition(condition, 'icon-night-dark')
            weather_data['current_conditions']['condition_icon_light'] =\
                weatherservice.get_condition(condition, 'icon-night-light')
        weather_data['current_conditions']['temperature'] =\
            weatherservice.change_temperature(
                temperature, self.units.temperature)
        weather_data['current_conditions']['pressure'] =\
            weatherservice.change_pressure(
                pressure, self.units.pressure)
        weather_data['current_conditions']['humidity'] = '%s %%' % (humidity)
        weather_data['current_conditions']['dew_point'] =\
            weatherservice.get_dew_point(
                humidity, temperature, self.units.temperature)
        weather_data['current_conditions']['wind_condition'] =\
            weatherservice.get_wind_condition2(
                velocity, wind_direction[0], self.units.wind)
        weather_data['current_conditions']['wind_icon'] = wind_direction[2]
        weather_data['current_conditions']['heat_index'] =\
            weatherservice.get_heat_index(temperature, humidity)
        weather_data['current_conditions']['windchill'] =\
            weatherservice.get_wind_chill(temperature, velocity)
        weather_data['current_conditions']['feels_like'] =\
            weatherservice.get_feels_like(
                temperature, humidity, velocity, self.units.temperature)
        weather_data['current_conditions']['visibility'] = None
        weather_data['current_conditions']['cloudiness'] = \
            '%s %%' % (cloudiness)
        weather_data['current_conditions']['solarradiation'] = None
        weather_data['current_conditions']['UV'] = None
        weather_data['current_conditions']['precip_1hr'] = None
        weather_data['current_conditions']['precip_today'] = None
        #

        # try:
        if self.id:
            url = URL_FORECAST_CITY_ID % self.id
        else:
            url = URL_FORECAST_CITY_LL % (self.latitude, self.longitude)
        parsed_json = read_json_from_url(url)
        if parsed_json is None:
            return weather_data
        for contador, data in enumerate(parsed_json['list']):
            condition = CONDITION[data['weather'][0]['id']]
            temperature = fa2f(data['temp']['day'])
            cloudiness = data['clouds'] if 'clouds' in data.keys() else 0
            pressure = data['pressure'] if 'pressure' in data.keys() else 0
            humidity = data['humidity'] if 'humidity' in data.keys() else 0
            velocity = data['speed'] if 'speed' in data.keys() else 0
            t1 = fa2f(data['temp']['min'])
            t2 = fa2f(data['temp']['max'])
            direction = data['deg']
            if t1 < t2:
                temp_min = str(t1)
                temp_max = str(t2)
            else:
                temp_min = str(t2)
                temp_max = str(t1)
            wind_direction = weatherservice.degToCompass2(direction)
            weather_data['forecasts'][contador]['condition'] = condition
            weather_data['forecasts'][contador]['condition_text'] =\
                weatherservice.get_condition(condition, 'text')
            weather_data['forecasts'][contador]['condition_image'] =\
                weatherservice.get_condition(condition, 'image')
            weather_data['forecasts'][contador]['condition_icon'] =\
                weatherservice.get_condition(condition, 'icon-light')
            weather_data['forecasts'][contador]['low'] =\
                weatherservice.change_temperature(
                    temp_min, self.units.temperature)
            weather_data['forecasts'][contador]['high'] =\
                weatherservice.change_temperature(
                    temp_max, self.units.temperature)
            weather_data['forecasts'][contador]['cloudiness'] =\
                '%s %%' % (cloudiness)
            weather_data['forecasts'][contador]['avehumidity'] =\
                '%s %%' % (humidity)
            weather_data['forecasts'][contador]['avewind'] =\
                weatherservice.get_wind_condition2(
                    velocity, wind_direction[0], self.units.wind)
            weather_data['forecasts'][contador]['wind_icon'] =\
                wind_direction[2]
            weather_data['forecasts'][contador]['qpf_allday'] = None
            weather_data['forecasts'][contador]['qpf_day'] = None
            weather_data['forecasts'][contador]['qpf_night'] = None
            weather_data['forecasts'][contador]['snow_allday'] = None
            weather_data['forecasts'][contador]['snow_day'] = None
            weather_data['forecasts'][contador]['snow_night'] = None
            weather_data['forecasts'][contador]['maxwind'] = None
            weather_data['forecasts'][contador]['maxhumidity'] = None
            weather_data['forecasts'][contador]['minhumidity'] = None
        # except Exception as e:
        # print(e)
        return weather_data
    def get_weather(self):
        weather_data = self.get_default_values()
        if self.id is None:
            self.id = find_city(self.longitude, self.latitude)
            print('****', self.id)
        if self.id is not None:
            url = URL_CURRENT_CITY_ID % self.id
        else:
            url = URL_CURRENT_CITY_LL % (self.latitude, self.longitude)
        print('-------------------------------------------------------')
        print('OpenWeatherMap Weather Service url:%s' % (url))
        print('-------------------------------------------------------')
        parsed_json = read_json_from_url(url)
        if parsed_json is None or\
                'weather' not in parsed_json.keys() or\
                'main' not in parsed_json.keys() or\
                'wind' not in parsed_json.keys() or\
                'clouds' not in parsed_json.keys():
            return weather_data
        weather_data['update_time'] = time.time()
        weather_data['ok'] = True
        if parsed_json['weather'][0]['id'] not in CONDITION.keys():
            condition = 'not available'
        else:
            condition = CONDITION[parsed_json['weather'][0]['id']]
        temperature = fa2f(parsed_json['main']['temp'])
        pressure = parsed_json['main']['pressure'] if 'pressure' in\
            parsed_json['main'] else 0
        humidity = parsed_json['main']['humidity'] if 'humidity' in\
            parsed_json['main'] else 0
        velocity = parsed_json['wind']['speed'] if 'speed' in\
            parsed_json['wind'] else 0
        cloudiness = parsed_json['clouds']['all']
        if 'deg' in parsed_json['wind'].keys():
            direction = parsed_json['wind']['deg']
        else:
            direction = 0
        wind_direction = weatherservice.degToCompass2(direction)
        weather_data['current_conditions']['condition'] = condition
        weather_data['current_conditions']['condition_text'] =\
            weatherservice.get_condition(condition, 'text')
        if weather_data['current_conditions']['isday']:
            weather_data['current_conditions']['condition_image'] =\
                weatherservice.get_condition(condition, 'image')
            weather_data['current_conditions']['condition_icon_dark'] =\
                weatherservice.get_condition(condition, 'icon-dark')
            weather_data['current_conditions']['condition_icon_light'] =\
                weatherservice.get_condition(condition, 'icon-light')
        else:
            weather_data['current_conditions']['condition_image'] =\
                weatherservice.get_condition(condition, 'image-night')
            weather_data['current_conditions']['condition_icon_dark'] =\
                weatherservice.get_condition(condition, 'icon-night-dark')
            weather_data['current_conditions']['condition_icon_light'] =\
                weatherservice.get_condition(condition, 'icon-night-light')
        weather_data['current_conditions']['temperature'] =\
            weatherservice.change_temperature(
                temperature, self.units.temperature)
        weather_data['current_conditions']['pressure'] =\
            weatherservice.change_pressure(
                pressure, self.units.pressure)
        weather_data['current_conditions']['humidity'] = '%s %%' % (humidity)
        weather_data['current_conditions']['dew_point'] =\
            weatherservice.get_dew_point(
                humidity, temperature, self.units.temperature)
        weather_data['current_conditions']['wind_condition'] =\
            weatherservice.get_wind_condition2(
                velocity, wind_direction[0], self.units.wind)
        weather_data['current_conditions']['wind_icon'] = wind_direction[2]
        weather_data['current_conditions']['heat_index'] =\
            weatherservice.get_heat_index(temperature, humidity)
        weather_data['current_conditions']['windchill'] =\
            weatherservice.get_wind_chill(temperature, velocity)
        weather_data['current_conditions']['feels_like'] =\
            weatherservice.get_feels_like(
                temperature, humidity, velocity, self.units.temperature)
        weather_data['current_conditions']['visibility'] = None
        weather_data['current_conditions']['cloudiness'] = \
            '%s %%' % (cloudiness)
        weather_data['current_conditions']['solarradiation'] = None
        weather_data['current_conditions']['UV'] = None
        weather_data['current_conditions']['precip_1hr'] = None
        weather_data['current_conditions']['precip_today'] = None
        #

        # try:
        if self.id:
            url = URL_FORECAST_CITY_ID % self.id
        else:
            url = URL_FORECAST_CITY_LL % (self.latitude, self.longitude)
        parsed_json = read_json_from_url(url)
        if parsed_json is None:
            return weather_data
        for contador, data in enumerate(parsed_json['list']):
            condition = CONDITION[data['weather'][0]['id']]
            temperature = fa2f(data['temp']['day'])
            cloudiness = data['clouds'] if 'clouds' in data.keys() else 0
            pressure = data['pressure'] if 'pressure' in data.keys() else 0
            humidity = data['humidity'] if 'humidity' in data.keys() else 0
            velocity = data['speed'] if 'speed' in data.keys() else 0
            t1 = fa2f(data['temp']['min'])
            t2 = fa2f(data['temp']['max'])
            direction = data['deg']
            if t1 < t2:
                temp_min = str(t1)
                temp_max = str(t2)
            else:
                temp_min = str(t2)
                temp_max = str(t1)
            wind_direction = weatherservice.degToCompass2(direction)
            weather_data['forecasts'][contador]['condition'] = condition
            weather_data['forecasts'][contador]['condition_text'] =\
                weatherservice.get_condition(condition, 'text')
            weather_data['forecasts'][contador]['condition_image'] =\
                weatherservice.get_condition(condition, 'image')
            weather_data['forecasts'][contador]['condition_icon'] =\
                weatherservice.get_condition(condition, 'icon-light')
            weather_data['forecasts'][contador]['low'] =\
                weatherservice.change_temperature(
                    temp_min, self.units.temperature)
            weather_data['forecasts'][contador]['high'] =\
                weatherservice.change_temperature(
                    temp_max, self.units.temperature)
            weather_data['forecasts'][contador]['cloudiness'] =\
                '%s %%' % (cloudiness)
            weather_data['forecasts'][contador]['avehumidity'] =\
                '%s %%' % (humidity)
            weather_data['forecasts'][contador]['avewind'] =\
                weatherservice.get_wind_condition2(
                    velocity, wind_direction[0], self.units.wind)
            weather_data['forecasts'][contador]['wind_icon'] =\
                wind_direction[2]
            weather_data['forecasts'][contador]['qpf_allday'] = None
            weather_data['forecasts'][contador]['qpf_day'] = None
            weather_data['forecasts'][contador]['qpf_night'] = None
            weather_data['forecasts'][contador]['snow_allday'] = None
            weather_data['forecasts'][contador]['snow_day'] = None
            weather_data['forecasts'][contador]['snow_night'] = None
            weather_data['forecasts'][contador]['maxwind'] = None
            weather_data['forecasts'][contador]['maxhumidity'] = None
            weather_data['forecasts'][contador]['minhumidity'] = None
        # except Exception as e:
        # print(e)
        return weather_data
예제 #5
0
    def get_weather(self):
        weather_data = self.get_default_values()
        print('-------------------------------------------------------')
        print('-------------------------------------------------------')
        print('WorldWeatherOnline Weather Service url:%s' %
              (URL % (self.latitude, self.longitude, self.key)))
        print('-------------------------------------------------------')
        print('-------------------------------------------------------')
        try:
            parsed_json = read_json_from_url(
                URL % (self.latitude, self.longitude, self.key))

            if parsed_json is None:
                return None
            if 'weather' not in parsed_json.keys(
            ) or 'main' not in parsed_json.keys(
            ) or 'wind' not in parsed_json.keys(
            ) or 'clouds' not in parsed_json.keys():
                return None
            number_condition = gvfco('weatherCode', parsed_json).lower()
            condition = get_condition(number_condition)
            #
            weather_data['current_conditions'][
                'condition_text'] = weatherservice.get_condition_wwa(
                    condition, 'text')
            if weather_data['current_conditions']['isday']:
                weather_data['current_conditions'][
                    'condition_image'] = weatherservice.get_condition_wwa(
                        condition, 'image')
                weather_data['current_conditions'][
                    'condition_icon_dark'] = weatherservice.get_condition_wwa(
                        condition, 'icon-dark')
                weather_data['current_conditions'][
                    'condition_icon_light'] = weatherservice.get_condition_wwa(
                        condition, 'icon-light')
            else:
                weather_data['current_conditions'][
                    'condition_image'] = weatherservice.get_condition_wwa(
                        condition, 'image-night')
                weather_data['current_conditions'][
                    'condition_icon_dark'] = weatherservice.get_condition_wwa(
                        condition, 'icon-night-dark')
                weather_data['current_conditions'][
                    'condition_icon_light'] = weatherservice.get_condition_wwa(
                        condition, 'icon-night-light')
            temperature = weatherservice.s2f(gvfco('temp_F', parsed_json))
            weather_data['current_conditions'][
                'temperature'] = weatherservice.change_temperature(
                    temperature, self.units.temperature)
            pressure = weatherservice.s2f(gvfco('pressure', parsed_json))
            weather_data['current_conditions'][
                'pressure'] = weatherservice.change_pressure(
                    pressure, self.units.pressure)
            humidity = weatherservice.s2f(gvfco('humidity', parsed_json))
            weather_data['current_conditions']['humidity'] = '%s %%' % (
                int(humidity))
            weather_data['current_conditions'][
                'dew_point'] = weatherservice.get_dew_point(
                    humidity, temperature, self.units.temperature)
            wind_velocity = weatherservice.s2f(
                gvfco('windspeedMiles', parsed_json))
            wind_direction = weatherservice.degToCompass2(
                gvfco('winddirDegree', parsed_json))
            weather_data['current_conditions'][
                'wind_condition'] = weatherservice.get_wind_condition2(
                    wind_velocity, wind_direction[0], self.units.wind)
            weather_data['current_conditions']['wind_icon'] = wind_direction[2]
            #
            weather_data['current_conditions'][
                'heat_index'] = weatherservice.get_heat_index(
                    temperature, humidity)
            weather_data['current_conditions'][
                'windchill'] = weatherservice.get_wind_chill(
                    temperature, wind_velocity)
            #
            weather_data['current_conditions'][
                'feels_like'] = weatherservice.get_feels_like(
                    temperature, humidity, wind_velocity,
                    self.units.temperature)
            #
            weather_data['current_conditions'][
                'visibility'] = weatherservice.change_distance(
                    gvfco('visibility', parsed_json), self.units.visibility)
            weather_data['current_conditions']['solarradiation'] = None
            weather_data['current_conditions']['UV'] = None
            weather_data['current_conditions']['precip_1hr'] = None
            weather_data['current_conditions'][
                'precip_today'] = weatherservice.change_longitude(
                    weatherservice.s2f(gvfco('precipMM', parsed_json)) / 25.4,
                    self.units.rain)
            for i in range(0, 5):
                t1 = weatherservice.s2f(gvff('tempMinF', i, parsed_json))
                t2 = weatherservice.s2f(gvff('tempMaxF', i, parsed_json))
                if t1 < t2:
                    tmin = str(t1)
                    tmax = str(t2)
                else:
                    tmin = str(t2)
                    tmax = str(t1)
                weather_data['forecasts'][i][
                    'low'] = weatherservice.change_temperature(
                        tmin, self.units.temperature)
                weather_data['forecasts'][i][
                    'high'] = weatherservice.change_temperature(
                        tmax, self.units.temperature)
                #
                weather_data['forecasts'][i][
                    'qpf_allday'] = weatherservice.change_longitude(
                        weatherservice.s2f(gvff('precipMM', i, parsed_json)) /
                        25.4, self.units.rain)
                weather_data['forecasts'][i]['qpf_day'] = None
                weather_data['forecasts'][i]['qpf_night'] = None
                weather_data['forecasts'][i]['snow_allday'] = None
                weather_data['forecasts'][i]['snow_day'] = None
                weather_data['forecasts'][i]['snow_night'] = None
                weather_data['forecasts'][i]['maxwind'] = None
                winddir = gvff('winddirDegree', i, parsed_json)
                winsped = gvff('windspeedMiles', i, parsed_json)
                wind_direction = weatherservice.degToCompass2(winddir)
                weather_data['forecasts'][i][
                    'avewind'] = weatherservice.get_wind_condition2(
                        winsped, wind_direction[0], self.units.wind)
                weather_data['forecasts'][i]['wind_icon'] = wind_direction[2]
                weather_data['forecasts'][i]['avehumidity'] = None
                weather_data['forecasts'][i]['maxhumidity'] = None
                weather_data['forecasts'][i]['minhumidity'] = None
                #
                number_condition = gvff('weatherCode', i, parsed_json).lower()
                condition = get_condition(number_condition)
                weather_data['forecasts'][i]['condition'] = condition
                weather_data['forecasts'][i][
                    'condition_text'] = weatherservice.get_condition_wwa(
                        condition, 'text')
                weather_data['forecasts'][i][
                    'condition_image'] = weatherservice.get_condition_wwa(
                        condition, 'image')
                weather_data['forecasts'][i][
                    'condition_icon'] = weatherservice.get_condition_wwa(
                        condition, 'icon-light')
            weather_data['forecast_information']['city'] = None
            weather_data['forecast_information']['postal_code'] = None
            weather_data['forecast_information']['latitude_e6'] = None
            weather_data['forecast_information']['longitude_e6'] = None
        except Exception as e:
            print(e)
        return weather_data
 def get_weather(self, tries=3):
     weather_data = self.get_default_values()
     if self.woeid is None:
         self.woeid = geocodeapi.get_woeid(self.latitude, self.longitude)
         if self.woeid is None:
             print('Yahoo Weather Service, not found woeid')
             return weather_data
     try:
         ans = self.run_query()
         if ans is None or\
                 'query' not in ans.keys() or\
                 'results' not in ans['query'].keys() or\
                 'channel' not in ans['query']['results'].keys():
             if tries > 0:
                 tries = tries - 1
                 print('************ === ************')
                 print('Try: %s' % (tries))
                 print('************ === ************')
                 weather_data = self.get_weather(tries)
             return weather_data
         data = ans['query']['results']['channel']
         temperature = s2f(data['item']['condition']['temp'])
         velocity = s2f(data['wind']['speed'])
         direction = s2f(data['wind']['direction'])
         pressure = s2f(data['atmosphere']['pressure'])
         visibility = s2f(data['atmosphere']['visibility'])
         humidity = s2f(data['atmosphere']['humidity'])
         condition = CODE[int(data['item']['condition']['code'])]
         weather_data['current_conditions']['condition'] = condition
         weather_data['current_conditions']['condition_text'] =\
             weatherservice.get_condition(condition, 'text')
         if weather_data['current_conditions']['isday']:
             weather_data['current_conditions']['condition_image'] =\
                 weatherservice.get_condition(condition, 'image')
             weather_data['current_conditions']['condition_icon_dark'] =\
                 weatherservice.get_condition(condition, 'icon-dark')
             weather_data['current_conditions']['condition_icon_light'] =\
                 weatherservice.get_condition(condition, 'icon-light')
         else:
             weather_data['current_conditions']['condition_image'] =\
                 weatherservice.get_condition(condition, 'image-night')
             weather_data['current_conditions']['condition_icon_dark'] =\
                 weatherservice.get_condition(condition, 'icon-night-dark')
             weather_data['current_conditions']['condition_icon_light'] =\
                 weatherservice.get_condition(condition, 'icon-night-light')
         weather_data['current_conditions']['temperature'] =\
             weatherservice.change_temperature(temperature,
                                               self.units.temperature)
         weather_data['current_conditions']['pressure'] =\
             weatherservice.change_pressure(pressure, self.units.pressure)
         weather_data['current_conditions']['humidity'] = '%s %%' %\
             (humidity)
         weather_data['current_conditions']['dew_point'] =\
             weatherservice.get_dew_point(humidity,
                                          temperature,
                                          self.units.temperature)
         wind_direction = weatherservice.degToCompass2(direction)
         weather_data['current_conditions']['wind_condition'] =\
             weatherservice.get_wind_condition2(velocity,
                                                wind_direction[0],
                                                self.units.wind)
         weather_data['current_conditions']['wind_icon'] = wind_direction[2]
         #
         weather_data['current_conditions']['heat_index'] =\
             weatherservice.get_heat_index(temperature, humidity)
         weather_data['current_conditions']['windchill'] =\
             weatherservice.get_wind_chill(temperature, velocity)
         #
         weather_data['current_conditions']['feels_like'] =\
             weatherservice.get_feels_like(temperature,
                                           humidity,
                                           velocity,
                                           self.units.temperature)
         #
         weather_data['current_conditions']['visibility'] =\
             weatherservice.change_distance(visibility,
                                            self.units.visibility)
         weather_data['current_conditions']['solarradiation'] = None
         weather_data['current_conditions']['UV'] = None
         weather_data['current_conditions']['precip_1hr'] = None
         weather_data['current_conditions']['precip_today'] = None
         for i, forecast_condition in enumerate(data['item']['forecast']):
             if i < 7:
                 tlow = s2f(forecast_condition['low'])
                 thight = s2f(forecast_condition['high'])
                 weather_data['forecasts'][i]['low'] =\
                     change_temperature(tlow,
                                        self.units.temperature)
                 weather_data['forecasts'][i]['high'] =\
                     change_temperature(thight,
                                        self.units.temperature)
                 #
                 weather_data['forecasts'][i]['qpf_allday'] = None
                 weather_data['forecasts'][i]['qpf_day'] = None
                 weather_data['forecasts'][i]['qpf_night'] = None
                 weather_data['forecasts'][i]['snow_allday'] = None
                 weather_data['forecasts'][i]['snow_day'] = None
                 weather_data['forecasts'][i]['snow_night'] = None
                 weather_data['forecasts'][i]['maxwind'] = None
                 weather_data['forecasts'][i]['avewind'] = None
                 weather_data['forecasts'][i]['avehumidity'] = None
                 weather_data['forecasts'][i]['maxhumidity'] = None
                 weather_data['forecasts'][i]['minhumidity'] = None
                 #
                 condition = CODE[int(forecast_condition['code'])]
                 weather_data['forecasts'][i]['condition'] = condition
                 weather_data['forecasts'][i]['condition_text'] =\
                     weatherservice.get_condition(condition, 'text')
                 weather_data['forecasts'][i]['condition_image'] =\
                     weatherservice.get_condition(condition, 'image')
                 weather_data['forecasts'][i]['condition_icon'] =\
                     weatherservice.get_condition(condition, 'icon-light')
     except Exception as e:
         print('************ === ************')
         print('Try: %s' % (tries))
         print(e)
         print('************ === ************')
         if tries > 0:
             tries = tries - 1
             weather_data = self.get_weather(tries)
         print(e)
     return weather_data
	def get_weather(self):
		weather_data = self.get_default_values()
		print('-------------------------------------------------------')
		print('-------------------------------------------------------')
		print('WorldWeatherOnline Weather Service url:%s'%(URL%(self.latitude,self.longitude,self.key)))
		print('-------------------------------------------------------')
		print('-------------------------------------------------------')
		try:
			parsed_json = read_json_from_url(URL%(self.latitude,self.longitude,self.key))

			if parsed_json is None:
				return None
			if  'weather' not in parsed_json.keys() or 'main' not in parsed_json.keys() or 'wind' not in parsed_json.keys() or 'clouds' not in parsed_json.keys():
				return None
			number_condition = gvfco('weatherCode',parsed_json).lower()
			condition = get_condition(number_condition)
			#
			weather_data['current_conditions']['condition_text'] = weatherservice.get_condition_wwa(condition,'text')
			if weather_data['current_conditions']['isday']:
				weather_data['current_conditions']['condition_image'] = weatherservice.get_condition_wwa(condition,'image')
				weather_data['current_conditions']['condition_icon_dark'] = weatherservice.get_condition_wwa(condition,'icon-dark')
				weather_data['current_conditions']['condition_icon_light'] = weatherservice.get_condition_wwa(condition,'icon-light')
			else:
				weather_data['current_conditions']['condition_image'] = weatherservice.get_condition_wwa(condition,'image-night')
				weather_data['current_conditions']['condition_icon_dark'] = weatherservice.get_condition_wwa(condition,'icon-night-dark')
				weather_data['current_conditions']['condition_icon_light'] = weatherservice.get_condition_wwa(condition,'icon-night-light')
			temperature = weatherservice.s2f(gvfco('temp_F',parsed_json))
			weather_data['current_conditions']['temperature'] = weatherservice.change_temperature(temperature,self.units.temperature)
			pressure = weatherservice.s2f(gvfco('pressure',parsed_json))
			weather_data['current_conditions']['pressure'] = weatherservice.change_pressure(pressure,self.units.pressure)
			humidity = weatherservice.s2f(gvfco('humidity',parsed_json))
			weather_data['current_conditions']['humidity'] = '%s %%'%(int(humidity))
			weather_data['current_conditions']['dew_point'] = weatherservice.get_dew_point(humidity,temperature,self.units.temperature)
			wind_velocity = weatherservice.s2f(gvfco('windspeedMiles',parsed_json))
			wind_direction = weatherservice.degToCompass2(gvfco('winddirDegree',parsed_json))
			weather_data['current_conditions']['wind_condition'] = weatherservice.get_wind_condition2(wind_velocity,wind_direction[0],self.units.wind)
			weather_data['current_conditions']['wind_icon'] = wind_direction[2]
			#
			weather_data['current_conditions']['heat_index'] = weatherservice.get_heat_index(temperature,humidity)
			weather_data['current_conditions']['windchill'] = weatherservice.get_wind_chill(temperature,wind_velocity)
			#
			weather_data['current_conditions']['feels_like'] = weatherservice.get_feels_like(temperature,humidity,wind_velocity,self.units.temperature)
			#
			weather_data['current_conditions']['visibility'] = weatherservice.change_distance(gvfco('visibility',parsed_json),self.units.visibility)
			weather_data['current_conditions']['solarradiation'] = None
			weather_data['current_conditions']['UV'] = None
			weather_data['current_conditions']['precip_1hr'] = None
			weather_data['current_conditions']['precip_today'] = weatherservice.change_longitude(weatherservice.s2f(gvfco('precipMM',parsed_json))/25.4,self.units.rain)
			for i in range(0,5):
				t1 = weatherservice.s2f(gvff('tempMinF',i,parsed_json))
				t2 = weatherservice.s2f(gvff('tempMaxF',i,parsed_json))
				if t1<t2:
					tmin=str(t1)
					tmax=str(t2)
				else:
					tmin=str(t2)
					tmax=str(t1)
				weather_data['forecasts'][i]['low'] = weatherservice.change_temperature(tmin,self.units.temperature)
				weather_data['forecasts'][i]['high'] = weatherservice.change_temperature(tmax,self.units.temperature)
				#
				weather_data['forecasts'][i]['qpf_allday'] = weatherservice.change_longitude(weatherservice.s2f(gvff('precipMM',i,parsed_json))/25.4,self.units.rain)
				weather_data['forecasts'][i]['qpf_day'] = None
				weather_data['forecasts'][i]['qpf_night'] = None
				weather_data['forecasts'][i]['snow_allday'] = None
				weather_data['forecasts'][i]['snow_day'] = None
				weather_data['forecasts'][i]['snow_night'] = None
				weather_data['forecasts'][i]['maxwind'] = None
				winddir = gvff('winddirDegree',i,parsed_json)
				winsped = gvff('windspeedMiles',i,parsed_json)
				wind_direction = weatherservice.degToCompass2(winddir)
				weather_data['forecasts'][i]['avewind'] = weatherservice.get_wind_condition2(winsped,wind_direction[0],self.units.wind)
				weather_data['forecasts'][i]['wind_icon'] = wind_direction[2]
				weather_data['forecasts'][i]['avehumidity'] = None
				weather_data['forecasts'][i]['maxhumidity'] = None
				weather_data['forecasts'][i]['minhumidity'] = None
				#
				number_condition = gvff('weatherCode',i,parsed_json).lower()
				condition = get_condition(number_condition)
				weather_data['forecasts'][i]['condition'] = condition
				weather_data['forecasts'][i]['condition_text'] = weatherservice.get_condition_wwa(condition,'text')
				weather_data['forecasts'][i]['condition_image'] = weatherservice.get_condition_wwa(condition,'image')
				weather_data['forecasts'][i]['condition_icon'] = weatherservice.get_condition_wwa(condition,'icon-light')
			weather_data['forecast_information']['city'] = None
			weather_data['forecast_information']['postal_code'] = None
			weather_data['forecast_information']['latitude_e6'] = None
			weather_data['forecast_information']['longitude_e6'] = None
		except Exception as e:
			print(e)
		return weather_data
예제 #8
0
    def get_weather(self):
        weather_data = self.get_default_values()
        if self.woeid is None:
            self.woeid = geocodeapi.get_woeid(self.latitude, self.longitude)
            if self.woeid is None:
                print('wyahooapi.py: Yahoo Weather Service, not found woeid')
                return weather_data
        try:
            ans = self.run_query()
            if ans is None:
                print('wyahooapi.py: Yahoo Weather Service, query answer is None')
                return weather_data
            if 'query' not in list(ans.keys()):
                print('wyahooapi.py: Yahoo Weather Service, query answer has no element query')
                return weather_data
            if 'results' not in list(ans['query'].keys()):
                print('wyahooapi.py: Yahoo Weather Service, query answer has no element query.results')
                return weather_data
            if ans['query']['results'] is None:
                print('wyahooapi.py: Yahoo Weather Service, query answer query.results is None')
                return weather_data
            if 'channel' not in list(ans['query']['results'].keys()):
                print('wyahooapi.py: Yahoo Weather Service, query answer has no element query.results.channel')
                return weather_data

            weather_data['update_time'] = time.time()
            weather_data['ok'] = True
            data = ans['query']['results']['channel']
            temperature = cf.f2c_print(data['item']['condition']['temp'])
            velocity = cf.f2c_print(data['wind']['speed'])
            direction = cf.f2c_print(data['wind']['direction'])
            pressure = cf.f2c_print(data['atmosphere']['pressure'])
            visibility = cf.f2c_print(data['atmosphere']['visibility'])
            humidity = cf.f2c_print(data['atmosphere']['humidity'])
            condition = CODE[int(data['item']['condition']['code'])]
            weather_data['current_conditions']['condition'] = condition
            weather_data['current_conditions']['condition_text'] =\
                weatherservice.get_condition(condition, 'text')
            if weather_data['current_conditions']['isday']:
                weather_data['current_conditions']['condition_image'] =\
                    weatherservice.get_condition(condition, 'image')
                weather_data['current_conditions']['condition_icon_dark'] =\
                    weatherservice.get_condition(condition, 'icon-dark')
                weather_data['current_conditions']['condition_icon_light'] =\
                    weatherservice.get_condition(condition, 'icon-light')
            else:
                weather_data['current_conditions']['condition_image'] =\
                    weatherservice.get_condition(condition, 'image-night')
                weather_data['current_conditions']['condition_icon_dark'] =\
                    weatherservice.get_condition(condition, 'icon-night-dark')
                weather_data['current_conditions']['condition_icon_light'] =\
                    weatherservice.get_condition(condition, 'icon-night-light')
            weather_data['current_conditions']['temperature'] =\
                cf.change_temperature(temperature, self.units.temperature)
            weather_data['current_conditions']['pressure'] =\
                weatherservice.change_pressure(pressure, self.units.pressure)
            weather_data['current_conditions']['humidity'] = '%s %%' %\
                (humidity)
            weather_data['current_conditions']['dew_point'] =\
                weatherservice.get_dew_point(humidity,
                                             temperature,
                                             self.units.temperature)
            wind_direction = weatherservice.degToCompass2(direction)
            weather_data['current_conditions']['wind_condition'] =\
                weatherservice.get_wind_condition2(velocity,
                                                   wind_direction[0],
                                                   self.units.wind)
            weather_data['current_conditions']['wind_icon'] = wind_direction[2]
            #
            weather_data['current_conditions']['heat_index'] =\
                weatherservice.get_heat_index(temperature, humidity)
            weather_data['current_conditions']['windchill'] =\
                weatherservice.get_wind_chill(temperature, velocity)
            #
            weather_data['current_conditions']['feels_like'] =\
                weatherservice.get_feels_like(temperature,
                                              humidity,
                                              velocity,
                                              self.units.temperature)
            #
            weather_data['current_conditions']['visibility'] =\
                weatherservice.change_distance(visibility,
                                               self.units.visibility)
            weather_data['current_conditions']['solarradiation'] = None
            weather_data['current_conditions']['UV'] = None
            weather_data['current_conditions']['precip_1hr'] = None
            weather_data['current_conditions']['precip_today'] = None
            for i, forecast_condition in enumerate(data['item']['forecast']):
                if i < 7:
                    tlow = cf.f2c_print(forecast_condition['low'])
                    thight = cf.f2c_print(forecast_condition['high'])
                    weather_data['forecasts'][i]['low'] =\
                        cf.change_temperature(tlow, self.units.temperature)
                    weather_data['forecasts'][i]['high'] =\
                        cf.change_temperature(thight, self.units.temperature)
                    #
                    weather_data['forecasts'][i]['qpf_allday'] = None
                    weather_data['forecasts'][i]['qpf_day'] = None
                    weather_data['forecasts'][i]['qpf_night'] = None
                    weather_data['forecasts'][i]['snow_allday'] = None
                    weather_data['forecasts'][i]['snow_day'] = None
                    weather_data['forecasts'][i]['snow_night'] = None
                    weather_data['forecasts'][i]['maxwind'] = None
                    weather_data['forecasts'][i]['avewind'] = None
                    weather_data['forecasts'][i]['avehumidity'] = None
                    weather_data['forecasts'][i]['maxhumidity'] = None
                    weather_data['forecasts'][i]['minhumidity'] = None
                    #
                    condition = CODE[int(forecast_condition['code'])]
                    weather_data['forecasts'][i]['condition'] = condition
                    weather_data['forecasts'][i]['condition_text'] =\
                        weatherservice.get_condition(condition, 'text')
                    weather_data['forecasts'][i]['condition_image'] =\
                        weatherservice.get_condition(condition, 'image')
                    weather_data['forecasts'][i]['condition_icon'] =\
                        weatherservice.get_condition(condition, 'icon-light')
        except Exception as e:
            print('wyahooapi.py: error:', str(e))
        return weather_data
예제 #9
0
 def get_weather(self, tries=3):
     weather_data = self.get_default_values()
     if self.woeid is None:
         self.woeid = geocodeapi.get_woeid(self.latitude, self.longitude)
         if self.woeid is None:
             print('Yahoo Weather Service, not found woeid')
             return weather_data
     try:
         ans = self.run_query()
         if ans is None or\
                 'query' not in ans.keys() or\
                 'results' not in ans['query'].keys() or\
                 'channel' not in ans['query']['results'].keys():
             if tries > 0:
                 tries = tries - 1
                 print('************ === ************')
                 print('Try: %s' % (tries))
                 print('************ === ************')
                 weather_data = self.get_weather(tries)
             return weather_data
         data = ans['query']['results']['channel']
         temperature = s2f(data['item']['condition']['temp'])
         velocity = s2f(data['wind']['speed'])
         direction = s2f(data['wind']['direction'])
         pressure = s2f(data['atmosphere']['pressure'])
         visibility = s2f(data['atmosphere']['visibility'])
         humidity = s2f(data['atmosphere']['humidity'])
         condition = CODE[int(data['item']['condition']['code'])]
         weather_data['current_conditions']['condition'] = condition
         weather_data['current_conditions']['condition_text'] =\
             weatherservice.get_condition(condition, 'text')
         if weather_data['current_conditions']['isday']:
             weather_data['current_conditions']['condition_image'] =\
                 weatherservice.get_condition(condition, 'image')
             weather_data['current_conditions']['condition_icon_dark'] =\
                 weatherservice.get_condition(condition, 'icon-dark')
             weather_data['current_conditions']['condition_icon_light'] =\
                 weatherservice.get_condition(condition, 'icon-light')
         else:
             weather_data['current_conditions']['condition_image'] =\
                 weatherservice.get_condition(condition, 'image-night')
             weather_data['current_conditions']['condition_icon_dark'] =\
                 weatherservice.get_condition(condition, 'icon-night-dark')
             weather_data['current_conditions']['condition_icon_light'] =\
                 weatherservice.get_condition(condition, 'icon-night-light')
         weather_data['current_conditions']['temperature'] =\
             weatherservice.change_temperature(temperature,
                                               self.units.temperature)
         weather_data['current_conditions']['pressure'] =\
             weatherservice.change_pressure(pressure, self.units.pressure)
         weather_data['current_conditions']['humidity'] = '%s %%' %\
             (humidity)
         weather_data['current_conditions']['dew_point'] =\
             weatherservice.get_dew_point(humidity,
                                          temperature,
                                          self.units.temperature)
         wind_direction = weatherservice.degToCompass2(direction)
         weather_data['current_conditions']['wind_condition'] =\
             weatherservice.get_wind_condition2(velocity,
                                                wind_direction[0],
                                                self.units.wind)
         weather_data['current_conditions']['wind_icon'] = wind_direction[2]
         #
         weather_data['current_conditions']['heat_index'] =\
             weatherservice.get_heat_index(temperature, humidity)
         weather_data['current_conditions']['windchill'] =\
             weatherservice.get_wind_chill(temperature, velocity)
         #
         weather_data['current_conditions']['feels_like'] =\
             weatherservice.get_feels_like(temperature,
                                           humidity,
                                           velocity,
                                           self.units.temperature)
         #
         weather_data['current_conditions']['visibility'] =\
             weatherservice.change_distance(visibility,
                                            self.units.visibility)
         weather_data['current_conditions']['solarradiation'] = None
         weather_data['current_conditions']['UV'] = None
         weather_data['current_conditions']['precip_1hr'] = None
         weather_data['current_conditions']['precip_today'] = None
         for i, forecast_condition in enumerate(data['item']['forecast']):
             if i < 7:
                 tlow = s2f(forecast_condition['low'])
                 thight = s2f(forecast_condition['high'])
                 weather_data['forecasts'][i]['low'] =\
                     change_temperature(tlow,
                                        self.units.temperature)
                 weather_data['forecasts'][i]['high'] =\
                     change_temperature(thight,
                                        self.units.temperature)
                 #
                 weather_data['forecasts'][i]['qpf_allday'] = None
                 weather_data['forecasts'][i]['qpf_day'] = None
                 weather_data['forecasts'][i]['qpf_night'] = None
                 weather_data['forecasts'][i]['snow_allday'] = None
                 weather_data['forecasts'][i]['snow_day'] = None
                 weather_data['forecasts'][i]['snow_night'] = None
                 weather_data['forecasts'][i]['maxwind'] = None
                 weather_data['forecasts'][i]['avewind'] = None
                 weather_data['forecasts'][i]['avehumidity'] = None
                 weather_data['forecasts'][i]['maxhumidity'] = None
                 weather_data['forecasts'][i]['minhumidity'] = None
                 #
                 condition = CODE[int(forecast_condition['code'])]
                 weather_data['forecasts'][i]['condition'] = condition
                 weather_data['forecasts'][i]['condition_text'] =\
                     weatherservice.get_condition(condition, 'text')
                 weather_data['forecasts'][i]['condition_image'] =\
                     weatherservice.get_condition(condition, 'image')
                 weather_data['forecasts'][i]['condition_icon'] =\
                     weatherservice.get_condition(condition, 'icon-light')
     except Exception as e:
         print('************ === ************')
         print('Try: %s' % (tries))
         print(e)
         print('************ === ************')
         if tries > 0:
             tries = tries - 1
             weather_data = self.get_weather(tries)
         print(e)
     return weather_data