playreel/backend/models/nol.py

41 lines
1.4 KiB
Python

from dataclasses import dataclass, field
from pydantic import BaseModel, ConfigDict, Field
class NolMeta(BaseModel):
"""상품 페이지 SSR HTML에서 긁어낸 공연 정보."""
model_config = ConfigDict(populate_by_name=True)
goods_id: str
url: str
goods_name: str | None = Field(None, alias="goodsName")
place_name: str | None = Field(None, alias="placeName")
play_start_date: str | None = Field(None, alias="playStartDate")
play_end_date: str | None = Field(None, alias="playEndDate")
running_time: str | None = Field(None, alias="runningTime")
inter_mission_time: str | None = Field(None, alias="interMissionTime")
view_rate_name: str | None = Field(None, alias="viewRateName")
genre_name: str | None = Field(None, alias="genreName")
sub_genre_name: str | None = Field(None, alias="subGenreName")
corporation_name: str | None = Field(None, alias="corporationName")
poster_image_url: str | None = Field(None, alias="posterImageUrl")
booking_open_time: str | None = Field(None, alias="bookingOpenTime")
min_price: int | None = None
detail_image_urls: list[str] = []
@dataclass
class FetchedImage:
url: str
data: bytes
extension: str # 확장자가 .gif여도 실제 바이트로 판별한 값
@dataclass
class NolProduct:
meta: NolMeta
poster: FetchedImage | None
details: list[FetchedImage]
failed_urls: list[str] = field(default_factory=list)