Upload 5 files
Browse files- .gitattributes +1 -0
- Danbooru Prompt Selector/TEST2024/NAIA_0101_console_testv2.exe +3 -0
- Danbooru Prompt Selector/TEST2024/NAIA_0101_testv2.py +0 -0
- Danbooru Prompt Selector/TEST2024/NAIA_generation.py +1 -1
- Danbooru Prompt Selector/TEST2024/NAIA_random_function_core.py +18 -1
- Danbooru Prompt Selector/TEST2024/NAIA_search.py +39 -8
.gitattributes
CHANGED
|
@@ -107,3 +107,4 @@ Danbooru[[:space:]]Prompt[[:space:]]Selector/csv2023_nsfw.csv filter=lfs diff=lf
|
|
| 107 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/csv2023_safeimage.csv filter=lfs diff=lfs merge=lfs -text
|
| 108 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/csv2023_sensitive.csv filter=lfs diff=lfs merge=lfs -text
|
| 109 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/TEST2024/NAIA_1231_console_testv1.exe filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 107 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/csv2023_safeimage.csv filter=lfs diff=lfs merge=lfs -text
|
| 108 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/csv2023_sensitive.csv filter=lfs diff=lfs merge=lfs -text
|
| 109 |
Danbooru[[:space:]]Prompt[[:space:]]Selector/TEST2024/NAIA_1231_console_testv1.exe filter=lfs diff=lfs merge=lfs -text
|
| 110 |
+
Danbooru[[:space:]]Prompt[[:space:]]Selector/TEST2024/NAIA_0101_console_testv2.exe filter=lfs diff=lfs merge=lfs -text
|
Danbooru Prompt Selector/TEST2024/NAIA_0101_console_testv2.exe
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e7e2af30547a1146aa983e950ca89d891f3ef108da60b6d2b5906cc802d9ab25
|
| 3 |
+
size 837862738
|
Danbooru Prompt Selector/TEST2024/NAIA_0101_testv2.py
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
Danbooru Prompt Selector/TEST2024/NAIA_generation.py
CHANGED
|
@@ -186,7 +186,7 @@ def generate(gen_request):
|
|
| 186 |
"seed": gen_request["seed"],
|
| 187 |
"extra_noise_seed": random.randint(0,9999999999),
|
| 188 |
"sampler": gen_request["sampler"],
|
| 189 |
-
"steps": 28,
|
| 190 |
"scale": gen_request["scale"],
|
| 191 |
"uncond_scale": 1.0,
|
| 192 |
"negative_prompt": gen_request["negative"],
|
|
|
|
| 186 |
"seed": gen_request["seed"],
|
| 187 |
"extra_noise_seed": random.randint(0,9999999999),
|
| 188 |
"sampler": gen_request["sampler"],
|
| 189 |
+
"steps": 28 if gen_request["type"]!="upper" else gen_request["steps"],
|
| 190 |
"scale": gen_request["scale"],
|
| 191 |
"uncond_scale": 1.0,
|
| 192 |
"negative_prompt": gen_request["negative"],
|
Danbooru Prompt Selector/TEST2024/NAIA_random_function_core.py
CHANGED
|
@@ -42,7 +42,7 @@ def RFP(popped_row, fix_prompt, after_prompt, auto_hide_prompt, rm_a, rm_s, rm_c
|
|
| 42 |
series = [item.strip() for item in popped_row['copyright'].split(',')]
|
| 43 |
fix = fix + series
|
| 44 |
after = [item.strip() for item in after_prompt[:-1].split(',')]
|
| 45 |
-
auto_hide = [item.strip() for item in auto_hide_prompt[:-1].split(',')]
|
| 46 |
fix_index = find_keyword_index(general)
|
| 47 |
processed = general.copy()
|
| 48 |
temp_hide_prompt = []
|
|
@@ -67,4 +67,21 @@ def RFP(popped_row, fix_prompt, after_prompt, auto_hide_prompt, rm_a, rm_s, rm_c
|
|
| 67 |
if magic_word["random_artist"] == True:
|
| 68 |
processed.insert(fix_index, magic_word["random_artist_name"])
|
| 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
return ', '.join(processed)
|
|
|
|
| 42 |
series = [item.strip() for item in popped_row['copyright'].split(',')]
|
| 43 |
fix = fix + series
|
| 44 |
after = [item.strip() for item in after_prompt[:-1].split(',')]
|
| 45 |
+
auto_hide = [item.strip() for item in auto_hide_prompt[:-1].split(',')] + ["| |", ":|", "\||/", "<|> <|>", "|| ||", ";|"]
|
| 46 |
fix_index = find_keyword_index(general)
|
| 47 |
processed = general.copy()
|
| 48 |
temp_hide_prompt = []
|
|
|
|
| 67 |
if magic_word["random_artist"] == True:
|
| 68 |
processed.insert(fix_index, magic_word["random_artist_name"])
|
| 69 |
|
| 70 |
+
boy_in_processed = girl_in_processed = None
|
| 71 |
+
for boy in boys:
|
| 72 |
+
if boy in processed:
|
| 73 |
+
boy_in_processed = boy
|
| 74 |
+
break
|
| 75 |
+
|
| 76 |
+
for girl in girls:
|
| 77 |
+
if girl in processed:
|
| 78 |
+
girl_in_processed = girl
|
| 79 |
+
break
|
| 80 |
+
|
| 81 |
+
if boy_in_processed and girl_in_processed:
|
| 82 |
+
boy_index = processed.index(boy_in_processed)
|
| 83 |
+
girl_index = processed.index(girl_in_processed)
|
| 84 |
+
if boy_index > girl_index:
|
| 85 |
+
processed.pop(boy_index)
|
| 86 |
+
processed.insert(girl_index, boy_in_processed)
|
| 87 |
return ', '.join(processed)
|
Danbooru Prompt Selector/TEST2024/NAIA_search.py
CHANGED
|
@@ -1,34 +1,45 @@
|
|
| 1 |
-
import customtkinter
|
| 2 |
import pandas as pd
|
|
|
|
| 3 |
|
| 4 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ๋ ํ๋ง ํํฐ๋งํ๋ ํจ์
|
| 5 |
def filter_rows_containing_all_keywords(df, keywords):
|
|
|
|
| 6 |
# ๋ชจ๋ ํค์๋์ ๋ํ boolean mask ์ด๊ธฐํ, df์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ
|
| 7 |
final_mask = pd.Series([True] * len(df), index=df.index)
|
| 8 |
|
| 9 |
# ๊ฐ ํค์๋์ ๋ํด DataFrame์ ๋ชจ๋ ์ด์ ๊ฒ์ฌํ๊ณ boolean mask ์์ฑ ๋ฐ ์ ์ฅ
|
| 10 |
for keyword in keywords:
|
| 11 |
keyword_mask = pd.Series([False] * len(df), index=df.index)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 14 |
if df[column].dtype == 'object':
|
| 15 |
-
keyword_mask |= df[column].str.contains(keyword, na=False)
|
|
|
|
| 16 |
|
| 17 |
final_mask &= keyword_mask
|
| 18 |
|
| 19 |
return df[final_mask]
|
| 20 |
|
| 21 |
def filter_rows_not_containing_all_keywords(df, keywords):
|
|
|
|
| 22 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ์ง ์๋ ํ์ ํํฐ๋งํ๊ธฐ ์ํ boolean mask ์ด๊ธฐํ, df์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ
|
| 23 |
final_mask = pd.Series([True] * len(df), index=df.index)
|
| 24 |
|
| 25 |
# ๊ฐ ํค์๋์ ๋ํด DataFrame์ ๋ชจ๋ ์ด์ ๊ฒ์ฌํ๊ณ boolean mask ์์ฑ ๋ฐ ์ ์ฅ
|
| 26 |
for keyword in keywords:
|
| 27 |
keyword_mask = pd.Series([False] * len(df), index=df.index)
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
| 29 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 30 |
if df[column].dtype == 'object':
|
| 31 |
-
keyword_mask |= df[column].str.contains(keyword, na=False)
|
|
|
|
| 32 |
|
| 33 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ๋ ํ์ ๋ํ mask๋ฅผ ๋ฐ์ ์์ผ final_mask์ ์ ์ฅ
|
| 34 |
final_mask &= ~keyword_mask
|
|
@@ -36,18 +47,25 @@ def filter_rows_not_containing_all_keywords(df, keywords):
|
|
| 36 |
return df[final_mask]
|
| 37 |
|
| 38 |
def process_asterisk_group(df, asterisk_group):
|
|
|
|
| 39 |
# ๊ฐ ํค์๋ ์์ '*'๋ฅผ ์ ๊ฑฐํ๊ณ ๋งจ ๋ค์ ',' ์ถ๊ฐ
|
| 40 |
asterisk_keywords = [keyword.lstrip('*') + ',' for keyword in asterisk_group]
|
| 41 |
|
| 42 |
# ๊ฐ ํ์ ๋ํด ์์ ๋ฌธ์์ด search_string์ ๋ง๋ค๊ณ ๊ฒ์ ์ํ
|
| 43 |
df['search_string'] = df[['copyright', 'character', 'artist', 'meta', 'general']].apply(lambda x: ' ' + ', '.join(x.astype(str)) + ',', axis=1)
|
| 44 |
for keyword in asterisk_keywords:
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
df.drop('search_string', axis=1, inplace=True)
|
| 47 |
|
| 48 |
return df
|
| 49 |
|
| 50 |
def process_perfect_negative_group(df, perfect_negative_group):
|
|
|
|
| 51 |
# ๊ฐ ํค์๋ ์์ '~'๋ฅผ ์ ๊ฑฐํ๊ณ ๋งจ ๋ค์ ',' ์ถ๊ฐ
|
| 52 |
perfect_negative_keywords = [keyword.lstrip('~') + ',' for keyword in perfect_negative_group]
|
| 53 |
|
|
@@ -57,7 +75,12 @@ def process_perfect_negative_group(df, perfect_negative_group):
|
|
| 57 |
# ๋ชจ๋ ํค์๋์ ๋ํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋์ boolean Series๋ก ๊ฒฐํฉ
|
| 58 |
combined_mask = pd.Series([True] * len(df), index=df.index)
|
| 59 |
for keyword in perfect_negative_keywords:
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
combined_mask &= ~keyword_mask
|
| 62 |
|
| 63 |
# ์ต์ข
์ ์ผ๋ก ์ผ์นํ์ง ์๋ ํ๋ง ํํฐ๋ง
|
|
@@ -80,6 +103,8 @@ def search(df, search_request, exclude_request, E, N, S, G):
|
|
| 80 |
if(len(df) == 0):
|
| 81 |
return None
|
| 82 |
|
|
|
|
|
|
|
| 83 |
#search_request์ ๋ํ ์ฒ๋ฆฌ
|
| 84 |
#์ฒ๋ฆฌ์์ normal -> curly -> asterisk
|
| 85 |
split_requests = [item.strip() for item in search_request.split(',')]
|
|
@@ -87,10 +112,11 @@ def search(df, search_request, exclude_request, E, N, S, G):
|
|
| 87 |
curly_brace_group = [item for item in split_requests if item.startswith('{') and item.endswith('}')]
|
| 88 |
asterisk_group = [item for item in split_requests if item.startswith('*')]
|
| 89 |
normal_group = [item for item in split_requests if item not in curly_brace_group + asterisk_group]
|
| 90 |
-
|
| 91 |
negative_split_requests = [item.strip() for item in exclude_request.split(',')]
|
| 92 |
perfect_negative_group = [item for item in negative_split_requests if item.startswith('~')]
|
| 93 |
negative_group = [item for item in negative_split_requests if item not in perfect_negative_group]
|
|
|
|
| 94 |
|
| 95 |
if '' in split_requests:
|
| 96 |
split_requests.remove('')
|
|
@@ -113,8 +139,13 @@ def search(df, search_request, exclude_request, E, N, S, G):
|
|
| 113 |
for keyword in or_search_keyword:
|
| 114 |
if keyword.startswith('*'):
|
| 115 |
keyword = keyword[1:]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 117 |
-
matched_rows = df[df[column].str.contains(keyword, na=False)]
|
|
|
|
| 118 |
if not matched_rows.empty:
|
| 119 |
results = pd.concat([results, matched_rows])
|
| 120 |
break
|
|
|
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
+
import re
|
| 3 |
|
| 4 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ๋ ํ๋ง ํํฐ๋งํ๋ ํจ์
|
| 5 |
def filter_rows_containing_all_keywords(df, keywords):
|
| 6 |
+
special_chars = r".^$*+?{}[]\|()"
|
| 7 |
# ๋ชจ๋ ํค์๋์ ๋ํ boolean mask ์ด๊ธฐํ, df์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ
|
| 8 |
final_mask = pd.Series([True] * len(df), index=df.index)
|
| 9 |
|
| 10 |
# ๊ฐ ํค์๋์ ๋ํด DataFrame์ ๋ชจ๋ ์ด์ ๊ฒ์ฌํ๊ณ boolean mask ์์ฑ ๋ฐ ์ ์ฅ
|
| 11 |
for keyword in keywords:
|
| 12 |
keyword_mask = pd.Series([False] * len(df), index=df.index)
|
| 13 |
+
request_regex = False
|
| 14 |
+
if any(char in keyword for char in special_chars):
|
| 15 |
+
keyword = re.escape(keyword)
|
| 16 |
+
request_regex = True
|
| 17 |
|
| 18 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 19 |
if df[column].dtype == 'object':
|
| 20 |
+
if request_regex: keyword_mask |= df[column].str.contains(keyword, na=False, regex=True)
|
| 21 |
+
else: keyword_mask |= df[column].str.contains(keyword, na=False)
|
| 22 |
|
| 23 |
final_mask &= keyword_mask
|
| 24 |
|
| 25 |
return df[final_mask]
|
| 26 |
|
| 27 |
def filter_rows_not_containing_all_keywords(df, keywords):
|
| 28 |
+
special_chars = r".^$*+?{}[]\|()"
|
| 29 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ์ง ์๋ ํ์ ํํฐ๋งํ๊ธฐ ์ํ boolean mask ์ด๊ธฐํ, df์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ
|
| 30 |
final_mask = pd.Series([True] * len(df), index=df.index)
|
| 31 |
|
| 32 |
# ๊ฐ ํค์๋์ ๋ํด DataFrame์ ๋ชจ๋ ์ด์ ๊ฒ์ฌํ๊ณ boolean mask ์์ฑ ๋ฐ ์ ์ฅ
|
| 33 |
for keyword in keywords:
|
| 34 |
keyword_mask = pd.Series([False] * len(df), index=df.index)
|
| 35 |
+
request_regex = False
|
| 36 |
+
if any(char in keyword for char in special_chars):
|
| 37 |
+
keyword = re.escape(keyword)
|
| 38 |
+
request_regex = True
|
| 39 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 40 |
if df[column].dtype == 'object':
|
| 41 |
+
if request_regex: keyword_mask |= df[column].str.contains(keyword, na=False, regex=True)
|
| 42 |
+
else: keyword_mask |= df[column].str.contains(keyword, na=False)
|
| 43 |
|
| 44 |
# ๋ชจ๋ ํค์๋๋ฅผ ํฌํจํ๋ ํ์ ๋ํ mask๋ฅผ ๋ฐ์ ์์ผ final_mask์ ์ ์ฅ
|
| 45 |
final_mask &= ~keyword_mask
|
|
|
|
| 47 |
return df[final_mask]
|
| 48 |
|
| 49 |
def process_asterisk_group(df, asterisk_group):
|
| 50 |
+
special_chars = r".^$*+?{}[]\|()"
|
| 51 |
# ๊ฐ ํค์๋ ์์ '*'๋ฅผ ์ ๊ฑฐํ๊ณ ๋งจ ๋ค์ ',' ์ถ๊ฐ
|
| 52 |
asterisk_keywords = [keyword.lstrip('*') + ',' for keyword in asterisk_group]
|
| 53 |
|
| 54 |
# ๊ฐ ํ์ ๋ํด ์์ ๋ฌธ์์ด search_string์ ๋ง๋ค๊ณ ๊ฒ์ ์ํ
|
| 55 |
df['search_string'] = df[['copyright', 'character', 'artist', 'meta', 'general']].apply(lambda x: ' ' + ', '.join(x.astype(str)) + ',', axis=1)
|
| 56 |
for keyword in asterisk_keywords:
|
| 57 |
+
request_regex = False
|
| 58 |
+
if any(char in keyword for char in special_chars):
|
| 59 |
+
keyword = re.escape(keyword)
|
| 60 |
+
request_regex = True
|
| 61 |
+
if request_regex: df = df[df['search_string'].str.contains(keyword, na=False, regex=True)]
|
| 62 |
+
else: df = df[df['search_string'].str.contains(keyword, na=False)]
|
| 63 |
df.drop('search_string', axis=1, inplace=True)
|
| 64 |
|
| 65 |
return df
|
| 66 |
|
| 67 |
def process_perfect_negative_group(df, perfect_negative_group):
|
| 68 |
+
special_chars = r".^$*+?{}[]\|()"
|
| 69 |
# ๊ฐ ํค์๋ ์์ '~'๋ฅผ ์ ๊ฑฐํ๊ณ ๋งจ ๋ค์ ',' ์ถ๊ฐ
|
| 70 |
perfect_negative_keywords = [keyword.lstrip('~') + ',' for keyword in perfect_negative_group]
|
| 71 |
|
|
|
|
| 75 |
# ๋ชจ๋ ํค์๋์ ๋ํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋์ boolean Series๋ก ๊ฒฐํฉ
|
| 76 |
combined_mask = pd.Series([True] * len(df), index=df.index)
|
| 77 |
for keyword in perfect_negative_keywords:
|
| 78 |
+
request_regex = False
|
| 79 |
+
if any(char in keyword for char in special_chars):
|
| 80 |
+
keyword = re.escape(keyword)
|
| 81 |
+
request_regex = True
|
| 82 |
+
if request_regex: keyword_mask = df['search_string'].str.contains(keyword, na=False, regex=True)
|
| 83 |
+
else: df['search_string'].str.contains(keyword, na=False)
|
| 84 |
combined_mask &= ~keyword_mask
|
| 85 |
|
| 86 |
# ์ต์ข
์ ์ผ๋ก ์ผ์นํ์ง ์๋ ํ๋ง ํํฐ๋ง
|
|
|
|
| 103 |
if(len(df) == 0):
|
| 104 |
return None
|
| 105 |
|
| 106 |
+
special_chars = r".^$*+?{}[]\|()"
|
| 107 |
+
|
| 108 |
#search_request์ ๋ํ ์ฒ๋ฆฌ
|
| 109 |
#์ฒ๋ฆฌ์์ normal -> curly -> asterisk
|
| 110 |
split_requests = [item.strip() for item in search_request.split(',')]
|
|
|
|
| 112 |
curly_brace_group = [item for item in split_requests if item.startswith('{') and item.endswith('}')]
|
| 113 |
asterisk_group = [item for item in split_requests if item.startswith('*')]
|
| 114 |
normal_group = [item for item in split_requests if item not in curly_brace_group + asterisk_group]
|
| 115 |
+
#normal_group = [re.escape(item) if any(char in item for char in special_chars) else item for item in normal_group]
|
| 116 |
negative_split_requests = [item.strip() for item in exclude_request.split(',')]
|
| 117 |
perfect_negative_group = [item for item in negative_split_requests if item.startswith('~')]
|
| 118 |
negative_group = [item for item in negative_split_requests if item not in perfect_negative_group]
|
| 119 |
+
#negative_group = [re.escape(item) if any(char in item for char in special_chars) else item for item in negative_group]
|
| 120 |
|
| 121 |
if '' in split_requests:
|
| 122 |
split_requests.remove('')
|
|
|
|
| 139 |
for keyword in or_search_keyword:
|
| 140 |
if keyword.startswith('*'):
|
| 141 |
keyword = keyword[1:]
|
| 142 |
+
request_regex = False
|
| 143 |
+
if any(char in keyword for char in special_chars):
|
| 144 |
+
keyword = re.escape(keyword)
|
| 145 |
+
request_regex = True
|
| 146 |
for column in ['copyright', 'character', 'artist', 'meta', 'general']:
|
| 147 |
+
if request_regex: matched_rows = df[df[column].str.contains(keyword, na=False, regex=True)]
|
| 148 |
+
else: matched_rows = df[df[column].str.contains(keyword, na=False)]
|
| 149 |
if not matched_rows.empty:
|
| 150 |
results = pd.concat([results, matched_rows])
|
| 151 |
break
|