Add Chzzk campaign and reward models, import command, and schemas
Some checks failed
Deploy to Server / deploy (push) Failing after 19s

This commit is contained in:
Joakim Hellsén 2026-03-31 21:57:12 +02:00
commit 677aedf42b
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
14 changed files with 650 additions and 9 deletions

107
chzzk/schemas.py Normal file
View file

@ -0,0 +1,107 @@
from typing import Any
from pydantic import BaseModel
from pydantic import Field
class ChzzkRewardV1(BaseModel):
"""Pydantic schema for Chzzk v1 reward object."""
title: str
reward_no: int = Field(..., alias="rewardNo")
image_url: str = Field(..., alias="imageUrl")
reward_type: str = Field(..., alias="rewardType")
condition_type: str = Field(..., alias="conditionType")
condition_for_minutes: int = Field(..., alias="conditionForMinutes")
ios_based_reward: bool = Field(..., alias="iosBasedReward")
code_remaining_count: int = Field(..., alias="codeRemainingCount")
# Only in v1 API
campaign_reward_type: str | None = Field(None, alias="campaignRewardType")
model_config = {"extra": "forbid"}
class ChzzkRewardV2(BaseModel):
"""Pydantic schema for Chzzk v2 reward object."""
title: str
reward_no: int = Field(..., alias="rewardNo")
image_url: str = Field(..., alias="imageUrl")
reward_type: str = Field(..., alias="rewardType")
condition_type: str = Field(..., alias="conditionType")
condition_for_minutes: int = Field(..., alias="conditionForMinutes")
ios_based_reward: bool = Field(..., alias="iosBasedReward")
code_remaining_count: int = Field(..., alias="codeRemainingCount")
model_config = {"extra": "forbid"}
class ChzzkCampaignV1(BaseModel):
"""Pydantic schema for Chzzk v1 campaign object."""
title: str
state: str
description: str
campaign_no: int = Field(..., alias="campaignNo")
image_url: str = Field(..., alias="imageUrl")
category_type: str = Field(..., alias="categoryType")
category_id: str = Field(..., alias="categoryId")
category_value: str = Field(..., alias="categoryValue")
pc_link_url: str = Field(..., alias="pcLinkUrl")
mobile_link_url: str = Field(..., alias="mobileLinkUrl")
service_id: str = Field(..., alias="serviceId")
start_date: str = Field(..., alias="startDate")
end_date: str = Field(..., alias="endDate")
reward_list: list[ChzzkRewardV1] = Field(..., alias="rewardList")
has_ios_based_reward: bool = Field(..., alias="hasIosBasedReward")
drops_campaign_not_started: bool = Field(..., alias="dropsCampaignNotStarted")
campaign_reward_type: str | None = Field(None, alias="campaignRewardType")
account_link_url: str = Field(..., alias="accountLinkUrl")
model_config = {"extra": "forbid"}
class ChzzkCampaignV2(BaseModel):
"""Pydantic schema for Chzzk v2 campaign object."""
title: str
state: str
campaign_no: int = Field(..., alias="campaignNo")
image_url: str = Field(..., alias="imageUrl")
description: str
category_type: str = Field(..., alias="categoryType")
category_id: str = Field(..., alias="categoryId")
category_value: str = Field(..., alias="categoryValue")
pc_link_url: str = Field(..., alias="pcLinkUrl")
mobile_link_url: str = Field(..., alias="mobileLinkUrl")
service_id: str = Field(..., alias="serviceId")
start_date: str = Field(..., alias="startDate")
end_date: str = Field(..., alias="endDate")
reward_list: list[ChzzkRewardV2] = Field(..., alias="rewardList")
has_ios_based_reward: bool = Field(..., alias="hasIosBasedReward")
drops_campaign_not_started: bool = Field(..., alias="dropsCampaignNotStarted")
reward_type: str | None = Field(None, alias="rewardType")
account_link_url: str = Field(..., alias="accountLinkUrl")
model_config = {"extra": "forbid"}
class ChzzkApiResponseV1(BaseModel):
"""Pydantic schema for Chzzk v1 API response."""
code: int
message: Any | None
content: ChzzkCampaignV1
model_config = {"extra": "forbid"}
class ChzzkApiResponseV2(BaseModel):
"""Pydantic schema for Chzzk v2 API response."""
code: int
message: Any | None
content: ChzzkCampaignV2
model_config = {"extra": "forbid"}