Upload 2 files
Browse files
Danbooru Prompt Selector/TEST2024/prompt_selector_auto_1212_testv8.exe
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1d955af933c28910c437d6166dcb3a8c68ed22773991b53a81bdb1f9bd6f384a
|
3 |
+
size 151425735
|
Danbooru Prompt Selector/TEST2024/prompt_selector_auto_1212_testv8.py
CHANGED
@@ -27,11 +27,14 @@ from IPython.display import display
|
|
27 |
import win32clipboard
|
28 |
from io import BytesIO
|
29 |
from datetime import datetime
|
30 |
-
import arti_list, tagbag, wlist
|
31 |
import character_dictionary as cd
|
32 |
import pandas as pd
|
|
|
33 |
|
34 |
BASE_URL="https://api.novelai.net"
|
|
|
|
|
35 |
|
36 |
def argon_hash(email: str, password: str, size: int, domain: str) -> str:
|
37 |
pre_salt = f"{password[:6]}{email}{domain}"
|
@@ -317,19 +320,48 @@ def random_function():
|
|
317 |
include_keywords = [kw for kw in remaining_keywords if not kw.startswith('~') and not kw.startswith('*')]
|
318 |
|
319 |
if current_deep_search_keywords != last_deep_search_keywords or not cached_rows:
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
if all(
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
last_deep_search_keywords = current_deep_search_keywords
|
334 |
if not toggle_prompt_var.get(): text_output.delete('1.0', tk.END)
|
335 |
|
@@ -439,7 +471,7 @@ def random_function():
|
|
439 |
if kw in random_row_keywords:
|
440 |
random_row_keywords.remove(kw)
|
441 |
|
442 |
-
global previous_wildcard_artist, previous_wildcard_character
|
443 |
# temp_first_keywordsμ boyμ girl ν€μλλ₯Ό μ μ ν μμΉμ μΆκ°
|
444 |
if(girl_keywords and 'girl' in temp_first_keywords[0]): temp_first_keywords.pop(0)
|
445 |
#print(wildcard_var.get())
|
@@ -493,7 +525,7 @@ def random_function():
|
|
493 |
temp_rm = []
|
494 |
if rm_characteristic_var.get():
|
495 |
for keyword in random_row_keywords:
|
496 |
-
if keyword in bag_of_tags or "(" in keyword or "horns" in keyword:
|
497 |
temp_rm.append(keyword)
|
498 |
for keyword in temp_rm:
|
499 |
random_row_keywords.remove(keyword)
|
@@ -538,6 +570,53 @@ def random_function():
|
|
538 |
|
539 |
random_row_keywords = [keyword.strip(', ') for keyword in random_row_keywords]
|
540 |
random_row_keywords = [keyword for keyword in random_row_keywords if keyword]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
541 |
#print(random_row_keywords)
|
542 |
text_output.insert(tk.END, f"{', '.join(random_row_keywords)}")
|
543 |
if auto_copy_var.get():
|
@@ -2342,6 +2421,10 @@ widldcard_button.grid(row=1, column=2, sticky='ew')
|
|
2342 |
folder_button = tk.Button(checkbox_frame, text="μ μ₯ ν΄λ", command=open_file_explorer) #output_file_path
|
2343 |
folder_button.grid(row=1, column=3, padx=5, sticky='ew')
|
2344 |
|
|
|
|
|
|
|
|
|
2345 |
|
2346 |
window.bind('<Control-Return>', on_ctrl_enter)
|
2347 |
window.bind('<Shift-Return>', on_shift_enter)
|
@@ -2352,10 +2435,12 @@ if not (entry_fixed_prompt.get()): entry_fixed_prompt.insert(0, '1girl,')
|
|
2352 |
if not (entry_fixed_prompt_after.get()): entry_fixed_prompt_after.insert(0, 'great quality, aesthetic, absurdres')
|
2353 |
if not (entry_auto_hide.get()): entry_auto_hide.insert(0, 'monochrome, doujin cover, bad source, censored, bar censor')
|
2354 |
|
|
|
|
|
2355 |
resolution1_frame = tk.Frame(left_frame)
|
2356 |
-
resolution1_frame.grid(row=
|
2357 |
resolution2_frame = tk.Frame(left_frame)
|
2358 |
-
resolution2_frame.grid(row=
|
2359 |
selected_resolution = tk.StringVar(value="1024 x 1024")
|
2360 |
|
2361 |
tk.Radiobutton(resolution1_frame, text="1024 x 1024", variable=selected_resolution, value="1024 x 1024").grid(row=0, column=0, sticky='w')
|
@@ -2394,7 +2479,7 @@ option_menu = tk.OptionMenu(resolution2_frame, selected_option, *options, comman
|
|
2394 |
option_menu.grid(row=0, column=6, padx=5, sticky='ew')
|
2395 |
|
2396 |
resolution3_frame = tk.Frame(left_frame)
|
2397 |
-
resolution3_frame.grid(row=
|
2398 |
resolution3_frame.columnconfigure(0, weight=2)
|
2399 |
resolution3_frame.columnconfigure(1, weight=1)
|
2400 |
resolution3_frame.columnconfigure(2, weight=1)
|
|
|
27 |
import win32clipboard
|
28 |
from io import BytesIO
|
29 |
from datetime import datetime
|
30 |
+
import arti_list, tagbag, wlist, copyright_dict
|
31 |
import character_dictionary as cd
|
32 |
import pandas as pd
|
33 |
+
import webbrowser
|
34 |
|
35 |
BASE_URL="https://api.novelai.net"
|
36 |
+
copyright_keys = list(copyright_dict.copyright_dict.keys())
|
37 |
+
character_keys = list(cd.character_dictionary.keys())
|
38 |
|
39 |
def argon_hash(email: str, password: str, size: int, domain: str) -> str:
|
40 |
pre_salt = f"{password[:6]}{email}{domain}"
|
|
|
320 |
include_keywords = [kw for kw in remaining_keywords if not kw.startswith('~') and not kw.startswith('*')]
|
321 |
|
322 |
if current_deep_search_keywords != last_deep_search_keywords or not cached_rows:
|
323 |
+
if not os.path.exists('txt2img_temp_prompt.csv'):
|
324 |
+
text_output.delete('1.0', tk.END)
|
325 |
+
text_output.insert(tk.END, "txt2img_temp_prompt.csvκ° μμ΄ μ¬κ²μμ μνν©λλ€. μ΄ μμ
μλ λ§€μ° κΈ΄ μκ°μ΄ μμλ©λλ€. tags.csv νμΌμ λν΄ μ΄κΈ°ν ν€μλ λ° .csv λ΄λ³΄λ΄κΈ° κΈ°λ₯μ νμ© ν΄ μ£ΌμΈμ.")
|
326 |
+
try:
|
327 |
+
with open('txt2img_temp_prompt.csv', 'r', newline='', encoding='utf-8') as f:
|
328 |
+
reader = csv.reader(f)
|
329 |
+
rows = []
|
330 |
+
for row in reader:
|
331 |
+
if all(re.search(r'(?:^|, )' + re.escape(kw) + r'(?:,|$)', ', '.join(row)) for kw in perfect_match_keywords) \
|
332 |
+
and not any(exclude in cell for exclude in exclude_keywords for cell in row) \
|
333 |
+
and all(include in cell for include in include_keywords for cell in row):
|
334 |
+
# '{}' μμ ν€μλ μ²λ¦¬
|
335 |
+
if all(any(re.search(r'(?:^|, )' + re.escape(kw) + r'(?:,|$)', ', '.join(cell)) for kw in perfect_group) or
|
336 |
+
any(kw in cell for kw in regular_group) for perfect_group, regular_group in processed_keywords for cell in row):
|
337 |
+
rows.append(row)
|
338 |
+
cached_rows = rows
|
339 |
+
except:
|
340 |
+
try:
|
341 |
+
search()
|
342 |
+
with open('txt2img_temp_prompt.csv', 'r', newline='', encoding='utf-8') as f:
|
343 |
+
reader = csv.reader(f)
|
344 |
+
rows = []
|
345 |
+
for row in reader:
|
346 |
+
if all(re.search(r'(?:^|, )' + re.escape(kw) + r'(?:,|$)', ', '.join(row)) for kw in perfect_match_keywords) \
|
347 |
+
and not any(exclude in cell for exclude in exclude_keywords for cell in row) \
|
348 |
+
and all(include in cell for include in include_keywords for cell in row):
|
349 |
+
# '{}' μμ ν€μλ μ²λ¦¬
|
350 |
+
if all(any(re.search(r'(?:^|, )' + re.escape(kw) + r'(?:,|$)', ', '.join(cell)) for kw in perfect_group) or
|
351 |
+
any(kw in cell for kw in regular_group) for perfect_group, regular_group in processed_keywords for cell in row):
|
352 |
+
rows.append(row)
|
353 |
+
cached_rows = rows
|
354 |
+
except:
|
355 |
+
def open_link(url):
|
356 |
+
webbrowser.open_new(url)
|
357 |
+
|
358 |
+
text_output.delete('1.0', tk.END)
|
359 |
+
text_output.insert(tk.END, "tags.csv νμΌμ [νμΌ μ΄κΈ°] λ²νΌμ λλ¬ νμ¬νκ±°λ,")
|
360 |
+
text_output.insert(tk.END, "https://huggingface.co/baqu2213/PoemForSmallFThings/blob/main/Danbooru%20Prompt%20Selector/tags_2023.csv", "link")
|
361 |
+
text_output.insert(tk.END, " μμ λ€μ΄λ‘λ νμκΈ° λ°λλλ€.")
|
362 |
+
text_output.tag_config("link", foreground="blue", underline=True)
|
363 |
+
text_output.tag_bind("link", "<Button-1>", lambda e: open_link("https://huggingface.co/baqu2213/PoemForSmallFThings/blob/main/Danbooru%20Prompt%20Selector/tags_2023.csv"))
|
364 |
+
return
|
365 |
last_deep_search_keywords = current_deep_search_keywords
|
366 |
if not toggle_prompt_var.get(): text_output.delete('1.0', tk.END)
|
367 |
|
|
|
471 |
if kw in random_row_keywords:
|
472 |
random_row_keywords.remove(kw)
|
473 |
|
474 |
+
global previous_wildcard_artist, previous_wildcard_character, character_keys
|
475 |
# temp_first_keywordsμ boyμ girl ν€μλλ₯Ό μ μ ν μμΉμ μΆκ°
|
476 |
if(girl_keywords and 'girl' in temp_first_keywords[0]): temp_first_keywords.pop(0)
|
477 |
#print(wildcard_var.get())
|
|
|
525 |
temp_rm = []
|
526 |
if rm_characteristic_var.get():
|
527 |
for keyword in random_row_keywords:
|
528 |
+
if keyword in bag_of_tags or keyword in character_keys or "(" in keyword or "horns" in keyword:
|
529 |
temp_rm.append(keyword)
|
530 |
for keyword in temp_rm:
|
531 |
random_row_keywords.remove(keyword)
|
|
|
570 |
|
571 |
random_row_keywords = [keyword.strip(', ') for keyword in random_row_keywords]
|
572 |
random_row_keywords = [keyword for keyword in random_row_keywords if keyword]
|
573 |
+
|
574 |
+
rm_copyright = []
|
575 |
+
global copyright_keys
|
576 |
+
if(rm_copyright_var.get() == 1):
|
577 |
+
for keyword in random_row_keywords:
|
578 |
+
if keyword in copyright_keys:
|
579 |
+
rm_copyright.append(keyword)
|
580 |
+
if rm_copyright is not None:
|
581 |
+
for keyword in rm_copyright:
|
582 |
+
random_row_keywords.remove(keyword)
|
583 |
+
else:
|
584 |
+
idx = 0
|
585 |
+
for keyword in random_row_keywords:
|
586 |
+
if keyword in copyright_keys:
|
587 |
+
random_row_keywords[idx] = keyword+" (copyright)"
|
588 |
+
idx += 1
|
589 |
+
pop_character = []
|
590 |
+
for keyword in random_row_keywords:
|
591 |
+
if keyword in character_keys:
|
592 |
+
pop_character.append(keyword)
|
593 |
+
if pop_character is not None:
|
594 |
+
found_index = 0
|
595 |
+
# Search for 'girl' in the first four elements
|
596 |
+
for i in range(min(10, len(random_row_keywords))):
|
597 |
+
if 'girl' in random_row_keywords[i]:
|
598 |
+
found_index = i
|
599 |
+
break
|
600 |
+
elif 'boy' in random_row_keywords[i]:
|
601 |
+
found_index = i
|
602 |
+
break
|
603 |
+
elif 'other' in random_row_keywords[i]:
|
604 |
+
found_index = i
|
605 |
+
break
|
606 |
+
for keyword in pop_character:
|
607 |
+
found_index += 1
|
608 |
+
random_row_keywords.remove(keyword)
|
609 |
+
random_row_keywords.insert(found_index,keyword)
|
610 |
+
pop_artist = []
|
611 |
+
for keyword in random_row_keywords:
|
612 |
+
if keyword in afilter_30000:
|
613 |
+
pop_artist.append(keyword)
|
614 |
+
if pop_artist is not None:
|
615 |
+
for keyword in pop_artist:
|
616 |
+
found_index += 1
|
617 |
+
random_row_keywords.remove(keyword)
|
618 |
+
random_row_keywords.insert(found_index,"artist:"+keyword)
|
619 |
+
|
620 |
#print(random_row_keywords)
|
621 |
text_output.insert(tk.END, f"{', '.join(random_row_keywords)}")
|
622 |
if auto_copy_var.get():
|
|
|
2421 |
folder_button = tk.Button(checkbox_frame, text="μ μ₯ ν΄λ", command=open_file_explorer) #output_file_path
|
2422 |
folder_button.grid(row=1, column=3, padx=5, sticky='ew')
|
2423 |
|
2424 |
+
# "μνλͺ
μ κ±°" 체ν¬λ°μ€
|
2425 |
+
rm_copyright_var = tk.IntVar()
|
2426 |
+
rm_copyright_label = tk.Checkbutton(checkbox_frame, text="μνλͺ
μ κ±°", variable=rm_copyright_var)
|
2427 |
+
rm_copyright_label.grid(row=2, column=0, pady=5, sticky='ew')
|
2428 |
|
2429 |
window.bind('<Control-Return>', on_ctrl_enter)
|
2430 |
window.bind('<Shift-Return>', on_shift_enter)
|
|
|
2435 |
if not (entry_fixed_prompt_after.get()): entry_fixed_prompt_after.insert(0, 'great quality, aesthetic, absurdres')
|
2436 |
if not (entry_auto_hide.get()): entry_auto_hide.insert(0, 'monochrome, doujin cover, bad source, censored, bar censor')
|
2437 |
|
2438 |
+
|
2439 |
+
|
2440 |
resolution1_frame = tk.Frame(left_frame)
|
2441 |
+
resolution1_frame.grid(row=16, column=0, padx=5, pady=5, sticky='ew')
|
2442 |
resolution2_frame = tk.Frame(left_frame)
|
2443 |
+
resolution2_frame.grid(row=17, column=0, padx=5, pady=5, sticky='ew')
|
2444 |
selected_resolution = tk.StringVar(value="1024 x 1024")
|
2445 |
|
2446 |
tk.Radiobutton(resolution1_frame, text="1024 x 1024", variable=selected_resolution, value="1024 x 1024").grid(row=0, column=0, sticky='w')
|
|
|
2479 |
option_menu.grid(row=0, column=6, padx=5, sticky='ew')
|
2480 |
|
2481 |
resolution3_frame = tk.Frame(left_frame)
|
2482 |
+
resolution3_frame.grid(row=18, column=0, padx=5, pady=5, sticky='ew')
|
2483 |
resolution3_frame.columnconfigure(0, weight=2)
|
2484 |
resolution3_frame.columnconfigure(1, weight=1)
|
2485 |
resolution3_frame.columnconfigure(2, weight=1)
|