82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
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) |