|
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 |
|
|