sr0wx/lib/imgw-prognoza.py

98 wiersze
3.4 KiB
Python
Executable File

#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
#
# Copyright 2009-2011 Michal Sadowski (sq6jnx at hamradio dot pl)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import urllib
import re
import datetime
class imgw_prognoza:
poczatek = """:00"""
koniec = """Noc"""
def downloadFile(self, url):
webFile = urllib.urlopen(url)
return webFile.read()
# Sa dwa sposoby na okreslenie zachmurzenia i zjawisk. Pierwszy to sprawdzenie
# po numerkach obrazka, drugi to przeparsowanie slownego komentarza.
#
# Krzyżykami oznaczam co zgadłem:
zachmurzenie = {
0: "bezchmurnie",
1: "pogodnie",
2: "slabe zachmurzenie", #
3: "pogodnie, okresami wzrost zachmurzenia do umiarkowanego",
4: "zachmurzenie umiarkowane", #
5: "pochmurno", #
6: "Pochmurno, okresami przejaśnienia",
7: "niemal całkowite zachmurzenie", #
8: "zachmurzenie calkowite" }
zjawiska ={
00: "brak zjawisk", #
60: "slabe opady deszczu",
61: "deszcz", #
68: "deszcz ze śniegiem",#
70: "slabe opady sniegu",
90: "burze" } #
prognozy = {}
prognoza = {}
def __init__(self, url, datetime=None):
file = self.downloadFile(url).split("\r\n")
_data = re.compile("\((\d{1,2})\.(\d{1,2})\.(\d\d\d\d)\)")
for i in range(0,len(file)):
if len(_data.findall(file[i]))>0:
data = _data.findall(file[i])
self.prognozy["-".join((data[0]))]={}
elif ":00" in file[i]:
godzina = int("".join(file[i].split(">")).split("<")[2].split("\"")[2].split(":")[0])
zachm = "".join(file[i+1].split(">")).split("<")[2].split("\"")[1]
temp = "".join(file[i+2].split(">")).split("<")[2].split("\"")[2]
tempOdcz = "".join(file[i+2].split(">")).split("<")[4].split("(")[1].split(")")[0]
cisn = "".join(file[i+2].split(">")).split("<")[7].split("\"")[8].split(" hPa")[0]
silaWiatru = "".join(file[i+3].split(">")).split("<")[1].split("\"")[8].split(" m/s")[0]
kierWiatru = "".join(file[i+3].split(">")).split("<")[2].split("\"")[1]
kierWiatruSl = "".join(file[i+3].split(">")).split("<")[2].split("\"")[3].replace("-"," ")
koment = "".join(file[i+4].split(">")).split("<")[1].split("\"")[8]
self.prognozy["-".join((data[0]))][godzina]={'zachm':zachm, 'temp':float(temp), 'tempOdcz':float(tempOdcz), 'cisn':int(cisn), 'silaWiatru':float(silaWiatru), 'kierWiatru':kierWiatru, 'kierWiatruSl':kierWiatruSl, 'koment':koment}
self.przygotujPrognoze()
def przygotujPrognoze(self,datetime):
deltaT=31*24*60 # 1 month in minutes
url = """http://www.pogodynka.pl/miasto.php?miasto=Wroc%B3aw&gmina=Wroc%B3aw&powiat=Wroc%B3aw&wojewodztwo=dolno%B6l%B1skie&czas=&model="""
imgw = imgw_prognoza(url, "44")