Skip to content

Commit ffdc0d2

Browse files
author
lenarsaitov
committed
fix metro iteration, refactor only_apartment and only_flat, min_balconies and metro_foot_minute params
1 parent 8f11aa6 commit ffdc0d2

File tree

3 files changed

+27
-29
lines changed

3 files changed

+27
-29
lines changed

README.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ additional_settings = {
9191
"is_by_homeowner": True,
9292
"min_price": 1000000,
9393
"max_price": 10000000,
94-
"have_balconies": True,
94+
"min_balconies": 1,
9595
"have_loggia": True,
9696
"min_house_year": 1990,
9797
"max_house_year": 2023,
@@ -103,29 +103,31 @@ additional_settings = {
103103
"metro": "Московский",
104104
"metro_station": "ВДНХ",
105105
"metro_foot_minute": 45,
106+
"flat_share": 2,
107+
"only_flat": True,
108+
"only_apartment": True,
106109
"sort_by": "price_from_min_to_max",
107110
}
108111
```
109112
* __is_by_homeowner__ - объявления, созданных только собственниками
110-
* __min_price__ - цена от
111-
* __max_price__ - цена до
112-
* __have_balconies__ - наличие балкона
113-
* __have_loggia__ - наличия лоджи
113+
* __min_price__ - цена от (в рублях)
114+
* __max_price__ - цена до (в рублях)
115+
* __min_balconies__ - минимальное количество балконов
116+
* __have_loggia__ - наличие лоджи
114117
* __min_house_year__ - год постройки дома от
115118
* __max_house_year__ - год постройки дома до
116119
* __min_floor__ - этаж от
117120
* __max_floor__ - этаж до
118121
* __min_total_floor__ - этажей в доме от
119122
* __max_total_floor__ - этажей в доме до
120-
* __house_material_type__ - тип дома
121-
* __metro__ - название метрополитена
123+
* __house_material_type__ - тип дома (_см ниже возможные значения_)
124+
* __metro__ - название метрополитена (_см ниже возможные значения_)
122125
* __metro_station__ - станция метро (доступно при условии, что задано metro)
123-
* __metro_foot_minute__ - сколько минут до метро пешком (доступно при заданном параметре metro_station)
124-
* __metro_foot_minute_special__ - сколько минут до метро пешком (без указания конкретной станции)
125-
* __flat_share__ - с долями или без (2 - без долей, 1 - только доли)
126-
* __only_flat__ = 1 - без апартаментов
127-
* __apartment__ = 1 - только апартаменты
128-
* __sort_by__ - сортировка объявлений
126+
* __metro_foot_minute__ - сколько минут до метро пешком
127+
* __flat_share__ - с долями или без (1 - только доли, 2 - без долей)
128+
* __only_flat__ - без апартаментов
129+
* __only_apartment__ - только апартаменты
130+
* __sort_by__ - сортировка объявлений (_см ниже возможные значения_)
129131

130132
Для **house_material_type** возможны следующие из значений
131133
- _1_ - киричный

cianparser/constants.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
STUDIO = "&room9=1"
1010
WITHOUT_NEIGHBORS_OF_CITY = "&with_neighbors=0"
1111
IS_ONLY_HOMEOWNER = "&is_by_homeowner=1"
12-
HAVE_BALCONIES = "&min_balconies=1"
12+
MIN_BALCONIES = "&min_balconies={}"
1313
HAVE_LOGGIA = "&loggia=1"
1414
MIN_HOUSE_YEAR = "&min_house_year={}"
1515
MAX_HOUSE_YEAR = "&min_house_year={}"
@@ -25,8 +25,6 @@
2525
METRO_FOOT_MINUTE = "&only_foot=2&foot_min={}"
2626
METRO_ID = "&metro%5B0%5D={}"
2727

28-
METRO_FOOT_MINUTE_SPECIAL = "&foot_min={}"
29-
3028
FLAT_SHARE = "&flat_share={}"
3129
ONLY_FLAT = "&only_flat={}"
3230
APARTMENT = '&apartment={}'
@@ -567,6 +565,7 @@
567565
['Апрелевка', '494'],
568566
['Победа', '495'],
569567
['Крёкшино', '496'],
568+
['Санино', '497'],
570569
['Кокошкино', '498'],
571570
['Толстопальцево', '499'],
572571
['Лесной Городок', '500'],
@@ -596,7 +595,7 @@
596595
['Физтех', '533'],
597596
['Аэропорт Внуково', '535'],
598597
['Пыхтино', '536'],
599-
['Марьина Роща,' '537'],
598+
['Марьина Роща', '537'],
600599
],
601600
"Казанский": [
602601
['Северный Вокзал', '314'],

cianparser/parser.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ def build_url(self):
9999
if self.additional_settings is not None:
100100
if "is_by_homeowner" in self.additional_settings.keys() and self.additional_settings["is_by_homeowner"]:
101101
url += IS_ONLY_HOMEOWNER
102-
if "have_balconies" in self.additional_settings.keys() and self.additional_settings["have_balconies"]:
103-
url += HAVE_BALCONIES
102+
if "min_balconies" in self.additional_settings.keys():
103+
url += MIN_BALCONIES.format(self.additional_settings["min_balconies"])
104104
if "have_loggia" in self.additional_settings.keys() and self.additional_settings["have_loggia"]:
105105
url += HAVE_LOGGIA
106106

@@ -129,27 +129,24 @@ def build_url(self):
129129

130130
if "metro" in self.additional_settings.keys():
131131
if "metro_station" in self.additional_settings.keys():
132-
is_available_metro = False
133132
if self.additional_settings["metro"] in METRO_STATIONS.keys():
134133
for metro_station, metro_id in METRO_STATIONS[self.additional_settings["metro"]]:
135134
if self.additional_settings["metro_station"] == metro_station:
136135
url += METRO_ID.format(metro_id)
137-
is_available_metro = True
138136

139-
if "metro_foot_minute" in self.additional_settings.keys() and is_available_metro:
140-
url += METRO_FOOT_MINUTE.format(self.additional_settings["metro_foot_minute"])
141-
142-
if "metro_foot_minute_special" in self.additional_settings.keys():
143-
url += METRO_FOOT_MINUTE_SPECIAL.format(self.additional_settings["metro_foot_minute_special"])
137+
if "metro_foot_minute" in self.additional_settings.keys():
138+
url += METRO_FOOT_MINUTE.format(self.additional_settings["metro_foot_minute"])
144139

145140
if "flat_share" in self.additional_settings.keys():
146141
url += FLAT_SHARE.format(self.additional_settings["flat_share"])
147142

148143
if "only_flat" in self.additional_settings.keys():
149-
url += ONLY_FLAT.format(self.additional_settings["only_flat"])
144+
if self.additional_settings["only_flat"]:
145+
url += ONLY_FLAT.format(1)
150146

151-
if "apartment" in self.additional_settings.keys():
152-
url += APARTMENT.format(self.additional_settings["apartment"])
147+
if "only_apartment" in self.additional_settings.keys():
148+
if self.additional_settings["only_apartment"]:
149+
url += APARTMENT.format(1)
153150

154151
if "sort_by" in self.additional_settings.keys():
155152
if self.additional_settings["sort_by"] == IS_SORT_BY_PRICE_FROM_MIN_TO_MAX:

0 commit comments

Comments
 (0)