FashGate's picture
Upload 204 files
8a469fd
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