179 lines
3.5 KiB
Python
179 lines
3.5 KiB
Python
from pydantic import BaseModel
|
|
from uuid import UUID
|
|
from typing import List, Any, Optional
|
|
|
|
|
|
class _CoverMetadata(BaseModel):
|
|
id: UUID | None
|
|
resources: str | None
|
|
|
|
|
|
class _CreatorAvatar(BaseModel):
|
|
url: str | None
|
|
id: UUID | None
|
|
type: str | None
|
|
bitmojiAvatarId: str | None
|
|
altText: str | None
|
|
contentType: str | None
|
|
width: int | None
|
|
height: int | None
|
|
|
|
|
|
class _LastEdit(BaseModel):
|
|
editorUserId: UUID
|
|
editorUsername: str
|
|
editTimestamp: int
|
|
|
|
|
|
class _ImageMetadata(BaseModel):
|
|
id: UUID | None
|
|
content_type: Optional[str]
|
|
width: Optional[int]
|
|
height: Optional[int]
|
|
resources: Optional[str]
|
|
|
|
|
|
class _SampleQuestion(BaseModel):
|
|
image: str | None
|
|
imageMetadata: _ImageMetadata | None
|
|
title: str
|
|
type: str
|
|
time: int | None
|
|
|
|
|
|
class _Access(BaseModel):
|
|
groupRead: List[Any | None]
|
|
folderGroupIds: List[Any | None]
|
|
|
|
|
|
class _Card(BaseModel):
|
|
type: str
|
|
title: str
|
|
description: str
|
|
slug: str
|
|
cover: str | None
|
|
coverMetadata: _CoverMetadata | dict[None, None] | None
|
|
draftExists: bool
|
|
inventoryItemIds: List[Any]
|
|
number_of_questions: int
|
|
creator: UUID
|
|
creator_username: str
|
|
creator_avatar: _CreatorAvatar | dict[None, None] | None
|
|
badges: List[str]
|
|
visibility: int
|
|
locked: bool
|
|
writeProtection: bool
|
|
lastEdit: _LastEdit | None
|
|
featured: bool
|
|
young_featured: bool
|
|
sponsored: bool
|
|
draft: bool
|
|
combined: bool
|
|
compatibility_level: int
|
|
sample_questions: List[_SampleQuestion]
|
|
number_of_plays: int
|
|
number_of_players: int
|
|
total_favourites: int
|
|
question_types: List[str]
|
|
created: int
|
|
modified: int
|
|
access: _Access
|
|
duplication_disabled: bool
|
|
uuid: UUID
|
|
|
|
|
|
class _Entity(BaseModel):
|
|
card: _Card
|
|
|
|
|
|
class _Origin(BaseModel):
|
|
x: int
|
|
y: int
|
|
|
|
|
|
class _Crop(BaseModel):
|
|
origin: _Origin
|
|
target: _Origin
|
|
circular: bool
|
|
|
|
|
|
# class _Language(Enum):
|
|
# EN_US = "en-US"
|
|
|
|
|
|
class _LanguageInfo(BaseModel):
|
|
language: str
|
|
lastUpdatedOn: int
|
|
readAloudSupported: bool
|
|
|
|
|
|
class _Metadata(BaseModel):
|
|
access: _Access
|
|
duplicationProtection: bool | None
|
|
lastEdit: _LastEdit | None
|
|
|
|
|
|
class _Parent(BaseModel):
|
|
id: UUID
|
|
creator_username: str
|
|
|
|
|
|
class _Choice(BaseModel):
|
|
answer: str
|
|
correct: bool
|
|
languageInfo: _LanguageInfo | None
|
|
|
|
|
|
class _Video(BaseModel):
|
|
startTime: float
|
|
endTime: float
|
|
service: str
|
|
full_url: Optional[str]
|
|
id: Optional[str]
|
|
|
|
|
|
class _Question(BaseModel):
|
|
type: str
|
|
question: str
|
|
time: int
|
|
points: bool
|
|
pointsMultiplier: int
|
|
choices: List[_Choice]
|
|
image: str | None
|
|
imageMetadata: _ImageMetadata | None
|
|
resources: Optional[str]
|
|
video: _Video
|
|
questionFormat: int
|
|
languageInfo: _LanguageInfo | None
|
|
media: List[Any]
|
|
|
|
|
|
class _Kahoot(BaseModel):
|
|
uuid: UUID
|
|
language: str
|
|
creator: UUID
|
|
creator_username: str
|
|
compatibilityLevel: int
|
|
creator_primary_usage: str
|
|
folderId: UUID | None
|
|
visibility: int
|
|
difficulty: int | None
|
|
audience: str
|
|
audience: str
|
|
title: str
|
|
description: str
|
|
quizType: str
|
|
tags: str | None | List[str]
|
|
cover: str | None
|
|
coverMetadata: _CoverMetadata | dict[None, None] | None
|
|
questions: List[_Question]
|
|
metadata: _Metadata
|
|
parent: _Parent | None
|
|
resources: str | None
|
|
slug: str
|
|
languageInfo: _LanguageInfo | None
|
|
inventoryItemIds: List[Any]
|
|
type: str
|
|
created: int
|
|
modified: int
|