def readWeather(fcast): rv = "" if config.podajTemp: rv = " ".join( (rv, "temperatura", pl.cardinal(fcast["temp"], pl.C)) ) if config.podajTempOdcz: rv = " ".join( (rv, "temperatura_odczuwalna ", pl.cardinal(fcast["tempOdcz"], pl.C)) ) if config.podajZjawiska: rv = " ".join( (rv, fcast["zjawiska"]) ) if config.podajCisnHpa: rv = " ".join( (rv, "cisnienie", pl.cardinal(fcast["cisn"], pl.hPa)) ) if config.podajSileWiatru: rv = " ".join( (rv, "predkosc_wiatru", pl.cardinal(fcast["silaWiatru"], pl.mPs)) ) if config.podajKierWiatru: rv = " ".join( (rv, "kierunek_wiatru", fcast["kierWiatru"]) ) return rv + " zrodlo imgw"
def getData(l): data = {"data":"", "needCTCSS":True, "allOK":True} # Pobieranie danych o wodowskazach debug.log("IMGW-HYDRO", "downloading data...") command = 'links -dump http://pogodynka.pl/hydrobiuletyn.php > /tmp/imgw-hydro.tmp' if os.system(command) != 0: debug.log("IMGW-HYDRO", "Couldn't download data!", 6) return {"data":"", "needCTCSS":False, "allOK":False} hydroFile = open('/tmp/imgw-hydro.tmp') hydrobiuletyn = hydroFile.readlines() hydroFile.close() dane = [] dostepneWodowskazy = [] # odczyt danych z pliku (parsowanie) debug.log("IMGW-HYDRO", "parsing...") for line in hydrobiuletyn: if "|" in line: columns = line.split("|") if "Zbiornik" in columns[1]: break elif len(columns[2].strip())>0 and "-+-" not in columns[1]: if len(columns[1].strip())>0: dane.append( { \ "rzeka" : columns[1].strip(), \ "wodowskaz" : columns[2].strip(), \ "stanAlarmowy": columns[4].strip(), \ "stanWody" : columns[6].strip(), \ "dobowaZmiana": columns[7].strip() \ }) else: dane[-1]["wodowskaz"]+=" " + columns[2].strip() # czyszczenie nazw wodowskazów (z pliku i z konfiguracji) = ustawianie jednolitego formatu for i in range(0, len(dane)): dane[i]["rzeka"] = format(dane[i]["rzeka"]) dane[i]["wodowskaz"]= format(dane[i]["wodowskaz"]) dostepneWodowskazy.append(dane[i]["wodowskaz"]) # czy pojawiły się jakieś nowe wodowskazy? Jeśli tak to informacja idzie na debug try: # if os.path.isfile('/tmp/wodowskazy.tmp'): wodowskazyFile = open('/tmp/wodowskazy.tmp') zapisaneWodowskazy = wodowskazyFile.readlines()[0].split() noweWodowskazy = set(dostepneWodowskazy) - set(zapisaneWodowskazy) if len(noweWodowskazy) > 0: debug.log('IMGW-HYDRO', 'nowe wodowskazy: '+" ".join( (noweWodowskazy) ),1) except: debug.log('IMGW-HYDRO', 'Nie można było porównać listy wodowskazów. Było to albo wynikiem wcześniejszych błędów albo świeżej instalacji.',1) finally: # lista dostepnych wodowskazów ląduje w pliku wodowskazyFile = open('/tmp/wodowskazy.tmp', 'w') wodowskazyFile.write(" ".join( (dostepneWodowskazy) )) wodowskazyFile.close() # jeśli w konfigu podano jakiś nieistniejący w danych wodowskaz info o tym ląduje w logu i wyświetlana jest lista poprawnych nazw wodowskazów if not set(config.wodowskazy).issubset(dostepneWodowskazy): debug.log("IMGW-HYDRO", "brak danych dla wodowskazów %s"%( set(config.wodowskazy)-set(dostepneWodowskazy) ),3) debug.log("IMGW-HYDRO", "dostępne wodowskazy: %s"%(" ".join( (dostepneWodowskazy) )), 1) # przy pierwszym ostrzeżeniu wyswietlany jest nagłówek # pierwszeOstrzezenie = True rzeki = {} for wodowskaz in config.wodowskazy: for linia in dane: if wodowskaz in linia["wodowskaz"] and 'brak' not in linia.values(): if int(linia["stanWody"]) >= int(linia["stanAlarmowy"]): if not rzeki.has_key(linia["rzeka"]): rzeki[linia["rzeka"]]="" rzeki[linia["rzeka"]] += " wodowskaz %s"%(linia["wodowskaz"]) if config.podajStan and len(linia["stanWody"])>0: rzeki[linia["rzeka"]] += " " + lang.removeDiacritics(lang.cardinal(int(linia["stanWody"]))) if config.podajTendencje and len(linia["dobowaZmiana"])>0: if int(linia["dobowaZmiana"])<0: rzeki[linia["rzeka"]] += " tendencja_spadkowa " elif int(linia["dobowaZmiana"])>0: rzeki[linia["rzeka"]] += " tendencja_wzrostowa " # niewinny trick: jeśli było pierwsze ostrzezenie, to znaczy ze byly ostrzezenia i nalezy pod danymi podpisac IMGW # if rzeki != {}: # data["data"] = "komunikat_hydrologiczny imgw przekroczenia_stanow_alarmowych " # for rzeka in rzeki.keys(): # data["data"]+='rzeka ' + rzeka + rzeki[rzeka] debug.log("IMGW-HYDRO", "finished...") return data