-
Notifications
You must be signed in to change notification settings - Fork 38
/
nsp_pantry.py
63 lines (55 loc) · 2.15 KB
/
nsp_pantry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
nspterminology = None
def wget(url, output):
import subprocess
res = subprocess.run(['wget', '-q', url, '-O', output], stdout=subprocess.PIPE).stdout.decode('utf-8')
print(res)
# nsp_parse( prompt )
# Input: dict, list, str
# Parse strings for terminology keys and replace them with random terms
def nsp_parse(prompt):
import random, os, json
global nspterminology
new_prompt = ''
new_prompts = []
new_dict = {}
ptype = type(prompt)
if not os.path.exists('./nsp_pantry.json'):
wget('https://raw.githubusercontent.com/WASasquatch/noodle-soup-prompts/main/nsp_pantry.json', './nsp_pantry.json')
if nspterminology is None:
with open('./nsp_pantry.json', 'r') as f:
nspterminology = json.loads(f.read())
if ptype == dict:
for pstep, pvalue in prompt.items():
if type(pvalue) == list:
for prompt in pvalue:
new_prompt = prompt
for term in nspterminology:
tkey = f'_{term}_'
tcount = prompt.count(tkey)
for i in range(tcount):
new_prompt = new_prompt.replace(tkey, random.choice(nspterminology[term]), 1)
new_prompts.append(new_prompt)
new_dict[pstep] = new_prompts
new_prompts = []
return new_dict
elif ptype == list:
for pstr in prompt:
new_prompt = pstr
for term in nspterminology:
tkey = f'_{term}_'
tcount = new_prompt.count(tkey)
for i in range(tcount):
new_prompt = new_prompt.replace(tkey, random.choice(nspterminology[term]), 1)
new_prompts.append(new_prompt)
new_prompt = None
return new_prompts
elif ptype == str:
new_prompt = prompt
for term in nspterminology:
tkey = f'_{term}_'
tcount = new_prompt.count(tkey)
for i in range(tcount):
new_prompt = new_prompt.replace(tkey, random.choice(nspterminology[term]), 1)
return new_prompt
else:
return