Add compatibility with new Wallapop API changes

This commit is contained in:
danielhuici
2025-03-21 17:24:58 +01:00
parent 6842664fba
commit 08c1577b2a
2 changed files with 22 additions and 11 deletions

View File

@@ -16,8 +16,8 @@ class WallapopArticle:
json_data['id'], json_data['id'],
json_data['title'], json_data['title'],
json_data['description'], json_data['description'],
json_data['price'], json_data['price']['amount'],
json_data['currency'], json_data['price']['currency'],
json_data['location']['city'], json_data['location']['city'],
json_data['shipping']['user_allows_shipping'], json_data['shipping']['user_allows_shipping'],
json_data['web_slug'] json_data['web_slug']

View File

@@ -18,20 +18,30 @@ class Worker:
self._notified_articles = self._request_articles() self._notified_articles = self._request_articles()
self.telegram_manager = TelegramManager() self.telegram_manager = TelegramManager()
def _request_articles(self): def _create_url(self):
url = ( url = (
f"http://api.wallapop.com/api/v3/general/search?keywords={self._item_monitoring.get_search_query()}" f"http://api.wallapop.com/api/v3/search"
f"&order_by=newest&latitude={self._item_monitoring.get_latitude()}" f"?source=search_box"
f"&longitude={self._item_monitoring.get_longitude()}" f"&keywords={self._item_monitoring._search_query}"
f"&distance={self._item_monitoring.get_max_distance()}" f"&order_by=newest"
f"&min_sale_price={self._item_monitoring.get_min_price()}" f"&latitude={self._item_monitoring._latitude}"
f"&max_sale_price={self._item_monitoring.get_max_price()}" f"&longitude={self._item_monitoring._longitude}"
f"&filters_source=quick_filters&language=es_ES" f"&min_sale_price={self._item_monitoring._min_price}"
f"&max_sale_price={self._item_monitoring._max_price}"
f"&language=es_ES"
) )
if self._item_monitoring._max_distance != "0":
url += f"&distance={self._item_monitoring._max_distance}"
if self._item_monitoring.get_condition() != "all": if self._item_monitoring.get_condition() != "all":
url += f"&condition={self._item_monitoring.get_condition()}" # new, as_good_as_new, good, fair, has_given_it_all url += f"&condition={self._item_monitoring.get_condition()}" # new, as_good_as_new, good, fair, has_given_it_all
return url
def _request_articles(self):
url = self._create_url()
while True: while True:
try: try:
headers = { headers = {
@@ -46,7 +56,8 @@ class Worker:
time.sleep(REQUEST_RETRY_TIME) time.sleep(REQUEST_RETRY_TIME)
json_response = response.json() json_response = response.json()
articles = self._parse_json_response(json_response['search_objects']) json_items = json_response['data']['section']['payload']['items']
articles = self._parse_json_response(json_items)
return articles return articles
def _parse_json_response(self, json_response): def _parse_json_response(self, json_response):