mirror of
https://github.com/jaypyles/Scraperr.git
synced 2025-12-11 18:26:08 +00:00
* feat: general rework [skip ci] * feat: general rework [skip ci] * feat: general rework [skip ci] * feat: use csv [skip ci] * feat: add testing [skip ci] * fix: remove logging [skip ci]
66 lines
1.2 KiB
Python
66 lines
1.2 KiB
Python
# STL
|
|
from typing import Any, Optional, Union
|
|
from datetime import datetime
|
|
|
|
# PDM
|
|
import pydantic
|
|
|
|
|
|
class FetchOptions(pydantic.BaseModel):
|
|
chat: Optional[bool] = None
|
|
|
|
|
|
class Element(pydantic.BaseModel):
|
|
name: str
|
|
xpath: str
|
|
url: Optional[str] = None
|
|
|
|
|
|
class CapturedElement(pydantic.BaseModel):
|
|
xpath: str
|
|
text: str
|
|
name: str
|
|
|
|
|
|
class JobOptions(pydantic.BaseModel):
|
|
multi_page_scrape: bool
|
|
custom_headers: Optional[dict[str, Any]]
|
|
|
|
|
|
class RetrieveScrapeJobs(pydantic.BaseModel):
|
|
user: str
|
|
|
|
|
|
class DownloadJob(pydantic.BaseModel):
|
|
ids: list[str]
|
|
|
|
|
|
class DeleteScrapeJobs(pydantic.BaseModel):
|
|
ids: list[str]
|
|
|
|
|
|
class GetStatistics(pydantic.BaseModel):
|
|
user: str
|
|
|
|
|
|
class UpdateJobs(pydantic.BaseModel):
|
|
ids: list[str]
|
|
field: str
|
|
value: Any
|
|
|
|
|
|
class AI(pydantic.BaseModel):
|
|
messages: list[Any]
|
|
|
|
|
|
class Job(pydantic.BaseModel):
|
|
id: Optional[str] = None
|
|
url: str
|
|
elements: list[Element]
|
|
user: str = ""
|
|
time_created: Optional[Union[datetime, str]] = None
|
|
result: list[dict[str, dict[str, list[CapturedElement]]]] = []
|
|
job_options: JobOptions
|
|
status: str = "Queued"
|
|
chat: Optional[str] = None
|