From 9d2b12c53179df8015f1bafe87fd3cf2c482cf82 Mon Sep 17 00:00:00 2001 From: Alexandre Morignot Date: Tue, 9 Dec 2014 17:08:23 +0100 Subject: [PATCH] [leboncoin] add regions support --- modules/leboncoin/browser.py | 13 +++++++++---- modules/leboncoin/module.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/modules/leboncoin/browser.py b/modules/leboncoin/browser.py index b63ead10..67013672 100644 --- a/modules/leboncoin/browser.py +++ b/modules/leboncoin/browser.py @@ -25,8 +25,8 @@ from .pages import CityListPage, HousingListPage, HousingPage class LeboncoinBrowser(PagesBrowser): BASEURL = 'http://www.leboncoin.fr' city = URL('ajax/location_list.html\?city=(?P.*)&zipcode=(?P.*)', CityListPage) - search = URL('(?P.*)/offres/ile_de_france/occasions/\?ps=(?P.*)&pe=(?P.*)&ros=(?P.*)&location=(?P.*)&sqs=(?P.*)&sqe=(?P.*)&ret=(?P.*)&f=(?P.*)', - '(?P<_type>.*)/offres/ile_de_france/occasions.*?', + search = URL('(?P.*)/offres/(?P.*)/occasions/\?ps=(?P.*)&pe=(?P.*)&ros=(?P.*)&location=(?P.*)&sqs=(?P.*)&sqe=(?P.*)&ret=(?P.*)&f=(?P.*)', + '(?P<_type>.*)/offres/(?P<_region>.*)/occasions.*?', HousingListPage) housing = URL('ventes_immobilieres/(?P<_id>.*).htm', HousingPage) @@ -36,6 +36,10 @@ class LeboncoinBrowser(PagesBrowser): Query.HOUSE_TYPES.PARKING: '4', Query.HOUSE_TYPES.OTHER: '5'} + def __init__(self, region, *args, **kwargs): + super(LeboncoinBrowser, self).__init__(*args, **kwargs) + self.region = region + def get_cities(self, pattern): city = '' zip_code = '' @@ -48,7 +52,8 @@ class LeboncoinBrowser(PagesBrowser): def search_housings(self, query, advert_type): type, cities, nb_rooms, area_min, area_max, cost_min, cost_max, ret = self.decode_query(query) - return self.search.go(location=cities, + return self.search.go(region=self.region, + location=cities, ros=nb_rooms, sqs=area_min, sqe=area_max, @@ -81,7 +86,7 @@ class LeboncoinBrowser(PagesBrowser): if query.type == Query.TYPE_RENT: _type = 'locations' - self.search.go(_type=_type) + self.search.go(_type=_type, _region=self.region) nb_rooms = '' if not query.nb_rooms else self.page.get_rooms_min(query.nb_rooms) area_min = '' if not query.area_min else self.page.get_area_min(query.area_min) diff --git a/modules/leboncoin/module.py b/modules/leboncoin/module.py index e172fb6a..47369469 100644 --- a/modules/leboncoin/module.py +++ b/modules/leboncoin/module.py @@ -38,7 +38,39 @@ class LeboncoinModule(Module, CapHousing): BROWSER = LeboncoinBrowser CONFIG = BackendConfig(Value('advert_type', label='Advert type', - choices={'c': 'Agency', 'p': 'Owner', 'a': 'All'}, default='a')) + choices={'c': 'Agency', 'p': 'Owner', 'a': 'All'}, default='a'), + Value('region', label='Region', + choices=['alsace', + 'aquitaine', + 'auvergne', + 'basse_normandie', + 'bourgogne', + 'bretagne', + 'centre', + 'champagne_ardenne', + 'corse', + 'franche_comte', + 'haute_normandie', + 'ile_de_france', + 'languedoc_roussillon', + 'limousin', + 'lorraine', + 'midi_pyrenees', + 'nord_pas_de_calais', + 'pays_de_la_loire', + 'picardie', + 'poitou_chanrentes', + 'provence_alpes_cote_d_azur', + 'rhone_alpes', + 'guadeloupe', + 'martinique', + 'guyane', + 'reunion'])) + + + def create_default_browser(self): + region = self.config['region'].get() + return self.create_browser(region) def get_housing(self, _id): return self.browser.get_housing(_id)