From cccff49ea6de4b6c9117d9466a9668c0279be4e0 Mon Sep 17 00:00:00 2001 From: Gautier P Date: Sun, 10 Jan 2021 11:15:31 +0100 Subject: [PATCH] [logicimmo] Fix housing detection --- modules/logicimmo/pages.py | 18 ++++++++++++------ .../tools/capabilities/housing/housing_test.py | 6 +++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/modules/logicimmo/pages.py b/modules/logicimmo/pages.py index 869a7a9fb6..df84e9a95c 100644 --- a/modules/logicimmo/pages.py +++ b/modules/logicimmo/pages.py @@ -90,7 +90,7 @@ def obj_type(self): obj_advert_type = ADVERT_TYPES.PROFESSIONAL def obj_house_type(self): - house_type = CleanText('.//div[has-class("offer-type")]')(self).lower() + house_type = CleanText('.//h2[@class="offerMainFeatures"]/div')(self).lower() if house_type == "appartement": return HOUSE_TYPES.APART elif house_type == "maison": @@ -104,10 +104,16 @@ def obj_house_type(self): obj_title = CleanText(CleanHTML('//meta[@itemprop="name"]/@content')) obj_area = CleanDecimal(Regexp(CleanText(CleanHTML('//meta[@itemprop="name"]/@content')), - '(.*?)(\d*) m\xb2(.*?)', '\\2', default=NotAvailable), + '(.*?)(\d*)m\xb2(.*?)', '\\2', default=NotAvailable), default=NotAvailable) - obj_rooms = CleanDecimal('//div[has-class("offer-info")]//span[has-class("offer-rooms-number")]', - default=NotAvailable) + obj_rooms = CleanDecimal( + Regexp( + CleanText('.//h2[@class="offerMainFeatures"]'), + '(\d) pièce', + default=NotAvailable + ), + default=NotAvailable + ) obj_cost = CleanDecimal('//*[@itemprop="price"]', default=0) obj_currency = Currency( '//*[@itemprop="price"]' @@ -125,7 +131,7 @@ def obj_utilities(self): u'.* Mis à jour : (\d{2}/\d{2}/\d{4}).*'), dayfirst=True) obj_text = CleanHTML('//div[has-class("offer-description-text")]/meta[@itemprop="description"]/@content') - obj_location = CleanText('//*[@itemprop="address"]') + obj_location = CleanText('//div[@itemprop="address"]') obj_station = CleanText( '//div[has-class("offer-description-metro")]', default=NotAvailable @@ -265,7 +271,7 @@ class item(ItemElement): obj_advert_type = ADVERT_TYPES.PROFESSIONAL def obj_house_type(self): - house_type = CleanText('.//div[has-class("offer-details-type")]/a')(self).split(' ')[0].lower() + house_type = CleanText('.//div[has-class("offer-details-caracteristik")]/meta[@itemprop="name"]/@content')(self).lower() if house_type == "appartement": return HOUSE_TYPES.APART elif house_type == "maison": diff --git a/weboob/tools/capabilities/housing/housing_test.py b/weboob/tools/capabilities/housing/housing_test.py index 948d59e84d..c48ca84389 100755 --- a/weboob/tools/capabilities/housing/housing_test.py +++ b/weboob/tools/capabilities/housing/housing_test.py @@ -93,7 +93,7 @@ def check_housing_lists(self, query): return results def check_single_housing_all(self, housing, - type, house_types, advert_type): + type, house_type, advert_type): for field in self.FIELDS_ALL_SINGLE_HOUSING: self.assertNotEmpty(housing, field) if 'type' in self.FIELDS_ALL_SINGLE_HOUSING: @@ -106,8 +106,8 @@ def check_single_housing_all(self, housing, else: self.assertEqual(housing.type, type) if 'house_type' in self.FIELDS_ALL_SINGLE_HOUSING: - if not empty(house_types): - self.assertEqual(housing.house_type, house_types) + if not empty(house_type): + self.assertEqual(housing.house_type, house_type) else: self.assertNotEmpty(housing, 'house_type') if 'advert_type' in self.FIELDS_ALL_SINGLE_HOUSING: -- GitLab