IAAI scraper: Playwright + SQLAlchemy, парсинг авто с аукциона, Docker-ready
This commit is contained in:
56
iaai_scraper/storage/schemas.py
Normal file
56
iaai_scraper/storage/schemas.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ImageRecord(BaseModel):
|
||||
fullres_image: str
|
||||
preview_image: str
|
||||
order_index: int = 0
|
||||
|
||||
|
||||
class CarRecord(BaseModel):
|
||||
parser_id: str
|
||||
brand: str
|
||||
model: str
|
||||
year: int | None = None
|
||||
price: int | None = None
|
||||
currency: str = "USD"
|
||||
mileage: int = 0
|
||||
country: str = "US"
|
||||
is_sold: bool = False
|
||||
color: str = "other"
|
||||
drive: str | None = None
|
||||
gearbox: str | None = None
|
||||
steering_wheel: str | None = None
|
||||
body_type: str = "OTHER"
|
||||
engine_volume: int | None = None
|
||||
selling_type: str = "AUCTION"
|
||||
one_owner: bool = False
|
||||
new_car: bool = False
|
||||
is_hidden: bool = False
|
||||
origin: str = "NA"
|
||||
origin_url: str
|
||||
origin_id: str
|
||||
is_damaged: bool = False
|
||||
evaluation: str | None = None
|
||||
non_smoking: bool = True
|
||||
rental: bool = False
|
||||
repair_history: bool = False
|
||||
slug: str
|
||||
last_seen_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
content_hash: str = ""
|
||||
images: list[ImageRecord] = Field(default_factory=list)
|
||||
raw_attributes: dict[str, Any] = Field(default_factory=dict)
|
||||
mapping_notes: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ScrapeExport(BaseModel):
|
||||
source_url: str
|
||||
fetched_at_epoch: int
|
||||
vehicle_summary: dict[str, Any] = Field(default_factory=dict)
|
||||
payload_insights: dict[str, Any] = Field(default_factory=dict)
|
||||
db_record: CarRecord | None = None
|
||||
network: dict[str, Any] = Field(default_factory=dict)
|
||||
access_notes: dict[str, Any] = Field(default_factory=dict)
|
||||
Reference in New Issue
Block a user