diff --git a/weboob/backends/yahoo/backend.py b/weboob/backends/yahoo/backend.py index 0a0befaa..50e5d432 100644 --- a/weboob/backends/yahoo/backend.py +++ b/weboob/backends/yahoo/backend.py @@ -22,8 +22,9 @@ from xml.dom import minidom # TODO store datetime objects instead of strings # from datetime import datetime -from weboob.capabilities.weather import ICapWeather, CityNotFound, Current, Forecast +from weboob.capabilities.weather import ICapWeather, CityNotFound, Current, Forecast, City from weboob.tools.backend import BaseBackend +from weboob.tools.browser import BaseBrowser __all__ = ['YahooBackend'] @@ -36,10 +37,51 @@ class YahooBackend(BaseBackend, ICapWeather): VERSION = '0.5' DESCRIPTION = 'Yahoo' LICENSE = 'GPLv3' + BROWSER = BaseBrowser WEATHER_URL = 'http://weather.yahooapis.com/forecastrss?w=%s&u=%s' + SEARCH_URL = 'http://fr.meteo.yahoo.com/search/weather?p=%s' + + def create_default_browser(self): + return self.create_browser() def iter_city_search(self, pattern): - raise NotImplementedError() + # minidom doesn't seem to work with that page + + #handler = urllib2.urlopen((self.SEARCH_URL % pattern).replace(' ','+')) + #dom = minidom.parse(handler) + #handler.close() + #results = dom.getElementById('search-results') + #for no in results.childNodes: + # print no.nodeValue + + # so i use a basic but efficient parsing + with self.browser: + content = self.browser.readurl((self.SEARCH_URL % pattern).replace(' ','+')) + + page='' + for line in content.split('\n'): + if "