Remove parse function

This commit is contained in:
Florent 2014-03-20 10:23:08 +01:00
commit dc7a83cba0
3 changed files with 22 additions and 20 deletions

View file

@ -28,8 +28,7 @@ __all__ = ['DresdenWetterBrowser']
class DresdenWetterBrowser(PagesBrowser): class DresdenWetterBrowser(PagesBrowser):
BASEURL = 'http://www.dresden-wetter.de' BASEURL = 'http://www.dresden-wetter.de'
home = URL('/Current_Vantage_Pro.htm', StartPage) home = URL('/Current_Vantage_Pro.htm', StartPage)
def get_sensors_list(self): def get_sensors_list(self):
return self.home.stay_or_go().get_sensors_list() return self.home.stay_or_go().get_sensors_list()

View file

@ -18,7 +18,7 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
from weboob.tools.browser2.page import HTMLPage, method, ListElement, ItemElement from weboob.tools.browser2.page import HTMLPage, method, ListElement, ItemElement
from weboob.tools.browser2.filters import CleanText, Env, Regexp, Field from weboob.tools.browser2.filters import CleanText, Regexp, Field, Filter
from weboob.capabilities.gauge import GaugeMeasure, GaugeSensor from weboob.capabilities.gauge import GaugeMeasure, GaugeSensor
from weboob.capabilities.base import NotAvailable from weboob.capabilities.base import NotAvailable
@ -26,6 +26,23 @@ from weboob.capabilities.base import NotAvailable
__all__ = ['StartPage'] __all__ = ['StartPage']
class Split(Filter):
def __init__(self, selector, mode):
super(Split, self).__init__(selector)
self.mode = mode
def filter(self, txt):
if u"Temperatur" in txt:
value = txt.split(': ')[1].split(u'°')[0]
unit = u'°C'
else:
value = txt.split(':')[-1].split()[0]
unit = txt.split(':')[-1].split()[1]
if unit == u"W/m":
unit = u"W/m²"
return [value, unit][self.mode]
class StartPage(HTMLPage): class StartPage(HTMLPage):
@method @method
@ -39,24 +56,10 @@ class StartPage(HTMLPage):
obj_id = CleanText(Regexp(Field('name'), '(.*)', "dd-\\1"), " .():") obj_id = CleanText(Regexp(Field('name'), '(.*)', "dd-\\1"), " .():")
obj_gaugeid = u"wetter" obj_gaugeid = u"wetter"
obj_forecast = NotAvailable obj_forecast = NotAvailable
obj_unit = Split(CleanText('.'), 1)
def split_unit(self, text):
if u"Temperatur" in text:
value = text.split(': ')[1].split(u'°')[0]
unit = u'°C'
else:
value = text.split(':')[-1].split()[0]
unit = text.split(':')[-1].split(None, 1)[1]
return [value, unit]
def obj_lastvalue(self): def obj_lastvalue(self):
lastvalue = GaugeMeasure() lastvalue = GaugeMeasure()
lastvalue.level = float(Env('parse')(self)[0]) lastvalue.level = float(Split(CleanText('.'), 0)(self))
lastvalue.alarm = NotAvailable lastvalue.alarm = NotAvailable
return lastvalue return lastvalue
def obj_unit(self):
return Env('parse')(self)[1]
def parse(self, el):
self.env['parse'] = self.split_unit(CleanText(el)(self))

View file

@ -58,4 +58,4 @@ class DresdenWetterTest(BackendTest):
Test the last sensor return by module" Test the last sensor return by module"
""" """
sensor = list(self.backend.iter_sensors("wetter", "Globalstrahlung")) sensor = list(self.backend.iter_sensors("wetter", "Globalstrahlung"))
assert sensor[0].unit == u"W/m 2" assert sensor[0].unit == u"W/m²"