| from scripts.physton_prompt.storage import Storage | |
| import uuid | |
| import time | |
| class History: | |
| histories = { | |
| 'txt2img': [], | |
| 'txt2img_neg': [], | |
| 'img2img': [], | |
| 'img2img_neg': [], | |
| } | |
| favorites = { | |
| 'txt2img': [], | |
| 'txt2img_neg': [], | |
| 'img2img': [], | |
| 'img2img_neg': [], | |
| } | |
| max = 100 | |
| storage = Storage() | |
| def __init__(self): | |
| for type in self.histories: | |
| self.histories[type] = self.storage.get('history.' + type) | |
| if self.histories[type] is None: | |
| self.histories[type] = [] | |
| self.__save_histories(type) | |
| for type in self.favorites: | |
| self.favorites[type] = self.storage.get('favorite.' + type) | |
| if self.favorites[type] is None: | |
| self.favorites[type] = [] | |
| self.__save_favorites(type) | |
| def __save_histories(self, type): | |
| self.storage.set('history.' + type, self.histories[type]) | |
| def __save_favorites(self, type): | |
| self.storage.set('favorite.' + type, self.favorites[type]) | |
| def get_histories(self, type): | |
| histories = self.histories[type] | |
| for history in histories: | |
| history['is_favorite'] = self.is_favorite(type, history['id']) | |
| return histories | |
| def is_favorite(self, type, id): | |
| for favorite in self.favorites[type]: | |
| if favorite['id'] == id: | |
| return True | |
| return False | |
| def get_favorites(self, type): | |
| return self.favorites[type] | |
| def push_history(self, type, tags, prompt, name=''): | |
| if len(self.histories[type]) >= self.max: | |
| self.histories[type].pop(0) | |
| item = { | |
| 'id': str(uuid.uuid1()), | |
| 'time': int(time.time()), | |
| 'name': name, | |
| 'tags': tags, | |
| 'prompt': prompt, | |
| } | |
| self.histories[type].append(item) | |
| self.__save_histories(type) | |
| return item | |
| def push_favorite(self, type, tags, prompt, name=''): | |
| item = { | |
| 'id': str(uuid.uuid1()), | |
| 'time': int(time.time()), | |
| 'name': name, | |
| 'tags': tags, | |
| 'prompt': prompt, | |
| } | |
| self.favorites[type].append(item) | |
| self.__save_favorites(type) | |
| return item | |
| def get_latest_history(self, type): | |
| if len(self.histories[type]) > 0: | |
| return self.histories[type][-1] | |
| return None | |
| def set_history(self, type, id, tags, prompt, name): | |
| for history in self.histories[type]: | |
| if history['id'] == id: | |
| history['tags'] = tags | |
| history['prompt'] = prompt | |
| history['name'] = name | |
| self.__save_histories(type) | |
| if self.is_favorite(type, id): | |
| self.set_favorite(type, id, tags, prompt, name) | |
| return True | |
| return False | |
| def set_favorite(self, type, id, tags, prompt, name): | |
| for favorite in self.favorites[type]: | |
| if favorite['id'] == id: | |
| favorite['tags'] = tags | |
| favorite['prompt'] = prompt | |
| favorite['name'] = name | |
| self.__save_favorites(type) | |
| return True | |
| return False | |
| def set_history_name(self, type, id, name): | |
| for history in self.histories[type]: | |
| if history['id'] == id: | |
| history['name'] = name | |
| self.__save_histories(type) | |
| for favorite in self.favorites[type]: | |
| if favorite['id'] == id: | |
| favorite['name'] = name | |
| self.__save_favorites(type) | |
| return True | |
| return False | |
| def set_favorite_name(self, type, id, name): | |
| for favorite in self.favorites[type]: | |
| if favorite['id'] == id: | |
| favorite['name'] = name | |
| self.__save_favorites(type) | |
| for history in self.histories[type]: | |
| if history['id'] == id: | |
| history['name'] = name | |
| self.__save_histories(type) | |
| return True | |
| return False | |
| def dofavorite(self, type, id): | |
| if self.is_favorite(type, id): | |
| return False | |
| for history in self.histories[type]: | |
| if history['id'] == id: | |
| self.favorites[type].append(history) | |
| self.__save_favorites(type) | |
| return True | |
| return False | |
| def unfavorite(self, type, id): | |
| if not self.is_favorite(type, id): | |
| return False | |
| for favorite in self.favorites[type]: | |
| if favorite['id'] == id: | |
| self.favorites[type].remove(favorite) | |
| self.__save_favorites(type) | |
| return True | |
| return False | |
| def remove_history(self, type, id): | |
| for history in self.histories[type]: | |
| if history['id'] == id: | |
| self.histories[type].remove(history) | |
| self.__save_histories(type) | |
| return True | |
| return False | |
| def remove_histories(self, type): | |
| self.histories[type] = [] | |
| self.__save_histories(type) | |
| return True | |