Fix sold checks with transport URLs
This commit is contained in:
@@ -454,7 +454,7 @@ class MobileDeClient:
|
||||
) or None
|
||||
return MobileDeListing(
|
||||
id=listing_id,
|
||||
url=MobileDeClient.build_detail_url(listing_id) if listing_id else "",
|
||||
url=MobileDeClient.build_transport_detail_url(listing_id) if listing_id else "",
|
||||
title=item.get("shortTitle"),
|
||||
subtitle=item.get("subTitle"),
|
||||
price=item.get("p"),
|
||||
|
||||
@@ -340,7 +340,7 @@ class MobileDeMapper:
|
||||
new_car=self._bool_value(detail.get("isConditionNew")),
|
||||
is_hidden=False,
|
||||
origin="MOBILEDE",
|
||||
origin_url=MobileDeClient.build_detail_url(listing_id),
|
||||
origin_url=MobileDeClient.build_transport_detail_url(listing_id),
|
||||
origin_id=origin_id,
|
||||
is_damaged=is_damaged,
|
||||
evaluation=self._rating_text(detail.get("priceRating") or detail.get("rating")),
|
||||
|
||||
@@ -841,7 +841,7 @@ class PersistenceService:
|
||||
order_by = Car.last_seen_at.desc() if newest_first else Car.last_seen_at.asc()
|
||||
with self.session_scope() as session:
|
||||
result = session.execute(
|
||||
select(Car.id, Car.origin_url, Car.last_seen_at).where(
|
||||
select(Car.id, Car.origin_id, Car.last_seen_at).where(
|
||||
_origin_prefix_filter(Car.origin_id, prefixes),
|
||||
Car.is_sold == False, # noqa: E712
|
||||
).order_by(order_by).limit(limit)
|
||||
|
||||
@@ -1571,12 +1571,14 @@ def _mobilede_probe_active_listing_status(
|
||||
client: MobileDeClient,
|
||||
*,
|
||||
car_id: int,
|
||||
origin_url: str,
|
||||
origin_id: str,
|
||||
) -> tuple[str, int | None]:
|
||||
url = str(origin_url or "").strip()
|
||||
if not url:
|
||||
logger.warning("mobile.de sold probe skipped: car_id=%s reason=missing_origin_url", car_id)
|
||||
source_id = str(origin_id or "").strip()
|
||||
listing_id = source_id.rsplit(":", 1)[-1].strip()
|
||||
if not listing_id:
|
||||
logger.warning("mobile.de sold probe skipped: car_id=%s reason=missing_origin_id", car_id)
|
||||
return "skipped", None
|
||||
url = MobileDeClient.build_transport_detail_url(listing_id)
|
||||
try:
|
||||
client.fetch_html(url, timeout=30)
|
||||
return "available", 200
|
||||
@@ -2270,11 +2272,11 @@ def mobilede_verify_active_sold_batch_task(
|
||||
skipped = 0
|
||||
checked = 0
|
||||
|
||||
for index, (car_id, origin_url, _last_seen_at) in enumerate(active_cars):
|
||||
for index, (car_id, origin_id, _last_seen_at) in enumerate(active_cars):
|
||||
verdict, status_code = _mobilede_probe_active_listing_status(
|
||||
client,
|
||||
car_id=int(car_id),
|
||||
origin_url=str(origin_url or ""),
|
||||
origin_id=str(origin_id or ""),
|
||||
)
|
||||
checked += 1
|
||||
if verdict == "available":
|
||||
|
||||
Reference in New Issue
Block a user