add housing photos

This commit is contained in:
Romain Bignon 2012-02-11 19:06:39 +01:00
commit 0c522d948a
4 changed files with 41 additions and 5 deletions

View file

@ -68,7 +68,13 @@ class SeLogerBackend(BaseBackend, ICapHousing):
def fill_housing(self, housing, fields):
with self.browser:
return self.browser.get_housing(housing.id)
if fields != ['photos'] or not housing.photos:
housing = self.browser.get_housing(housing.id)
if 'photos' in fields:
for photo in housing.photos:
if not photo.data:
photo.data = self.browser.readurl(photo.url)
return housing
OBJECTS = {Housing: fill_housing,
}

View file

@ -20,9 +20,10 @@
import json
from weboob.capabilities.base import NotAvailable
from weboob.tools.browser import BaseBrowser
from .pages import SearchResultsPage, HousingPage
from .pages import SearchResultsPage, HousingPage, HousingPhotosPage
__all__ = ['SeLogerBrowser']
@ -36,6 +37,7 @@ class SeLogerBrowser(BaseBrowser):
'http://www.seloger.com/(pre)?recherche.htm.*': SearchResultsPage,
'http://www.seloger.com/annonces.htm.*': SearchResultsPage,
'http://www.seloger.com/annonces/.*': HousingPage,
'http://www.seloger.com/\d+/incl_detail_annonce_load_diapo_new.htm': HousingPhotosPage,
}
def search_geo(self, pattern):
@ -62,4 +64,9 @@ class SeLogerBrowser(BaseBrowser):
self.location('/%d/detail_new.htm' % int(id))
assert self.is_on_page(HousingPage)
return self.page.get_housing(obj)
housing = self.page.get_housing(obj)
self.location('/%d/incl_detail_annonce_load_diapo_new.htm' % int(id))
housing.photos = list(self.page.iter_photos()) or NotAvailable
return housing

View file

@ -23,10 +23,10 @@ from datetime import date
from weboob.tools.browser import BasePage, BrokenPageError
from weboob.capabilities.base import NotAvailable
from weboob.capabilities.housing import Housing
from weboob.capabilities.housing import Housing, HousingPhoto
__all__ = ['SearchResultsPage', 'HousingPage']
__all__ = ['SearchResultsPage', 'HousingPage', 'HousingPhotosPage']
def sanitarize_cost(t):
@ -98,3 +98,10 @@ class HousingPage(BasePage):
housing.location = NotAvailable
return housing
class HousingPhotosPage(BasePage):
def iter_photos(self):
for i, li in enumerate(self.document.getroot().xpath('//li')):
photo = HousingPhoto(i)
photo.url = li.attrib['rel'].split('|')[0]
yield photo