def __parse_fc_data(fc_data): """Parse the forecast data from the xml section.""" from buienradar.buienradar import condition_from_code fc = [] for daycnt in range(1, 6): daysection = __BRDAYFC % daycnt if daysection in fc_data: tmpsect = fc_data[daysection] fcdatetime = datetime.now(pytz.timezone(__TIMEZONE)) fcdatetime = fcdatetime.replace(hour=12, minute=0, second=0, microsecond=0) # add daycnt days fcdatetime = fcdatetime + timedelta(days=daycnt) code = tmpsect.get(__BRICOON, []).get(__BRID) fcdata = { CONDITION: condition_from_code(code), TEMPERATURE: __get_float(tmpsect, __BRMAXTEMP), MIN_TEMP: __get_float(tmpsect, __BRMINTEMP), MAX_TEMP: __get_float(tmpsect, __BRMAXTEMP), SUN_CHANCE: __get_int(tmpsect, __BRKANSZON), RAIN_CHANCE: __get_int(tmpsect, __BRKANSREGEN), RAIN: __get_float(tmpsect, __BRMAXMMREGEN), SNOW: __get_float(tmpsect, __BRSNEEUWCMS), WINDFORCE: __get_int(tmpsect, __BRWINDKRACHT), DATETIME: fcdatetime, } fcdata[CONDITION][IMAGE] = tmpsect.get(__BRICOON, []).get(__BRTEXT) fc.append(fcdata) return fc
def __parse_loc_data(loc_data, result): """Parse the xml data from selected weatherstation.""" result[DATA] = { ATTRIBUTION: ATTRIBUTION_INFO, FORECAST: [], PRECIPITATION_FORECAST: None } for key, [value, func] in SENSOR_TYPES.items(): result[DATA][key] = None try: from buienradar.buienradar import condition_from_code sens_data = loc_data[value] if key == CONDITION: # update weather symbol & status text code = sens_data[__BRID][:1] result[DATA][CONDITION] = condition_from_code(code) result[DATA][CONDITION][IMAGE] = sens_data[__BRTEXT] else: if key == STATIONNAME: name = sens_data[__BRTEXT].replace("Meetstation", "") name = name.strip() name += " (%s)" % loc_data[__BRSTATIONCODE] result[DATA][key] = name else: # update all other data if func is not None: result[DATA][key] = func(sens_data) else: result[DATA][key] = sens_data except KeyError: if result[MESSAGE] is None: result[MESSAGE] = "Missing key(s) in br data: " result[MESSAGE] += "%s " % value log.warning( "Data element with key='%s' " "not loaded from br data!", key) result[SUCCESS] = True return result