Skip to content

Instantly share code, notes, and snippets.

@fovtran
Created April 7, 2023 12:46
Show Gist options
  • Save fovtran/3b81630a6ae5c81986dba4f59a072a83 to your computer and use it in GitHub Desktop.
Save fovtran/3b81630a6ae5c81986dba4f59a072a83 to your computer and use it in GitHub Desktop.
parsetext.py
#!/usr/bin/env python3.11
import pyperclip as pc
from time import sleep
import numpy as np
class NC(object):
def __init__(self):
self.idx = 0
self.paste = pc.paste()
self.mini = list()
self.running = True
self.nullclipboard = pc.paste()
self.params = dict()
pass
def remove_item(self):
self.mini.pop(self.idx)
def store_prompt(self):
pass
def prompt_wait(self):
while(self.running):
self.newclipboard = pc.paste()
if self.nullclipboard != self.newclipboard:
self.prompt_parser()
self.params_reader()
# Compute differences
self.nullclipboard = self.newclipboard
self.print_params()
self.running=True
sleep(1)
def print_params(self):
print()
for param in self.params:
print(f"{param} : {self.params[param]} ")
def params_reader(self):
Prompt = np.zeros(len(self.mini))
PosteriorSearchList = {
'Preset Style': 1,
'Text Prompts': 3,
'Initial Resolution': 1,
'Runtime': 1,
'Model': 1,
'Seed': 1,
'Overall Prompt Weight': 1,
'Sampling method': 1,
'CLIP Guidance': 1}
found = 0
for idx, line in enumerate(self.mini):
# Stages
print(idx, self.mini[idx])
searchable = line
if not Prompt[idx]:
if line in PosteriorSearchList:
if PosteriorSearchList[searchable] ==1:
self.params[line] = self.mini[idx+ 1]
Prompt[idx] = True
continue
else:
self.mini.pop(idx)
# idx+=1
self.params[line] = []
for m in range(PosteriorSearchList[searchable]):
reparsed = self.mini[idx+ m].replace('\"', '')
self.params[line].append(reparsed)
self.mini.pop(idx+m)
self.params['Weight'+str(m)] = self.mini[idx+ m].replace('Weight:','')
idx+=PosteriorSearchList[searchable]
print(line)
else:
continue
def prompt_parser(self):
self.mini = self.newclipboard.split('\n')
for idx, line in enumerate(self.mini):
self.idx = idx
if line=='':
self.remove_item()
if line=='Creation Settings':
self.remove_item()
for idx, line in enumerate(self.mini):
self.idx = idx
if line.startswith('Weight:'): # rework weights
self.mini[idx] = line.replace(' Save', '')
nc = NC()
nc.prompt_wait()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment