diff --git a/README.md b/README.md
index 69a433c..77c054e 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ Sometimes, when you type too fast or copy prompts from all over the places, you
- [x] Toggle between auto formatting and manual formatting
- In `Auto` mode: The process is ran whenever you click on **Generate**
- In `Manual` mode: The process is only ran when you click the **Format** button
-- [x] **New:** Trigger the formatting when pasting text
+- [x] **New:** Trigger the formatting on the pasted text
- [x] Toggle whether the above features are enabled / disabled by default in the `Prompt Format` section under the System category of the **Settings** tab
- [x] Pressing `Alt` + `Shift` + `F` can also trigger formatting
- [x] Assign "[alias](#tag-alias)" that counts as duplicates for the specified tags
@@ -58,3 +58,15 @@ Sometimes, when you type too fast or copy prompts from all over the places, you
1. Since the formatting in `Auto` mode is triggered at the same time as the generation, the immediate image might not have its prompts updated.
2. Some Extensions *(**eg.** [tagcomplete](https://github.com/DominikDoom/a1111-sd-webui-tagcomplete))* listen to the text editing event, meaning the formatting will cause them to be triggered. You can disable updating the actual prompts in the `Prompt Format` settings to prevent this. Though you may need to manually type something else for the prompt to get actually updated.
+
+
+
+
+Booru
+
+- [x] Automatically clean up unwanted texts
+ - Structure is based on [gelbooru](https://gelbooru.com/)
+
+
+
+
diff --git a/README_ZH.md b/README_ZH.md
index 634057c..18a3f20 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -25,7 +25,7 @@
- [x] 按下`Auto Format`以在手動與自動間切換
- `自動`: 每次按下 **生成 (Generate)** 時處裡
- `手動`: 手動按下 **Format** 時才處裡
-- [x] **新功能:** 處裡貼上的咒語
+- [x] **新功能:** 對貼上的咒語進行處裡
- [x] 在 **Settings** 頁面 System 下的 `Prompt Format` 區可以 開啟/關閉 上述功能
- [x] 按下 `Alt` + `Shift` + `F` 亦可觸發格式化
- [x] 為指定單字新增 "[同義詞](#同義詞)"
@@ -58,3 +58,15 @@
1. 由於 `自動`校正 和 生成 是同時觸發,當下所生產的第一張圖片之咒語可能不會是已更新的。
2. 有些擴充 *(如. [tagcomplete](https://github.com/DominikDoom/a1111-sd-webui-tagcomplete))* 追蹤文字的編輯事件,意即文字校正會導致它們啟動。你可以到設定關閉咒語的自動更新。
+
+
+
+
+Booru
+
+- [x] 自動清除多餘字詞
+ - 文字結構基於 [gelbooru](https://gelbooru.com/)
+
+
+
+
diff --git a/booru.png b/booru.png
new file mode 100644
index 0000000..e7eedc3
Binary files /dev/null and b/booru.png differ
diff --git a/javascript/pf_configs.js b/javascript/pf_configs.js
index fce80ed..faa15d9 100644
--- a/javascript/pf_configs.js
+++ b/javascript/pf_configs.js
@@ -7,6 +7,8 @@ class pfConfigs {
this.removeUnderscore = this.#defaultRemoveUnderscore();
this.comma = this.#appendComma();
this.paste = this.#onpaste();
+ this.booru = this.#procBooru();
+
this.promptFields = this.#getPromptFields();
}
@@ -46,6 +48,12 @@ class pfConfigs {
return config.checked;
}
+ /** @returns {boolean} */
+ #procBooru() {
+ const config = document.getElementById('setting_pf_booru').querySelector('input[type=checkbox]');
+ return config.checked;
+ }
+
/**
* Cache All Prompt Fields
* @returns {HTMLTextAreaElement[]}
diff --git a/javascript/prompt_format.js b/javascript/prompt_format.js
index ab30c97..0e57cb7 100644
--- a/javascript/prompt_format.js
+++ b/javascript/prompt_format.js
@@ -51,6 +51,9 @@ class LeFormatter {
/** @param {string} input @param {boolean} dedupe @param {boolean} removeUnderscore @returns {string} */
static formatString(input, dedupe, removeUnderscore) {
+ // Remove Underscore
+ input = removeUnderscore ? this.#removeUnderscore(input) : input;
+
// Fix Commas inside Brackets
input = input
.replace(/[,\s]+\)/g, '),')
@@ -72,9 +75,6 @@ class LeFormatter {
.replace(/\s*\|\s*/g, '|')
.replace(/\s*\:\s*/g, ':');
- // Remove Underscore
- input = removeUnderscore ? this.#removeUnderscore(input) : input;
-
// Sentence -> Tags
let tags = input.split(',').map(word => word.trim());
@@ -146,7 +146,6 @@ class LeFormatter {
if (/^\s+$/.test(part))
return part;
- part = part.trim();
if (!this.#cachedCards.includes(part))
part = part.replaceAll('_', ' ');
@@ -220,6 +219,16 @@ onUiLoaded(() => {
event.preventDefault();
let paste = (event.clipboardData || window.clipboardData).getData('text');
+
+ if (config.booru) {
+ paste = paste.replace(/\s\d+|\?\s+/g, ", ");
+ for (const excl of ["Artist", "Character", "Copyright", "Tag"])
+ paste = paste.replace(excl, "");
+
+ paste = paste.replaceAll("(", "\\(");
+ paste = paste.replaceAll(")", "\\)");
+ }
+
paste = LeFormatter.formatString(paste, config.dedupe, config.removeUnderscore);
const currentText = field.value;
diff --git a/scripts/pf_settings.py b/scripts/pf_settings.py
index 136ff45..d176fc4 100644
--- a/scripts/pf_settings.py
+++ b/scripts/pf_settings.py
@@ -9,9 +9,13 @@ def on_settings():
opts.add_option(
"pf_disableupdateinput",
- OptionInfo(False, "Disable the automatic updates of the prompts", **args).info(
- 'enable this if you have Extensions, such as tagcomplete, that subscribe to text editing events'
- ),
+ OptionInfo(False, "Disable the automatic updates of the prompts", **args)
+ .info(
+ """enable this if you have Extensions, such as
+ tagcomplete,
+ that subscribe to text editing events"""
+ )
+ .needs_reload_ui(),
)
opts.add_option(
@@ -31,14 +35,14 @@ def on_settings():
opts.add_option(
"pf_appendcomma",
- OptionInfo(True, "Append a comma at the end of each line", **args).info(
- "only active when there are multiple lines"
- ),
+ OptionInfo(True, "Append a comma at the end of each line", **args)
+ .info("only take effect when there are multiple lines")
+ .needs_reload_ui(),
)
opts.add_option(
"pf_onpaste",
- OptionInfo(False, "Trigger a Format when pasting text", **args),
+ OptionInfo(False, "Format the pasted text", **args).needs_reload_ui(),
)
opts.add_option(
@@ -52,7 +56,7 @@ def on_settings():
"max_lines": 1,
"lines": 1,
},
- **args
+ **args,
),
)
@@ -67,7 +71,7 @@ def on_settings():
"max_lines": 16,
"lines": 4,
},
- **args
+ **args,
)
.link("RegExr", "https://regexr.com/")
.info(
@@ -77,5 +81,14 @@ def on_settings():
),
)
+ opts.add_option(
+ "pf_booru",
+ OptionInfo(
+ False,
+ 'Process the "Booru Structure"',
+ **args,
+ ).info("requires format on paste) (Experimental"),
+ )
+
on_ui_settings(on_settings)