from enum import Enum from typing import Union import numpy as np class TaskType(Enum): TEXT_TO_IMAGE = "GENERATE_AI_IMAGE" IMAGE_TO_IMAGE = "IMAGE_TO_IMAGE" POSE = "POSE" CANNY = "CANNY" REMOVE_BG = "REMOVE_BG" INPAINT = "INPAINT" UPSCALE_IMAGE = "UPSCALE_IMAGE" class ModelType(Enum): REAL = 10000 ANIME = 10001 COMIC = 10002 class Task: def __init__(self, data): self.__data = data if data.get("seed", -1) == None or self.get_seed() == -1: self.__data["seed"] = np.random.randint(0, np.iinfo(np.int64).max) def get_taskId(self) -> str: return self.__data.get("task_id") def get_sourceId(self) -> str: return self.__data.get("source_id") def get_imageUrl(self) -> str: return self.__data.get("imageUrl") def get_prompt(self) -> str: return self.__data.get("prompt") def get_userId(self) -> str: return self.__data.get("userId", "") def get_email(self) -> str: return self.__data.get("email", "") def get_style(self) -> str: return self.__data.get("style", None) def get_iteration(self) -> float: return float(self.__data.get("iteration", 3.0)) def get_modelType(self) -> ModelType: id = int(self.__data.get("model_id", 10000)) return ModelType(id) def get_width(self) -> int: return int(self.__data.get("width", 512)) def get_height(self) -> int: return int(self.__data.get("height", 512)) def get_seed(self) -> int: return int(self.__data.get("seed", -1)) def get_steps(self) -> int: return int(self.__data.get("steps", "75")) def get_type(self) -> Union[TaskType, None]: try: return TaskType(self.__data.get("task_type")) except ValueError: return None def get_maskImageUrl(self) -> str: return self.__data.get("maskImageUrl") def get_negative_prompt(self) -> str: return self.__data.get("negative_prompt", "") def is_prompt_engineering(self) -> bool: return self.__data.get("auto_mode", True) def get_raw(self) -> dict: return self.__data.copy()