import json class Serie: def __init__(self, key: str, name: str, site: str, folder: str, episodeDict: dict[int, list[int]]): self._key = key self._name = name self._site = site self._folder = folder self._episodeDict = episodeDict def __str__(self): """String representation of Serie object""" return f"Serie(key='{self.key}', name='{self.name}', site='{self.site}', folder='{self.folder}', episodeDict={self.episodeDict})" @property def key(self) -> str: return self._key @key.setter def key(self, value: str): self._key = value @property def name(self) -> str: return self._name @name.setter def name(self, value: str): self._name = value @property def site(self) -> str: return self._site @site.setter def site(self, value: str): self._site = value @property def folder(self) -> str: return self._folder @folder.setter def folder(self, value: str): self._folder = value @property def episodeDict(self) -> dict[int, list[int]]: return self._episodeDict @episodeDict.setter def episodeDict(self, value: dict[int, list[int]]): self._episodeDict = value def to_dict(self): """Convert Serie object to dictionary for JSON serialization.""" return { "key": self.key, "name": self.name, "site": self.site, "folder": self.folder, "episodeDict": {str(k): list(v) for k, v in self.episodeDict.items()} } @staticmethod def from_dict(data: dict): """Create a Serie object from dictionary.""" episode_dict = {int(k): v for k, v in data["episodeDict"].items()} # Convert keys to int return Serie(data["key"], data["name"], data["site"], data["folder"], episode_dict) def save_to_file(self, filename: str): """Save Serie object to JSON file.""" with open(filename, "w") as file: json.dump(self.to_dict(), file, indent=4) @classmethod def load_from_file(cls, filename: str) -> "Serie": """Load Serie object from JSON file.""" with open(filename, "r") as file: data = json.load(file) return cls.from_dict(data)