|
|
+|with LoRA, no mask|
|
|
+|with Lora, with mask|
|
|
+| |pose|mask|
+| |
|
+
+Sample images are generated with [wd-1-5-beta2-aesthetic-fp16.safetensors](https://huggingface.co/waifu-diffusion/wd-1-5-beta2) and three LoRAs: two character LoRAs (model 1 and 2, masked, weight=1.0) and one style LoRA (model 4, not masked, weight=0.8). Used ControlNet is [diff_control_wd15beta2_pose.safetensors](https://huggingface.co/furusu/ControlNet).
+
+### Difference from 'Latent Couple extension' and 'Composable LoRA'
+
+'Latent Couple extension' masks the output of U-Net for each sub-prompt (AND-separated prompts), while our implementation masks the output of LoRA at each layer of U-Net. The mask is resized according to the tensor shape of each layer, so the resolution is particularly coarse at the deeper layers.
+
+'Composable LoRA' controls the area via 'Latent Couple extension' by switching LoRA on or off for each sub-prompt, but this implementation works alone.
+
+This implementation does not work for all modules in LoRA (the modules associated with Text Encoder are not masked), and due to the coarse resolution, it is not possible to completely separate areas.
+
+## この Web UI 拡張について
+
+LoRA などのネットワークを元の Stable Diffusion に追加し、画像生成を行うための拡張です。現在は LoRA のみ対応しています。
+
+この拡張で使えるのは[sd-scripts](https://github.com/kohya-ss/sd-scripts)リポジトリで学習した LoRA のモデル(\*.ckpt または \*.safetensors)です。他の LoRA リポジトリで学習したモデルは対応していません。
+
+この拡張単体では学習はできません。
+
+将来的に LoRA 以外のネットワークについてもサポートするかもしれません。
+
+## インストール
+
+1. Web UI で "Extensions" タブを開きます。
+1. さらに "Install from URL" タブを開きます。
+1. "URL for extension's git repository" 欄にこのリポジトリの URL を入れます。
+1. "Install"ボタンを押してインストールします。
+1. Web UI を再起動してください。
+
+## 使用法
+
+学習した LoRA のモデル(`*.pt`, `*.ckpt`, `*.safetensors`)を`sd-webui-additional-networks/models/LoRA`に置きます。
+
+Web UI の左下のほうの __"Additional Networks"__ のパネルを開きます。
+
+__"Network module 1"__ で __"LoRA"__ を選択してください。
+
+__"Refresh models"__ で LoRA モデルのリストを更新します。
+
+__"Model 1"__ に学習した LoRA のモデル名を選択します。
+
+__"Weight"__ にこのモデルの __重み__ を指定します(負の値も指定できますがどんな効果があるかは未知数です)。
+
+追加のモデルがある場合は 2~5 に指定してください。モデルは 1~5 の順番で適用されます。
+
+以上を指定すると、それぞれのモデルが適用された状態で画像生成されます。
+
+## X/Y plot
+
+LoRAモデルをX/Y plotの値(選択対象)として使う場合は、カンマ区切りのモデルのリストを与える必要があります。
+
+
+
+モデルのリストは選択肢の隣にあるボタンで取得できます。いずれかのモデルを ``Additional Networks`` の ``Model ?`` で選択しておいてください。そのモデルと同じフォルダにあるモデルの一覧が取得されます。
+
+
+
+モデルのメタデータ(学習時のパラメータなど)をX/Y plotのラベルに使用できます。Web UI上部の ``Settings`` タブを開き、左下から ``Additional Networks`` を選び、 ``Metadata to show`` にカンマ区切りで項目名を指定してください(``ss_learning_rate, ss_num_epochs`` のような感じになります)。使える値は ``Additional Networks`` の ``Network metadata`` 欄にある値です。
+
+
+
+## LoRA の領域別適用 __(実験的機能)__
+
+適用する領域をマスク画像で指定することで、それぞれの LoRA モデルを画像の指定した部分にのみ適用することができます。現在はモデル1~3の3つのみ領域指定可能です。
+
+マスク画像はカラーの画像で、RGBの各チャネルが LoRA モデル1から3に対応します。RGBの各チャネルは重ねることが可能です。たとえば黄色(RとGチャネル)の領域は、モデル1と2が有効になります。ピクセル値0から255がLoRAの適用率0から1に対応します(127なら重み0.5で適用するのと同じになります)。
+
+マスク画像は生成画像サイズにリサイズされて適用されます。
+
+ControlNetと組み合わせることも可能です(細かい位置指定にはControlNetとの組み合わせを推奨します)。
+
+上のサンプルをご参照ください。
+
+### Latent Couple extension、Composable LoRAとの違い
+
+Latent Couple extension はサブプロンプト(ANDで区切られたプロンプト)ごとに、U-Net の出力をマスクしますが、当実装では U-Net の各層で LoRA の出力をマスクします。マスクは各層のテンソル形状に応じてリサイズされるため、深い層では特に解像度が粗くなります。
+
+Composable LoRA はサブプロンプトごとに LoRA の適用有無を切り替えることで Latent Couple extension を経由して影響範囲を制御しますが、当実装では単独で動作します。
+
+当実装はすべての LoRA モジュールに作用するわけではなく(Text Encoder に関連する LoRA モジュールはマスクされません)、また解像度が粗いため、完全に領域を分離することはできません。
+
+## Change History
+
+- 6 Apr. 2023, 2023/4/6
+ - Fix an issue where the `Hires. fix` does not work with mask.
+ - 領域別LoRAでHires. fixが動作しない不具合を修正しました。
+- 30 Mar. 2023, 2023/3/30
+ - Fix an issue where the `Save Metadata` button in the metadata editor does not work even if `Editing Enabled` is checked.
+ - メタデータエディタで `Save Metadata` ボタンが `Editing Enabled` をチェックしても有効にならない不具合を修正しました。
+- 28 Mar. 2023, 2023/3/28
+ - Fix style for Gradio 3.22. Thanks to space-nuko!
+ - Please update Web UI to the latest version.
+ - Gradio 3.22 のスタイルに対応しました。space-nuko氏に感謝します。
+ - Web UIを最新版に更新願います。
+- 11 Mar. 2023, 2023/3/11
+ - Leading spaces in each path in `Extra paths to scan for LoRA models` settings are ignored. Thanks to tsukimiya!
+ - 設定の `Extra paths to scan for LoRA models` の各ディレクトリ名の先頭スペースを無視するよう変更しました。tsukimiya氏に感謝します。
+- 9 Mar. 2023, 2023/3/9: Release v0.5.1
+ - Fix the model saved with `bf16` causes an error. https://github.com/kohya-ss/sd-webui-additional-networks/issues/127
+ - Fix some Conv2d-3x3 LoRA modules are not effective. https://github.com/kohya-ss/sd-scripts/issues/275
+ - Fix LoRA modules with higher dim (rank) > 320 causes an error.
+ - `bf16` で学習されたモデルが読み込めない不具合を修正しました。 https://github.com/kohya-ss/sd-webui-additional-networks/issues/127
+ - いくつかの Conv2d-3x3 LoRA モジュールが有効にならない不具合を修正しました。 https://github.com/kohya-ss/sd-scripts/issues/275
+ - dim (rank) が 320 を超えるLoRAモデルが読み込めない不具合を修正しました。
+- 8 Mar. 2023, 2023/3/8: Release v0.5.0
+ - Support current version of [LoCon](https://github.com/KohakuBlueleaf/LoCon). __Thank you very much KohakuBlueleaf for your help!__
+ - LoCon will be enhanced in the future. Compatibility for future versions is not guaranteed.
+ - Support dynamic LoRA: different dimensions (ranks) and alpha for each module.
+ - Support LoRA for Conv2d (extended to conv2d with a kernel size not 1x1).
+ - Add masked LoRA feature (experimental.)
+ - 現在のバージョンの [LoCon](https://github.com/KohakuBlueleaf/LoCon) をサポートしました。 KohakuBlueleaf 氏のご支援に深く感謝します。
+ - LoCon が将来的に拡張された場合、それらのバージョンでの互換性は保証できません。
+ - dynamic LoRA の機能を追加しました。各モジュールで異なる dimension (rank) や alpha を持つ LoRA が使えます。
+ - Conv2d 拡張 LoRA をサポートしました。カーネルサイズが1x1でない Conv2d を対象とした LoRA が使えます。
+ - LoRA の適用領域指定機能を追加しました(実験的機能)。
+
+
+Please read [Releases](https://github.com/kohya-ss/sd-webui-additional-networks/releases) for recent updates.
+最近の更新情報は [Release](https://github.com/kohya-ss/sd-webui-additional-networks/releases) をご覧ください。
+
diff --git a/ex/additional-networks/_typos.toml b/ex/additional-networks/_typos.toml
new file mode 100644
index 0000000000000000000000000000000000000000..a9290501ca0e2e5e4fd1e8a80c46908c477494d5
--- /dev/null
+++ b/ex/additional-networks/_typos.toml
@@ -0,0 +1,9 @@
+# Files for typos
+# Instruction: https://github.com/marketplace/actions/typos-action#getting-started
+
+[default.extend-identifiers]
+
+[default.extend-words]
+
+[files]
+extend-exclude = ["_typos.toml"]
diff --git a/ex/additional-networks/javascript/additional_networks.js b/ex/additional-networks/javascript/additional_networks.js
new file mode 100644
index 0000000000000000000000000000000000000000..4cbcc66114c422a410a85ecd8be210b4e5a12d44
--- /dev/null
+++ b/ex/additional-networks/javascript/additional_networks.js
@@ -0,0 +1,40 @@
+function addnet_switch_to_txt2img(){
+ switch_to_txt2img();
+ setTimeout(function() { gradioApp().getElementById("additional_networks_txt2img").scrollIntoView(); }, 100);
+ return args_to_array(arguments);
+}
+
+function addnet_switch_to_img2img(){
+ switch_to_img2img();
+ setTimeout(function() { gradioApp().getElementById("additional_networks_img2img").scrollIntoView(); }, 100);
+ return args_to_array(arguments);
+}
+
+function addnet_switch_to_metadata_editor(){
+ Array.from(gradioApp().querySelector('#tabs').querySelectorAll('button')).filter(e => e.textContent.trim() === "Additional Networks")[0].click();
+ return args_to_array(arguments);
+}
+
+function addnet_send_to_metadata_editor() {
+ var module = arguments[0];
+ var model_path = arguments[1];
+
+ if (model_path == "None") {
+ return args_to_array(arguments);
+ }
+
+ console.log(arguments);
+ console.log(model_path);
+ var select = gradioApp().querySelector("#additional_networks_metadata_editor_model > label > select");
+
+ var opt = [...select.options].filter(o => o.text == model_path)[0];
+ if (opt == null) {
+ return;
+ }
+
+ addnet_switch_to_metadata_editor();
+ select.selectedIndex = opt.index;
+ select.dispatchEvent(new Event("change", { bubbles: true }));
+
+ return args_to_array(arguments);
+}
diff --git a/ex/additional-networks/models/lora/.keep b/ex/additional-networks/models/lora/.keep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/ex/additional-networks/preload.py b/ex/additional-networks/preload.py
new file mode 100644
index 0000000000000000000000000000000000000000..b083e2fc9f49584c81752431ac7470e38727e879
--- /dev/null
+++ b/ex/additional-networks/preload.py
@@ -0,0 +1,6 @@
+import os
+from modules import paths
+
+
+def preload(parser):
+ parser.add_argument("--addnet-max-model-count", type=int, help="The maximum number of additional network model can be used.", default=5)
\ No newline at end of file
diff --git a/ex/additional-networks/scripts/additional_networks.py b/ex/additional-networks/scripts/additional_networks.py
new file mode 100644
index 0000000000000000000000000000000000000000..a40ebe915b65f2a34bc69358eaa57daaa71331be
--- /dev/null
+++ b/ex/additional-networks/scripts/additional_networks.py
@@ -0,0 +1,398 @@
+import os
+
+import torch
+import numpy as np
+
+import modules.scripts as scripts
+from modules import shared, script_callbacks
+import gradio as gr
+
+import modules.ui
+from modules.ui_components import ToolButton, FormRow
+
+from scripts import lora_compvis, model_util, metadata_editor, xyz_grid_support
+from scripts.model_util import lora_models, MAX_MODEL_COUNT
+
+
+memo_symbol = "\U0001F4DD" # 📝
+addnet_paste_params = {"txt2img": [], "img2img": []}
+
+
+class Script(scripts.Script):
+ def __init__(self) -> None:
+ super().__init__()
+ self.latest_params = [(None, None, None, None)] * MAX_MODEL_COUNT
+ self.latest_networks = []
+ self.latest_model_hash = ""
+
+ def title(self):
+ return "Additional networks for generating"
+
+ def show(self, is_img2img):
+ return scripts.AlwaysVisible
+
+ def ui(self, is_img2img):
+ global addnet_paste_params
+ # NOTE: Changing the contents of `ctrls` means the XY Grid support may need
+ # to be updated, see xyz_grid_support.py
+ ctrls = []
+ weight_sliders = []
+ model_dropdowns = []
+
+ tabname = "txt2img"
+ if is_img2img:
+ tabname = "img2img"
+
+ paste_params = addnet_paste_params[tabname]
+ paste_params.clear()
+
+ self.infotext_fields = []
+ self.paste_field_names = []
+
+ with gr.Group():
+ with gr.Accordion("Additional Networks", open=False):
+ with gr.Row():
+ enabled = gr.Checkbox(label="Enable", value=False)
+ ctrls.append(enabled)
+ self.infotext_fields.append((enabled, "AddNet Enabled"))
+ separate_weights = gr.Checkbox(label="Separate UNet/Text Encoder weights", value=False)
+ ctrls.append(separate_weights)
+ self.infotext_fields.append((separate_weights, "AddNet Separate Weights"))
+
+ for i in range(MAX_MODEL_COUNT):
+ with FormRow(variant="compact"):
+ module = gr.Dropdown(["LoRA"], label=f"Network module {i+1}", value="LoRA")
+ model = gr.Dropdown(list(lora_models.keys()), label=f"Model {i+1}", value="None")
+ with gr.Row(visible=False):
+ model_path = gr.Textbox(value="None", interactive=False, visible=False)
+ model.change(
+ lambda module, model, i=i: model_util.lora_models.get(model, "None"),
+ inputs=[module, model],
+ outputs=[model_path],
+ )
+
+ # Sending from the script UI to the metadata editor has to bypass
+ # gradio since this button will exit the gr.Blocks context by the
+ # time the metadata editor tab is created, so event handlers can't
+ # be registered on it by then.
+ model_info = ToolButton(value=memo_symbol, elem_id=f"additional_networks_send_to_metadata_editor_{i}")
+ model_info.click(fn=None, _js="addnet_send_to_metadata_editor", inputs=[module, model_path], outputs=[])
+
+ module.change(
+ lambda module, model, i=i: xyz_grid_support.update_axis_params(i, module, model),
+ inputs=[module, model],
+ outputs=[],
+ )
+ model.change(
+ lambda module, model, i=i: xyz_grid_support.update_axis_params(i, module, model),
+ inputs=[module, model],
+ outputs=[],
+ )
+
+ # perhaps there is no user to train Text Encoder only, Weight A is U-Net
+ # The name of label will be changed in future (Weight A and B), but UNet and TEnc for now for easy understanding
+ with gr.Column() as col:
+ weight = gr.Slider(label=f"Weight {i+1}", value=1.0, minimum=-1.0, maximum=2.0, step=0.05, visible=True)
+ weight_unet = gr.Slider(
+ label=f"UNet Weight {i+1}", value=1.0, minimum=-1.0, maximum=2.0, step=0.05, visible=False
+ )
+ weight_tenc = gr.Slider(
+ label=f"TEnc Weight {i+1}", value=1.0, minimum=-1.0, maximum=2.0, step=0.05, visible=False
+ )
+
+ weight.change(lambda w: (w, w), inputs=[weight], outputs=[weight_unet, weight_tenc])
+ paste_params.append({"module": module, "model": model})
+
+ ctrls.extend((module, model, weight_unet, weight_tenc))
+ weight_sliders.extend((weight, weight_unet, weight_tenc))
+ model_dropdowns.append(model)
+
+ self.infotext_fields.extend(
+ [
+ (module, f"AddNet Module {i+1}"),
+ (model, f"AddNet Model {i+1}"),
+ (weight, f"AddNet Weight {i+1}"),
+ (weight_unet, f"AddNet Weight A {i+1}"),
+ (weight_tenc, f"AddNet Weight B {i+1}"),
+ ]
+ )
+
+ for _, field_name in self.infotext_fields:
+ self.paste_field_names.append(field_name)
+
+ def update_weight_sliders(separate, *sliders):
+ updates = []
+ for w, w_unet, w_tenc in zip(*(iter(sliders),) * 3):
+ if not separate:
+ w_unet = w
+ w_tenc = w
+ updates.append(gr.Slider.update(visible=not separate)) # Combined
+ updates.append(gr.Slider.update(visible=separate, value=w_unet)) # UNet
+ updates.append(gr.Slider.update(visible=separate, value=w_tenc)) # TEnc
+ return updates
+
+ separate_weights.change(update_weight_sliders, inputs=[separate_weights] + weight_sliders, outputs=weight_sliders)
+
+ def refresh_all_models(*dropdowns):
+ model_util.update_models()
+ updates = []
+ for dd in dropdowns:
+ if dd in lora_models:
+ selected = dd
+ else:
+ selected = "None"
+ update = gr.Dropdown.update(value=selected, choices=list(lora_models.keys()))
+ updates.append(update)
+ return updates
+
+ # mask for regions
+ with gr.Accordion("Extra args", open=False):
+ with gr.Row():
+ mask_image = gr.Image(label="mask image:")
+ ctrls.append(mask_image)
+
+ refresh_models = gr.Button(value="Refresh models")
+ refresh_models.click(refresh_all_models, inputs=model_dropdowns, outputs=model_dropdowns)
+ ctrls.append(refresh_models)
+
+ return ctrls
+
+ def set_infotext_fields(self, p, params):
+ for i, t in enumerate(params):
+ module, model, weight_unet, weight_tenc = t
+ if model is None or model == "None" or len(model) == 0 or (weight_unet == 0 and weight_tenc == 0):
+ continue
+ p.extra_generation_params.update(
+ {
+ "AddNet Enabled": True,
+ f"AddNet Module {i+1}": module,
+ f"AddNet Model {i+1}": model,
+ f"AddNet Weight A {i+1}": weight_unet,
+ f"AddNet Weight B {i+1}": weight_tenc,
+ }
+ )
+
+ def restore_networks(self, sd_model):
+ unet = sd_model.model.diffusion_model
+ text_encoder = sd_model.cond_stage_model
+
+ if len(self.latest_networks) > 0:
+ print("restoring last networks")
+ for network, _ in self.latest_networks[::-1]:
+ network.restore(text_encoder, unet)
+ self.latest_networks.clear()
+
+ def process_batch(self, p, *args, **kwargs):
+ unet = p.sd_model.model.diffusion_model
+ text_encoder = p.sd_model.cond_stage_model
+
+ if not args[0]:
+ self.restore_networks(p.sd_model)
+ return
+
+ params = []
+ for i, ctrl in enumerate(args[2:]):
+ if i % 4 == 0:
+ param = [ctrl]
+ else:
+ param.append(ctrl)
+ if i % 4 == 3:
+ params.append(param)
+
+ models_changed = len(self.latest_networks) == 0 # no latest network (cleared by check-off)
+ models_changed = models_changed or self.latest_model_hash != p.sd_model.sd_model_hash
+ if not models_changed:
+ for (l_module, l_model, l_weight_unet, l_weight_tenc), (module, model, weight_unet, weight_tenc) in zip(
+ self.latest_params, params
+ ):
+ if l_module != module or l_model != model or l_weight_unet != weight_unet or l_weight_tenc != weight_tenc:
+ models_changed = True
+ break
+
+ if models_changed:
+ self.restore_networks(p.sd_model)
+ self.latest_params = params
+ self.latest_model_hash = p.sd_model.sd_model_hash
+
+ for module, model, weight_unet, weight_tenc in self.latest_params:
+ if model is None or model == "None" or len(model) == 0:
+ continue
+ if weight_unet == 0 and weight_tenc == 0:
+ print(f"ignore because weight is 0: {model}")
+ continue
+
+ model_path = lora_models.get(model, None)
+ if model_path is None:
+ raise RuntimeError(f"model not found: {model}")
+
+ if model_path.startswith('"') and model_path.endswith('"'): # trim '"' at start/end
+ model_path = model_path[1:-1]
+ if not os.path.exists(model_path):
+ print(f"file not found: {model_path}")
+ continue
+
+ print(f"{module} weight_unet: {weight_unet}, weight_tenc: {weight_tenc}, model: {model}")
+ if module == "LoRA":
+ if os.path.splitext(model_path)[1] == ".safetensors":
+ from safetensors.torch import load_file
+
+ du_state_dict = load_file(model_path)
+ else:
+ du_state_dict = torch.load(model_path, map_location="cpu")
+
+ network, info = lora_compvis.create_network_and_apply_compvis(
+ du_state_dict, weight_tenc, weight_unet, text_encoder, unet
+ )
+ # in medvram, device is different for u-net and sd_model, so use sd_model's
+ network.to(p.sd_model.device, dtype=p.sd_model.dtype)
+
+ print(f"LoRA model {model} loaded: {info}")
+ self.latest_networks.append((network, model))
+ if len(self.latest_networks) > 0:
+ print("setting (or sd model) changed. new networks created.")
+
+ # apply mask: currently only top 3 networks are supported
+ if len(self.latest_networks) > 0:
+ mask_image = args[-2]
+ if mask_image is not None:
+ mask_image = mask_image.astype(np.float32) / 255.0
+ print(f"use mask image to control LoRA regions.")
+ for i, (network, model) in enumerate(self.latest_networks[:3]):
+ if not hasattr(network, "set_mask"):
+ continue
+ mask = mask_image[:, :, i] # R,G,B
+ if mask.max() <= 0:
+ continue
+ mask = torch.tensor(mask, dtype=p.sd_model.dtype, device=p.sd_model.device)
+
+ network.set_mask(mask, height=p.height, width=p.width, hr_height=p.hr_upscale_to_y, hr_width=p.hr_upscale_to_x)
+ print(f"apply mask. channel: {i}, model: {model}")
+ else:
+ for network, _ in self.latest_networks:
+ if hasattr(network, "set_mask"):
+ network.set_mask(None)
+
+ self.set_infotext_fields(p, self.latest_params)
+
+
+def on_script_unloaded():
+ if shared.sd_model:
+ for s in scripts.scripts_txt2img.alwayson_scripts:
+ if isinstance(s, Script):
+ s.restore_networks(shared.sd_model)
+ break
+
+
+def on_ui_tabs():
+ global addnet_paste_params
+ with gr.Blocks(analytics_enabled=False) as additional_networks_interface:
+ metadata_editor.setup_ui(addnet_paste_params)
+
+ return [(additional_networks_interface, "Additional Networks", "additional_networks")]
+
+
+def on_ui_settings():
+ section = ("additional_networks", "Additional Networks")
+ shared.opts.add_option(
+ "additional_networks_extra_lora_path",
+ shared.OptionInfo(
+ "",
+ """Extra paths to scan for LoRA models, comma-separated. Paths containing commas must be enclosed in double quotes. In the path, " (one quote) must be replaced by "" (two quotes).""",
+ section=section,
+ ),
+ )
+ shared.opts.add_option(
+ "additional_networks_sort_models_by",
+ shared.OptionInfo(
+ "name",
+ "Sort LoRA models by",
+ gr.Radio,
+ {"choices": ["name", "date", "path name", "rating", "has user metadata"]},
+ section=section,
+ ),
+ )
+ shared.opts.add_option(
+ "additional_networks_reverse_sort_order", shared.OptionInfo(False, "Reverse model sort order", section=section)
+ )
+ shared.opts.add_option(
+ "additional_networks_model_name_filter", shared.OptionInfo("", "LoRA model name filter", section=section)
+ )
+ shared.opts.add_option(
+ "additional_networks_xy_grid_model_metadata",
+ shared.OptionInfo(
+ "",
+ 'Metadata to show in XY-Grid label for Model axes, comma-separated (example: "ss_learning_rate, ss_num_epochs")',
+ section=section,
+ ),
+ )
+ shared.opts.add_option(
+ "additional_networks_hash_thread_count",
+ shared.OptionInfo(1, "# of threads to use for hash calculation (increase if using an SSD)", section=section),
+ )
+ shared.opts.add_option(
+ "additional_networks_back_up_model_when_saving",
+ shared.OptionInfo(True, "Make a backup copy of the model being edited when saving its metadata.", section=section),
+ )
+ shared.opts.add_option(
+ "additional_networks_show_only_safetensors",
+ shared.OptionInfo(False, "Only show .safetensors format models", section=section),
+ )
+ shared.opts.add_option(
+ "additional_networks_show_only_models_with_metadata",
+ shared.OptionInfo(
+ "disabled",
+ "Only show models that have/don't have user-added metadata",
+ gr.Radio,
+ {"choices": ["disabled", "has metadata", "missing metadata"]},
+ section=section,
+ ),
+ )
+ shared.opts.add_option(
+ "additional_networks_max_top_tags", shared.OptionInfo(20, "Max number of top tags to show", section=section)
+ )
+ shared.opts.add_option(
+ "additional_networks_max_dataset_folders", shared.OptionInfo(20, "Max number of dataset folders to show", section=section)
+ )
+
+
+def on_infotext_pasted(infotext, params):
+ if "AddNet Enabled" not in params:
+ params["AddNet Enabled"] = "False"
+
+ # TODO changing "AddNet Separate Weights" does not seem to work
+ if "AddNet Separate Weights" not in params:
+ params["AddNet Separate Weights"] = "False"
+
+ for i in range(MAX_MODEL_COUNT):
+ # Convert combined weight into new format
+ if f"AddNet Weight {i+1}" in params:
+ params[f"AddNet Weight A {i+1}"] = params[f"AddNet Weight {i+1}"]
+ params[f"AddNet Weight B {i+1}"] = params[f"AddNet Weight {i+1}"]
+
+ if f"AddNet Module {i+1}" not in params:
+ params[f"AddNet Module {i+1}"] = "LoRA"
+ if f"AddNet Model {i+1}" not in params:
+ params[f"AddNet Model {i+1}"] = "None"
+ if f"AddNet Weight A {i+1}" not in params:
+ params[f"AddNet Weight A {i+1}"] = "0"
+ if f"AddNet Weight B {i+1}" not in params:
+ params[f"AddNet Weight B {i+1}"] = "0"
+
+ params[f"AddNet Weight {i+1}"] = params[f"AddNet Weight A {i+1}"]
+
+ if params[f"AddNet Weight A {i+1}"] != params[f"AddNet Weight B {i+1}"]:
+ params["AddNet Separate Weights"] = "True"
+
+ # Convert potential legacy name/hash to new format
+ params[f"AddNet Model {i+1}"] = str(model_util.find_closest_lora_model_name(params[f"AddNet Model {i+1}"]))
+
+ xyz_grid_support.update_axis_params(i, params[f"AddNet Module {i+1}"], params[f"AddNet Model {i+1}"])
+
+
+xyz_grid_support.initialize(Script)
+
+
+script_callbacks.on_script_unloaded(on_script_unloaded)
+script_callbacks.on_ui_tabs(on_ui_tabs)
+script_callbacks.on_ui_settings(on_ui_settings)
+script_callbacks.on_infotext_pasted(on_infotext_pasted)
diff --git a/ex/additional-networks/scripts/lora_compvis.py b/ex/additional-networks/scripts/lora_compvis.py
new file mode 100644
index 0000000000000000000000000000000000000000..eb73cdb3c7f797cd9139030e499e0f35996a29d9
--- /dev/null
+++ b/ex/additional-networks/scripts/lora_compvis.py
@@ -0,0 +1,631 @@
+# LoRA network module
+# reference:
+# https://github.com/microsoft/LoRA/blob/main/loralib/layers.py
+# https://github.com/cloneofsimo/lora/blob/master/lora_diffusion/lora.py
+
+import copy
+import math
+import re
+from typing import NamedTuple
+import torch
+
+
+class LoRAInfo(NamedTuple):
+ lora_name: str
+ module_name: str
+ module: torch.nn.Module
+ multiplier: float
+ dim: int
+ alpha: float
+
+
+class LoRAModule(torch.nn.Module):
+ """
+ replaces forward method of the original Linear, instead of replacing the original Linear module.
+ """
+
+ def __init__(self, lora_name, org_module: torch.nn.Module, multiplier=1.0, lora_dim=4, alpha=1):
+ """if alpha == 0 or None, alpha is rank (no scaling)."""
+ super().__init__()
+ self.lora_name = lora_name
+ self.lora_dim = lora_dim
+
+ if org_module.__class__.__name__ == "Conv2d":
+ in_dim = org_module.in_channels
+ out_dim = org_module.out_channels
+
+ # self.lora_dim = min(self.lora_dim, in_dim, out_dim)
+ # if self.lora_dim != lora_dim:
+ # print(f"{lora_name} dim (rank) is changed to: {self.lora_dim}")
+
+ kernel_size = org_module.kernel_size
+ stride = org_module.stride
+ padding = org_module.padding
+ self.lora_down = torch.nn.Conv2d(in_dim, self.lora_dim, kernel_size, stride, padding, bias=False)
+ self.lora_up = torch.nn.Conv2d(self.lora_dim, out_dim, (1, 1), (1, 1), bias=False)
+ else:
+ in_dim = org_module.in_features
+ out_dim = org_module.out_features
+ self.lora_down = torch.nn.Linear(in_dim, self.lora_dim, bias=False)
+ self.lora_up = torch.nn.Linear(self.lora_dim, out_dim, bias=False)
+
+ if type(alpha) == torch.Tensor:
+ alpha = alpha.detach().float().numpy() # without casting, bf16 causes error
+ alpha = self.lora_dim if alpha is None or alpha == 0 else alpha
+ self.scale = alpha / self.lora_dim
+ self.register_buffer("alpha", torch.tensor(alpha)) # 定数として扱える
+
+ # same as microsoft's
+ torch.nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5))
+ torch.nn.init.zeros_(self.lora_up.weight)
+
+ self.multiplier = multiplier
+ self.org_forward = org_module.forward
+ self.org_module = org_module # remove in applying
+ self.mask_dic = None
+ self.mask = None
+ self.mask_area = -1
+
+ def apply_to(self):
+ self.org_forward = self.org_module.forward
+ self.org_module.forward = self.forward
+ del self.org_module
+
+ def set_mask_dic(self, mask_dic):
+ # called before every generation
+
+ # check this module is related to h,w (not context and time emb)
+ if "attn2_to_k" in self.lora_name or "attn2_to_v" in self.lora_name or "emb_layers" in self.lora_name:
+ # print(f"LoRA for context or time emb: {self.lora_name}")
+ self.mask_dic = None
+ else:
+ self.mask_dic = mask_dic
+
+ self.mask = None
+
+ def forward(self, x):
+ """
+ may be cascaded.
+ """
+ if self.mask_dic is None:
+ return self.org_forward(x) + self.lora_up(self.lora_down(x)) * self.multiplier * self.scale
+
+ # regional LoRA
+
+ # calculate lora and get size
+ lx = self.lora_up(self.lora_down(x))
+
+ if len(lx.size()) == 4: # b,c,h,w
+ area = lx.size()[2] * lx.size()[3]
+ else:
+ area = lx.size()[1] # b,seq,dim
+
+ if self.mask is None or self.mask_area != area:
+ # get mask
+ # print(self.lora_name, x.size(), lx.size(), area)
+ mask = self.mask_dic[area]
+ if len(lx.size()) == 3:
+ mask = torch.reshape(mask, (1, -1, 1))
+ self.mask = mask
+ self.mask_area = area
+
+ return self.org_forward(x) + lx * self.multiplier * self.scale * self.mask
+
+
+def create_network_and_apply_compvis(du_state_dict, multiplier_tenc, multiplier_unet, text_encoder, unet, **kwargs):
+ # get device and dtype from unet
+ for module in unet.modules():
+ if module.__class__.__name__ == "Linear":
+ param: torch.nn.Parameter = module.weight
+ # device = param.device
+ dtype = param.dtype
+ break
+
+ # get dims (rank) and alpha from state dict
+ modules_dim = {}
+ modules_alpha = {}
+ for key, value in du_state_dict.items():
+ if "." not in key:
+ continue
+
+ lora_name = key.split(".")[0]
+ if "alpha" in key:
+ modules_alpha[lora_name] = float(value.detach().to(torch.float).cpu().numpy())
+ elif "lora_down" in key:
+ dim = value.size()[0]
+ modules_dim[lora_name] = dim
+
+ # support old LoRA without alpha
+ for key in modules_dim.keys():
+ if key not in modules_alpha:
+ modules_alpha[key] = modules_dim[key]
+
+ print(
+ f"dimension: {set(modules_dim.values())}, alpha: {set(modules_alpha.values())}, multiplier_unet: {multiplier_unet}, multiplier_tenc: {multiplier_tenc}"
+ )
+
+ # if network_dim is None:
+ # print(f"The selected model is not LoRA or not trained by `sd-scripts`?")
+ # network_dim = 4
+ # network_alpha = 1
+
+ # create, apply and load weights
+ network = LoRANetworkCompvis(text_encoder, unet, multiplier_tenc, multiplier_unet, modules_dim, modules_alpha)
+ state_dict = network.apply_lora_modules(du_state_dict) # some weights are applied to text encoder
+ network.to(dtype) # with this, if error comes from next line, the model will be used
+ info = network.load_state_dict(state_dict, strict=False)
+
+ # remove redundant warnings
+ if len(info.missing_keys) > 4:
+ missing_keys = []
+ alpha_count = 0
+ for key in info.missing_keys:
+ if "alpha" not in key:
+ missing_keys.append(key)
+ else:
+ if alpha_count == 0:
+ missing_keys.append(key)
+ alpha_count += 1
+ if alpha_count > 1:
+ missing_keys.append(
+ f"... and {alpha_count-1} alphas. The model doesn't have alpha, use dim (rannk) as alpha. You can ignore this message."
+ )
+
+ info = torch.nn.modules.module._IncompatibleKeys(missing_keys, info.unexpected_keys)
+
+ return network, info
+
+
+class LoRANetworkCompvis(torch.nn.Module):
+ # UNET_TARGET_REPLACE_MODULE = ["Transformer2DModel", "Attention"]
+ # TEXT_ENCODER_TARGET_REPLACE_MODULE = ["CLIPAttention", "CLIPMLP"]
+ UNET_TARGET_REPLACE_MODULE = ["SpatialTransformer", "ResBlock", "Downsample", "Upsample"] # , "Attention"]
+ TEXT_ENCODER_TARGET_REPLACE_MODULE = ["ResidualAttentionBlock", "CLIPAttention", "CLIPMLP"]
+
+ LORA_PREFIX_UNET = "lora_unet"
+ LORA_PREFIX_TEXT_ENCODER = "lora_te"
+
+ @classmethod
+ def convert_diffusers_name_to_compvis(cls, v2, du_name):
+ """
+ convert diffusers's LoRA name to CompVis
+ """
+ cv_name = None
+ if "lora_unet_" in du_name:
+ m = re.search(r"_down_blocks_(\d+)_attentions_(\d+)_(.+)", du_name)
+ if m:
+ du_block_index = int(m.group(1))
+ du_attn_index = int(m.group(2))
+ du_suffix = m.group(3)
+
+ cv_index = 1 + du_block_index * 3 + du_attn_index # 1,2, 4,5, 7,8
+ cv_name = f"lora_unet_input_blocks_{cv_index}_1_{du_suffix}"
+ return cv_name
+
+ m = re.search(r"_mid_block_attentions_(\d+)_(.+)", du_name)
+ if m:
+ du_suffix = m.group(2)
+ cv_name = f"lora_unet_middle_block_1_{du_suffix}"
+ return cv_name
+
+ m = re.search(r"_up_blocks_(\d+)_attentions_(\d+)_(.+)", du_name)
+ if m:
+ du_block_index = int(m.group(1))
+ du_attn_index = int(m.group(2))
+ du_suffix = m.group(3)
+
+ cv_index = du_block_index * 3 + du_attn_index # 3,4,5, 6,7,8, 9,10,11
+ cv_name = f"lora_unet_output_blocks_{cv_index}_1_{du_suffix}"
+ return cv_name
+
+ m = re.search(r"_down_blocks_(\d+)_resnets_(\d+)_(.+)", du_name)
+ if m:
+ du_block_index = int(m.group(1))
+ du_res_index = int(m.group(2))
+ du_suffix = m.group(3)
+ cv_suffix = {
+ "conv1": "in_layers_2",
+ "conv2": "out_layers_3",
+ "time_emb_proj": "emb_layers_1",
+ "conv_shortcut": "skip_connection",
+ }[du_suffix]
+
+ cv_index = 1 + du_block_index * 3 + du_res_index # 1,2, 4,5, 7,8
+ cv_name = f"lora_unet_input_blocks_{cv_index}_0_{cv_suffix}"
+ return cv_name
+
+ m = re.search(r"_down_blocks_(\d+)_downsamplers_0_conv", du_name)
+ if m:
+ block_index = int(m.group(1))
+ cv_index = 3 + block_index * 3
+ cv_name = f"lora_unet_input_blocks_{cv_index}_0_op"
+ return cv_name
+
+ m = re.search(r"_mid_block_resnets_(\d+)_(.+)", du_name)
+ if m:
+ index = int(m.group(1))
+ du_suffix = m.group(2)
+ cv_suffix = {
+ "conv1": "in_layers_2",
+ "conv2": "out_layers_3",
+ "time_emb_proj": "emb_layers_1",
+ "conv_shortcut": "skip_connection",
+ }[du_suffix]
+ cv_name = f"lora_unet_middle_block_{index*2}_{cv_suffix}"
+ return cv_name
+
+ m = re.search(r"_up_blocks_(\d+)_resnets_(\d+)_(.+)", du_name)
+ if m:
+ du_block_index = int(m.group(1))
+ du_res_index = int(m.group(2))
+ du_suffix = m.group(3)
+ cv_suffix = {
+ "conv1": "in_layers_2",
+ "conv2": "out_layers_3",
+ "time_emb_proj": "emb_layers_1",
+ "conv_shortcut": "skip_connection",
+ }[du_suffix]
+
+ cv_index = du_block_index * 3 + du_res_index # 1,2, 4,5, 7,8
+ cv_name = f"lora_unet_output_blocks_{cv_index}_0_{cv_suffix}"
+ return cv_name
+
+ m = re.search(r"_up_blocks_(\d+)_upsamplers_0_conv", du_name)
+ if m:
+ block_index = int(m.group(1))
+ cv_index = block_index * 3 + 2
+ cv_name = f"lora_unet_output_blocks_{cv_index}_{bool(block_index)+1}_conv"
+ return cv_name
+
+ elif "lora_te_" in du_name:
+ m = re.search(r"_model_encoder_layers_(\d+)_(.+)", du_name)
+ if m:
+ du_block_index = int(m.group(1))
+ du_suffix = m.group(2)
+
+ cv_index = du_block_index
+ if v2:
+ if "mlp_fc1" in du_suffix:
+ cv_name = (
+ f"lora_te_wrapped_model_transformer_resblocks_{cv_index}_{du_suffix.replace('mlp_fc1', 'mlp_c_fc')}"
+ )
+ elif "mlp_fc2" in du_suffix:
+ cv_name = (
+ f"lora_te_wrapped_model_transformer_resblocks_{cv_index}_{du_suffix.replace('mlp_fc2', 'mlp_c_proj')}"
+ )
+ elif "self_attn":
+ # handled later
+ cv_name = f"lora_te_wrapped_model_transformer_resblocks_{cv_index}_{du_suffix.replace('self_attn', 'attn')}"
+ else:
+ cv_name = f"lora_te_wrapped_transformer_text_model_encoder_layers_{cv_index}_{du_suffix}"
+
+ assert cv_name is not None, f"conversion failed: {du_name}. the model may not be trained by `sd-scripts`."
+ return cv_name
+
+ @classmethod
+ def convert_state_dict_name_to_compvis(cls, v2, state_dict):
+ """
+ convert keys in state dict to load it by load_state_dict
+ """
+ new_sd = {}
+ for key, value in state_dict.items():
+ tokens = key.split(".")
+ compvis_name = LoRANetworkCompvis.convert_diffusers_name_to_compvis(v2, tokens[0])
+ new_key = compvis_name + "." + ".".join(tokens[1:])
+
+ new_sd[new_key] = value
+
+ return new_sd
+
+ def __init__(self, text_encoder, unet, multiplier_tenc=1.0, multiplier_unet=1.0, modules_dim=None, modules_alpha=None) -> None:
+ super().__init__()
+ self.multiplier_unet = multiplier_unet
+ self.multiplier_tenc = multiplier_tenc
+ self.latest_mask_info = None
+
+ # check v1 or v2
+ self.v2 = False
+ for _, module in text_encoder.named_modules():
+ for _, child_module in module.named_modules():
+ if child_module.__class__.__name__ == "MultiheadAttention":
+ self.v2 = True
+ break
+ if self.v2:
+ break
+
+ # convert lora name to CompVis and get dim and alpha
+ comp_vis_loras_dim_alpha = {}
+ for du_lora_name in modules_dim.keys():
+ dim = modules_dim[du_lora_name]
+ alpha = modules_alpha[du_lora_name]
+ comp_vis_lora_name = LoRANetworkCompvis.convert_diffusers_name_to_compvis(self.v2, du_lora_name)
+ comp_vis_loras_dim_alpha[comp_vis_lora_name] = (dim, alpha)
+
+ # create module instances
+ def create_modules(prefix, root_module: torch.nn.Module, target_replace_modules, multiplier):
+ loras = []
+ replaced_modules = []
+ for name, module in root_module.named_modules():
+ if module.__class__.__name__ in target_replace_modules:
+ for child_name, child_module in module.named_modules():
+ # enumerate all Linear and Conv2d
+ if child_module.__class__.__name__ == "Linear" or child_module.__class__.__name__ == "Conv2d":
+ lora_name = prefix + "." + name + "." + child_name
+ lora_name = lora_name.replace(".", "_")
+ if "_resblocks_23_" in lora_name: # ignore last block in StabilityAi Text Encoder
+ break
+ if lora_name not in comp_vis_loras_dim_alpha:
+ continue
+
+ dim, alpha = comp_vis_loras_dim_alpha[lora_name]
+ lora = LoRAModule(lora_name, child_module, multiplier, dim, alpha)
+ loras.append(lora)
+
+ replaced_modules.append(child_module)
+ elif child_module.__class__.__name__ == "MultiheadAttention":
+ # make four modules: not replacing forward method but merge weights later
+ for suffix in ["q_proj", "k_proj", "v_proj", "out_proj"]:
+ module_name = prefix + "." + name + "." + child_name # ~.attn
+ module_name = module_name.replace(".", "_")
+ if "_resblocks_23_" in module_name: # ignore last block in StabilityAi Text Encoder
+ break
+
+ lora_name = module_name + "_" + suffix
+ if lora_name not in comp_vis_loras_dim_alpha:
+ continue
+ dim, alpha = comp_vis_loras_dim_alpha[lora_name]
+ lora_info = LoRAInfo(lora_name, module_name, child_module, multiplier, dim, alpha)
+ loras.append(lora_info)
+
+ replaced_modules.append(child_module)
+ return loras, replaced_modules
+
+ self.text_encoder_loras, te_rep_modules = create_modules(
+ LoRANetworkCompvis.LORA_PREFIX_TEXT_ENCODER,
+ text_encoder,
+ LoRANetworkCompvis.TEXT_ENCODER_TARGET_REPLACE_MODULE,
+ self.multiplier_tenc,
+ )
+ print(f"create LoRA for Text Encoder: {len(self.text_encoder_loras)} modules.")
+
+ self.unet_loras, unet_rep_modules = create_modules(
+ LoRANetworkCompvis.LORA_PREFIX_UNET, unet, LoRANetworkCompvis.UNET_TARGET_REPLACE_MODULE, self.multiplier_unet
+ )
+ print(f"create LoRA for U-Net: {len(self.unet_loras)} modules.")
+
+ # make backup of original forward/weights, if multiple modules are applied, do in 1st module only
+ backed_up = False # messaging purpose only
+ for rep_module in te_rep_modules + unet_rep_modules:
+ if (
+ rep_module.__class__.__name__ == "MultiheadAttention"
+ ): # multiple MHA modules are in list, prevent to backed up forward
+ if not hasattr(rep_module, "_lora_org_weights"):
+ # avoid updating of original weights. state_dict is reference to original weights
+ rep_module._lora_org_weights = copy.deepcopy(rep_module.state_dict())
+ backed_up = True
+ elif not hasattr(rep_module, "_lora_org_forward"):
+ rep_module._lora_org_forward = rep_module.forward
+ backed_up = True
+ if backed_up:
+ print("original forward/weights is backed up.")
+
+ # assertion
+ names = set()
+ for lora in self.text_encoder_loras + self.unet_loras:
+ assert lora.lora_name not in names, f"duplicated lora name: {lora.lora_name}"
+ names.add(lora.lora_name)
+
+ def restore(self, text_encoder, unet):
+ # restore forward/weights from property for all modules
+ restored = False # messaging purpose only
+ modules = []
+ modules.extend(text_encoder.modules())
+ modules.extend(unet.modules())
+ for module in modules:
+ if hasattr(module, "_lora_org_forward"):
+ module.forward = module._lora_org_forward
+ del module._lora_org_forward
+ restored = True
+ if hasattr(
+ module, "_lora_org_weights"
+ ): # module doesn't have forward and weights at same time currently, but supports it for future changing
+ module.load_state_dict(module._lora_org_weights)
+ del module._lora_org_weights
+ restored = True
+
+ if restored:
+ print("original forward/weights is restored.")
+
+ def apply_lora_modules(self, du_state_dict):
+ # conversion 1st step: convert names in state_dict
+ state_dict = LoRANetworkCompvis.convert_state_dict_name_to_compvis(self.v2, du_state_dict)
+
+ # check state_dict has text_encoder or unet
+ weights_has_text_encoder = weights_has_unet = False
+ for key in state_dict.keys():
+ if key.startswith(LoRANetworkCompvis.LORA_PREFIX_TEXT_ENCODER):
+ weights_has_text_encoder = True
+ elif key.startswith(LoRANetworkCompvis.LORA_PREFIX_UNET):
+ weights_has_unet = True
+ if weights_has_text_encoder and weights_has_unet:
+ break
+
+ apply_text_encoder = weights_has_text_encoder
+ apply_unet = weights_has_unet
+
+ if apply_text_encoder:
+ print("enable LoRA for text encoder")
+ else:
+ self.text_encoder_loras = []
+
+ if apply_unet:
+ print("enable LoRA for U-Net")
+ else:
+ self.unet_loras = []
+
+ # add modules to network: this makes state_dict can be got from LoRANetwork
+ mha_loras = {}
+ for lora in self.text_encoder_loras + self.unet_loras:
+ if type(lora) == LoRAModule:
+ lora.apply_to() # ensure remove reference to original Linear: reference makes key of state_dict
+ self.add_module(lora.lora_name, lora)
+ else:
+ # SD2.x MultiheadAttention merge weights to MHA weights
+ lora_info: LoRAInfo = lora
+ if lora_info.module_name not in mha_loras:
+ mha_loras[lora_info.module_name] = {}
+
+ lora_dic = mha_loras[lora_info.module_name]
+ lora_dic[lora_info.lora_name] = lora_info
+ if len(lora_dic) == 4:
+ # calculate and apply
+ module = lora_info.module
+ module_name = lora_info.module_name
+ w_q_dw = state_dict.get(module_name + "_q_proj.lora_down.weight")
+ if w_q_dw is not None: # corresponding LoRA module exists
+ w_q_up = state_dict[module_name + "_q_proj.lora_up.weight"]
+ w_k_dw = state_dict[module_name + "_k_proj.lora_down.weight"]
+ w_k_up = state_dict[module_name + "_k_proj.lora_up.weight"]
+ w_v_dw = state_dict[module_name + "_v_proj.lora_down.weight"]
+ w_v_up = state_dict[module_name + "_v_proj.lora_up.weight"]
+ w_out_dw = state_dict[module_name + "_out_proj.lora_down.weight"]
+ w_out_up = state_dict[module_name + "_out_proj.lora_up.weight"]
+ q_lora_info = lora_dic[module_name + "_q_proj"]
+ k_lora_info = lora_dic[module_name + "_k_proj"]
+ v_lora_info = lora_dic[module_name + "_v_proj"]
+ out_lora_info = lora_dic[module_name + "_out_proj"]
+
+ sd = module.state_dict()
+ qkv_weight = sd["in_proj_weight"]
+ out_weight = sd["out_proj.weight"]
+ dev = qkv_weight.device
+
+ def merge_weights(l_info, weight, up_weight, down_weight):
+ # calculate in float
+ scale = l_info.alpha / l_info.dim
+ dtype = weight.dtype
+ weight = (
+ weight.float()
+ + l_info.multiplier
+ * (up_weight.to(dev, dtype=torch.float) @ down_weight.to(dev, dtype=torch.float))
+ * scale
+ )
+ weight = weight.to(dtype)
+ return weight
+
+ q_weight, k_weight, v_weight = torch.chunk(qkv_weight, 3)
+ if q_weight.size()[1] == w_q_up.size()[0]:
+ q_weight = merge_weights(q_lora_info, q_weight, w_q_up, w_q_dw)
+ k_weight = merge_weights(k_lora_info, k_weight, w_k_up, w_k_dw)
+ v_weight = merge_weights(v_lora_info, v_weight, w_v_up, w_v_dw)
+ qkv_weight = torch.cat([q_weight, k_weight, v_weight])
+
+ out_weight = merge_weights(out_lora_info, out_weight, w_out_up, w_out_dw)
+
+ sd["in_proj_weight"] = qkv_weight.to(dev)
+ sd["out_proj.weight"] = out_weight.to(dev)
+
+ lora_info.module.load_state_dict(sd)
+ else:
+ # different dim, version mismatch
+ print(f"shape of weight is different: {module_name}. SD version may be different")
+
+ for t in ["q", "k", "v", "out"]:
+ del state_dict[f"{module_name}_{t}_proj.lora_down.weight"]
+ del state_dict[f"{module_name}_{t}_proj.lora_up.weight"]
+ alpha_key = f"{module_name}_{t}_proj.alpha"
+ if alpha_key in state_dict:
+ del state_dict[alpha_key]
+ else:
+ # corresponding weight not exists: version mismatch
+ pass
+
+ # conversion 2nd step: convert weight's shape (and handle wrapped)
+ state_dict = self.convert_state_dict_shape_to_compvis(state_dict)
+
+ return state_dict
+
+ def convert_state_dict_shape_to_compvis(self, state_dict):
+ # shape conversion
+ current_sd = self.state_dict() # to get target shape
+ wrapped = False
+ count = 0
+ for key in list(state_dict.keys()):
+ if key not in current_sd:
+ continue # might be error or another version
+ if "wrapped" in key:
+ wrapped = True
+
+ value: torch.Tensor = state_dict[key]
+ if value.size() != current_sd[key].size():
+ # print(f"convert weights shape: {key}, from: {value.size()}, {len(value.size())}")
+ count += 1
+ if len(value.size()) == 4:
+ value = value.squeeze(3).squeeze(2)
+ else:
+ value = value.unsqueeze(2).unsqueeze(3)
+ state_dict[key] = value
+ if tuple(value.size()) != tuple(current_sd[key].size()):
+ print(
+ f"weight's shape is different: {key} expected {current_sd[key].size()} found {value.size()}. SD version may be different"
+ )
+ del state_dict[key]
+ print(f"shapes for {count} weights are converted.")
+
+ # convert wrapped
+ if not wrapped:
+ print("remove 'wrapped' from keys")
+ for key in list(state_dict.keys()):
+ if "_wrapped_" in key:
+ new_key = key.replace("_wrapped_", "_")
+ state_dict[new_key] = state_dict[key]
+ del state_dict[key]
+
+ return state_dict
+
+ def set_mask(self, mask, height=None, width=None, hr_height=None, hr_width=None):
+ if mask is None:
+ # clear latest mask
+ # print("clear mask")
+ self.latest_mask_info = None
+ for lora in self.unet_loras:
+ lora.set_mask_dic(None)
+ return
+
+ # check mask image and h/w are same
+ if (
+ self.latest_mask_info is not None
+ and torch.equal(mask, self.latest_mask_info[0])
+ and (height, width, hr_height, hr_width) == self.latest_mask_info[1:]
+ ):
+ # print("mask not changed")
+ return
+
+ self.latest_mask_info = (mask, height, width, hr_height, hr_width)
+
+ org_dtype = mask.dtype
+ if mask.dtype == torch.bfloat16:
+ mask = mask.to(torch.float)
+
+ mask_dic = {}
+ mask = mask.unsqueeze(0).unsqueeze(1) # b(1),c(1),h,w
+
+ def resize_add(mh, mw):
+ # print(mh, mw, mh * mw)
+ m = torch.nn.functional.interpolate(mask, (mh, mw), mode="bilinear") # doesn't work in bf16
+ m = m.to(org_dtype)
+ mask_dic[mh * mw] = m
+
+ for h, w in [(height, width), (hr_height, hr_width)]:
+ h = h // 8
+ w = w // 8
+ for i in range(4):
+ resize_add(h, w)
+ if h % 2 == 1 or w % 2 == 1: # add extra shape if h/w is not divisible by 2
+ resize_add(h + h % 2, w + w % 2)
+ h = (h + 1) // 2
+ w = (w + 1) // 2
+
+ for lora in self.unet_loras:
+ lora.set_mask_dic(mask_dic)
+ return
diff --git a/ex/additional-networks/scripts/metadata_editor.py b/ex/additional-networks/scripts/metadata_editor.py
new file mode 100644
index 0000000000000000000000000000000000000000..550c586a3c36ed72d8553df8820bdc0e569a237b
--- /dev/null
+++ b/ex/additional-networks/scripts/metadata_editor.py
@@ -0,0 +1,484 @@
+import os
+import json
+import sys
+import io
+import base64
+import platform
+import subprocess as sp
+from PIL import PngImagePlugin, Image
+
+from modules import shared
+import gradio as gr
+
+import modules.ui
+from modules.ui_components import ToolButton
+import modules.extras
+import modules.generation_parameters_copypaste as parameters_copypaste
+
+from scripts import safetensors_hack, model_util
+from scripts.model_util import MAX_MODEL_COUNT
+
+
+folder_symbol = '\U0001f4c2' # 📂
+keycap_symbols = [
+ '\u0031\ufe0f\u20e3', # 1️⃣
+ '\u0032\ufe0f\u20e3', # 2️⃣
+ '\u0033\ufe0f\u20e3', # 3️⃣
+ '\u0034\ufe0f\u20e3', # 4️⃣
+ '\u0035\ufe0f\u20e3', # 5️⃣
+ '\u0036\ufe0f\u20e3', # 6️⃣
+ '\u0037\ufe0f\u20e3', # 7️⃣
+ '\u0038\ufe0f\u20e3', # 8️
+ '\u0039\ufe0f\u20e3', # 9️
+ '\u1f51f' # 🔟
+]
+
+
+def write_webui_model_preview_image(model_path, image):
+ basename, ext = os.path.splitext(model_path)
+ preview_path = f"{basename}.png"
+
+ # Copy any text-only metadata
+ use_metadata = False
+ metadata = PngImagePlugin.PngInfo()
+ for key, value in image.info.items():
+ if isinstance(key, str) and isinstance(value, str):
+ metadata.add_text(key, value)
+ use_metadata = True
+
+ image.save(preview_path, "PNG", pnginfo=(metadata if use_metadata else None))
+
+
+def delete_webui_model_preview_image(model_path):
+ basename, ext = os.path.splitext(model_path)
+ preview_paths = [f"{basename}.preview.png", f"{basename}.png"]
+
+ for preview_path in preview_paths:
+ if os.path.isfile(preview_path):
+ os.unlink(preview_path)
+
+
+def decode_base64_to_pil(encoding):
+ if encoding.startswith("data:image/"):
+ encoding = encoding.split(";")[1].split(",")[1]
+ return Image.open(io.BytesIO(base64.b64decode(encoding)))
+
+
+def encode_pil_to_base64(image):
+ with io.BytesIO() as output_bytes:
+
+ # Copy any text-only metadata
+ use_metadata = False
+ metadata = PngImagePlugin.PngInfo()
+ for key, value in image.info.items():
+ if isinstance(key, str) and isinstance(value, str):
+ metadata.add_text(key, value)
+ use_metadata = True
+
+ image.save(
+ output_bytes, "PNG", pnginfo=(metadata if use_metadata else None)
+ )
+ bytes_data = output_bytes.getvalue()
+ return base64.b64encode(bytes_data)
+
+
+def open_folder(f):
+ if not os.path.exists(f):
+ print(f'Folder "{f}" does not exist. After you create an image, the folder will be created.')
+ return
+ elif not os.path.isdir(f):
+ print(f"""
+WARNING
+An open_folder request was made with an argument that is not a folder.
+This could be an error or a malicious attempt to run code on your computer.
+Requested path was: {f}
+""", file=sys.stderr)
+ return
+
+ if not shared.cmd_opts.hide_ui_dir_config:
+ path = os.path.normpath(f)
+ if platform.system() == "Windows":
+ os.startfile(path)
+ elif platform.system() == "Darwin":
+ sp.Popen(["open", path])
+ elif "microsoft-standard-WSL2" in platform.uname().release:
+ sp.Popen(["wsl-open", path])
+ else:
+ sp.Popen(["xdg-open", path])
+
+
+def copy_metadata_to_all(module, model_path, copy_dir, same_session_only, missing_meta_only, cover_image):
+ """
+Given a model with metadata, copies that metadata to all models in copy_dir.
+
+:str module: Module name ("LoRA")
+:str model: Model key in lora_models ("MyModel(123456abcdef)")
+:str copy_dir: Directory to copy to
+:bool same_session_only: Only copy to modules with the same ss_session_id
+:bool missing_meta_only: Only copy to modules that are missing user metadata
+:Optional[Image] cover_image: Cover image to embed in the file as base64
+:returns: gr.HTML.update()
+ """
+ if model_path == "None":
+ return "No model selected."
+
+ if not os.path.isfile(model_path):
+ return f"Model path not found: {model_path}"
+
+ model_path = os.path.realpath(model_path)
+
+ if os.path.splitext(model_path)[1] != ".safetensors":
+ return "Model is not in .safetensors format."
+
+ if not os.path.isdir(copy_dir):
+ return "Please provide a directory containing models in .safetensors format."
+
+ print(f"[MetadataEditor] Copying metadata to models in {copy_dir}.")
+ metadata = model_util.read_model_metadata(model_path, module)
+ count = 0
+ for entry in os.scandir(copy_dir):
+ if entry.is_file():
+ path = os.path.realpath(os.path.join(copy_dir, entry.name))
+ if path != model_path and model_util.is_safetensors(path):
+ if same_session_only:
+ other_metadata = safetensors_hack.read_metadata(path)
+ if missing_meta_only and other_metadata.get("ssmd_display_name", "").strip():
+ print(f"[MetadataEditor] Skipping {path} as it already has metadata")
+ continue
+
+ session_id = metadata.get("ss_session_id", None)
+ other_session_id = other_metadata.get("ss_session_id", None)
+ if session_id is None or other_session_id is None or session_id != other_session_id:
+ continue
+
+ updates = {
+ "ssmd_cover_images": "[]",
+ "ssmd_display_name": "",
+ "ssmd_version": "",
+ "ssmd_keywords": "",
+ "ssmd_author": "",
+ "ssmd_source": "",
+ "ssmd_description": "",
+ "ssmd_rating": "0",
+ "ssmd_tags": "",
+ }
+
+ for k, v in metadata.items():
+ if k.startswith("ssmd_") and k != "ssmd_cover_images":
+ updates[k] = v
+
+ model_util.write_model_metadata(path, module, updates)
+ count += 1
+
+ print(f"[MetadataEditor] Updated {count} models in directory {copy_dir}.")
+ return f"Updated {count} models in directory {copy_dir}."
+
+
+def load_cover_image(model_path, metadata):
+ """
+Loads a cover image either from embedded metadata or an image file with
+.preview.png/.png format
+ """
+ cover_images = json.loads(metadata.get("ssmd_cover_images", "[]"))
+ cover_image = None
+ if len(cover_images) > 0:
+ print("[MetadataEditor] Loading embedded cover image.")
+ cover_image = decode_base64_to_pil(cover_images[0])
+ else:
+ basename, ext = os.path.splitext(model_path)
+
+ preview_paths = [f"{basename}.preview.png", f"{basename}.png"]
+
+ for preview_path in preview_paths:
+ if os.path.isfile(preview_path):
+ print(f"[MetadataEditor] Loading webui preview image: {preview_path}")
+ cover_image = Image.open(preview_path)
+
+ return cover_image
+
+
+# Dummy value since gr.Dataframe cannot handle an empty list
+# https://github.com/gradio-app/gradio/issues/3182
+unknown_folders = ["(Unknown)", 0, 0, 0]
+
+
+def refresh_metadata(module, model_path):
+ """
+Reads metadata from the model on disk and updates all Gradio components
+ """
+ if model_path == "None":
+ return {}, None, "", "", "", "", "", 0, "", "", "", "", "", {}, [unknown_folders]
+
+ if not os.path.isfile(model_path):
+ return {"info": f"Model path not found: {model_path}"}, None, "", "", "", "", "", 0, "", "", "", "", "", {}, [unknown_folders]
+
+ if os.path.splitext(model_path)[1] != ".safetensors":
+ return {"info": "Model is not in .safetensors format."}, None, "", "", "", "", "", 0, "", "", "", "", "", {}, [unknown_folders]
+
+ metadata = model_util.read_model_metadata(model_path, module)
+
+ if metadata is None:
+ training_params = {}
+ metadata = {}
+ else:
+ training_params = {k: v for k, v in metadata.items() if k.startswith("ss_")}
+
+ cover_image = load_cover_image(model_path, metadata)
+
+ display_name = metadata.get("ssmd_display_name", "")
+ author = metadata.get("ssmd_author", "")
+ #version = metadata.get("ssmd_version", "")
+ source = metadata.get("ssmd_source", "")
+ keywords = metadata.get("ssmd_keywords", "")
+ description = metadata.get("ssmd_description", "")
+ rating = int(metadata.get("ssmd_rating", "0"))
+ tags = metadata.get("ssmd_tags", "")
+ model_hash = metadata.get("sshs_model_hash", model_util.cache("hashes").get(model_path, {}).get("model", ""))
+ legacy_hash = metadata.get("sshs_legacy_hash", model_util.cache("hashes").get(model_path, {}).get("legacy", ""))
+
+ top_tags = {}
+ if "ss_tag_frequency" in training_params:
+ tag_frequency = json.loads(training_params.pop("ss_tag_frequency"))
+ count_max = 0
+ for dir, frequencies in tag_frequency.items():
+ for tag, count in frequencies.items():
+ tag = tag.strip()
+ existing = top_tags.get(tag, 0)
+ top_tags[tag] = count + existing
+ if len(top_tags) > 0:
+ top_tags = dict(sorted(top_tags.items(), key=lambda x: x[1], reverse=True))
+
+ count_max = max(top_tags.values())
+ top_tags = {k: float(v / count_max) for k, v in top_tags.items()}
+
+ dataset_folders = []
+ if "ss_dataset_dirs" in training_params:
+ dataset_dirs = json.loads(training_params.pop("ss_dataset_dirs"))
+ for dir, counts in dataset_dirs.items():
+ img_count = int(counts["img_count"])
+ n_repeats = int(counts["n_repeats"])
+ dataset_folders.append([dir, img_count, n_repeats, img_count * n_repeats])
+ if dataset_folders:
+ dataset_folders.append(["(Total)", sum(r[1] for r in dataset_folders), sum(r[2] for r in dataset_folders), sum(r[3] for r in dataset_folders)])
+ else:
+ dataset_folders.append(unknown_folders)
+
+ return training_params, cover_image, display_name, author, source, keywords, description, rating, tags, model_hash, legacy_hash, model_path, os.path.dirname(model_path), top_tags, dataset_folders
+
+
+def save_metadata(module, model_path, cover_image, display_name, author, source, keywords, description, rating, tags):
+ """
+Writes metadata from the Gradio components to the model file
+ """
+ if model_path == "None":
+ return "No model selected.", "", ""
+
+ if not os.path.isfile(model_path):
+ return f"file not found: {model_path}", "", ""
+
+ if os.path.splitext(model_path)[1] != ".safetensors":
+ return "Model is not in .safetensors format", "", ""
+
+ metadata = safetensors_hack.read_metadata(model_path)
+ model_hash = safetensors_hack.hash_file(model_path)
+ legacy_hash = model_util.get_legacy_hash(metadata, model_path)
+
+ # TODO: Support multiple images
+ # Blocked on gradio not having a gallery upload option
+ # https://github.com/gradio-app/gradio/issues/1379
+ cover_images = []
+ if cover_image is not None:
+ cover_images.append(encode_pil_to_base64(cover_image).decode("ascii"))
+
+ # NOTE: User-specified metadata should NOT be prefixed with "ss_". This is
+ # to maintain backwards compatibility with the old hashing method. "ss_"
+ # should be used for training parameters that will never be manually
+ # updated on the model.
+ updates = {
+ "ssmd_cover_images": json.dumps(cover_images),
+ "ssmd_display_name": display_name,
+ "ssmd_author": author,
+ # "ssmd_version": version,
+ "ssmd_source": source,
+ "ssmd_keywords": keywords,
+ "ssmd_description": description,
+ "ssmd_rating": rating,
+ "ssmd_tags": tags,
+ "sshs_model_hash": model_hash,
+ "sshs_legacy_hash": legacy_hash
+ }
+
+ model_util.write_model_metadata(model_path, module, updates)
+ if cover_image is None:
+ delete_webui_model_preview_image(model_path)
+ else:
+ write_webui_model_preview_image(model_path, cover_image)
+
+ model_name = os.path.basename(model_path)
+ return f"Model saved: {model_name}", model_hash, legacy_hash
+
+
+model_name_filter = ""
+
+
+def get_filtered_model_paths(s):
+ if not s:
+ return ["None"] + list(model_util.lora_models.values())
+
+ return ["None"] + [v for v in model_util.lora_models.values() if v and s in v.lower()]
+
+
+def get_filtered_model_paths_global():
+ global model_name_filter
+ return get_filtered_model_paths(model_name_filter)
+
+
+def setup_ui(addnet_paste_params):
+ """
+:dict addnet_paste_params: Dictionary of txt2img/img2img controls for each model weight slider,
+ for sending module and model to them from the metadata editor
+ """
+ can_edit = False
+
+ with gr.Row().style(equal_height=False):
+
+ # Lefthand column
+ with gr.Column(variant='panel'):
+
+ # Module and model selector
+ with gr.Row():
+ model_filter = gr.Textbox("", label="Model path filter", placeholder="Filter models by path name")
+ def update_model_filter(s):
+ global model_name_filter
+ model_name_filter = s.strip().lower()
+ model_filter.change(update_model_filter, inputs=[model_filter], outputs=[])
+ with gr.Row():
+ module = gr.Dropdown(["LoRA"], label="Network module", value="LoRA", interactive=True, elem_id="additional_networks_metadata_editor_module")
+ model = gr.Dropdown(get_filtered_model_paths_global(), label="Model", value="None", interactive=True,
+ elem_id="additional_networks_metadata_editor_model")
+ modules.ui.create_refresh_button(model, model_util.update_models, lambda: {"choices": get_filtered_model_paths_global()}, "refresh_lora_models")
+
+ def submit_model_filter(s):
+ global model_name_filter
+ model_name_filter = s
+ paths = get_filtered_model_paths(s)
+ return gr.Dropdown.update(choices=paths, value="None")
+ model_filter.submit(submit_model_filter, inputs=[model_filter], outputs=[model])
+
+ # Model hashes and path
+ with gr.Row():
+ model_hash = gr.Textbox("", label="Model hash", interactive=False)
+ legacy_hash = gr.Textbox("", label="Legacy hash", interactive=False)
+ with gr.Row():
+ model_path = gr.Textbox("", label="Model path", interactive=False)
+ open_folder_button = ToolButton(value=folder_symbol, elem_id="hidden_element" if shared.cmd_opts.hide_ui_dir_config else "open_folder_metadata_editor")
+
+ # Send to txt2img/img2img buttons
+ for tabname in ["txt2img", "img2img"]:
+ with gr.Row():
+ with gr.Box():
+ with gr.Row():
+ gr.HTML(f"Send to {tabname}:")
+ for i in range(MAX_MODEL_COUNT):
+ send_to_button = ToolButton(value=keycap_symbols[i], elem_id=f"additional_networks_send_to_{tabname}_{i}")
+ send_to_button.click(fn=lambda modu, mod: (modu, model_util.find_closest_lora_model_name(mod) or "None"), inputs=[module, model], outputs=[addnet_paste_params[tabname][i]["module"], addnet_paste_params[tabname][i]["model"]])
+ send_to_button.click(fn=None,_js=f"addnet_switch_to_{tabname}", inputs=None, outputs=None)
+
+ # "Copy metadata to other models" panel
+ with gr.Row():
+ with gr.Column():
+ gr.HTML(value="Copy metadata to other models in directory")
+ copy_metadata_dir = gr.Textbox("", label="Containing directory", placeholder="All models in this directory will receive the selected model's metadata")
+ with gr.Row():
+ copy_same_session = gr.Checkbox(True, label="Only copy to models with same session ID")
+ copy_no_metadata = gr.Checkbox(True, label="Only copy to models with no metadata")
+ copy_metadata_button = gr.Button("Copy Metadata", variant="primary")
+
+ # Center column, metadata viewer/editor
+ with gr.Column():
+ with gr.Row():
+ display_name = gr.Textbox(value="", label="Name", placeholder="Display name for this model", interactive=can_edit)
+ author = gr.Textbox(value="", label="Author", placeholder="Author of this model", interactive=can_edit)
+ with gr.Row():
+ keywords = gr.Textbox(value="", label="Keywords", placeholder="Activation keywords, comma-separated", interactive=can_edit)
+ with gr.Row():
+ description = gr.Textbox(value="", label="Description", placeholder="Model description/readme/notes/instructions", lines=15, interactive=can_edit)
+ with gr.Row():
+ source = gr.Textbox(value="", label="Source", placeholder="Source URL where this model could be found", interactive=can_edit)
+ with gr.Row():
+ rating = gr.Slider(minimum=0, maximum=10, step=1, label="Rating", value=0, interactive=can_edit)
+ tags = gr.Textbox(value="", label="Tags", placeholder="Comma-separated list of tags (\"artist, style, character, 2d, 3d...\")", lines=2, interactive=can_edit)
+ with gr.Row():
+ editing_enabled = gr.Checkbox(label="Editing Enabled", value=can_edit)
+ with gr.Row():
+ save_metadata_button = gr.Button("Save Metadata", variant="primary", interactive=can_edit)
+ with gr.Row():
+ save_output = gr.HTML("")
+
+ # Righthand column, cover image and training parameters view
+ with gr.Column():
+
+ # Cover image
+ with gr.Row():
+ cover_image = gr.Image(label="Cover image", elem_id="additional_networks_cover_image", source="upload", interactive=can_edit, type="pil", image_mode="RGBA").style(height=480)
+
+ # Image parameters
+ with gr.Accordion("Image Parameters", open=False):
+ with gr.Row():
+ info2 = gr.HTML()
+ with gr.Row():
+ try:
+ send_to_buttons = parameters_copypaste.create_buttons(["txt2img", "img2img", "inpaint", "extras"])
+ except:
+ pass
+
+ # Training info, below cover image
+ with gr.Accordion("Training info", open=False):
+
+ # Top tags used
+ with gr.Row():
+ max_top_tags = int(shared.opts.data.get("additional_networks_max_top_tags", 20))
+ most_frequent_tags = gr.Label(value={}, label="Most frequent tags in captions", num_top_classes=max_top_tags)
+
+ # Dataset folders
+ with gr.Row():
+ max_dataset_folders = int(shared.opts.data.get("additional_networks_max_dataset_folders", 20))
+ dataset_folders = gr.Dataframe(
+ headers=["Name", "Image Count", "Repeats", "Total Images"],
+ datatype=["str", "number", "number", "number"],
+ label="Dataset folder structure",
+ max_rows=max_dataset_folders,
+ col_count=(4, "fixed"))
+
+ # Training Parameters
+ with gr.Row():
+ metadata_view = gr.JSON(value={}, label="Training parameters")
+
+ # Hidden/internal
+ with gr.Row(visible=False):
+ info1 = gr.HTML()
+ img_file_info = gr.Textbox(label="Generate Info", interactive=False, lines=6)
+
+ open_folder_button.click(fn=lambda p: open_folder(os.path.dirname(p)), inputs=[model_path], outputs=[])
+ copy_metadata_button.click(fn=copy_metadata_to_all, inputs=[module, model, copy_metadata_dir, copy_same_session, copy_no_metadata, cover_image], outputs=[save_output])
+
+ def update_editing(enabled):
+ """
+ Enable/disable components based on "Editing Enabled" status
+ """
+ updates = [gr.Textbox.update(interactive=enabled)] * 6
+ updates.append(gr.Image.update(interactive=enabled))
+ updates.append(gr.Slider.update(interactive=enabled))
+ updates.append(gr.Button.update(interactive=enabled))
+ return updates
+ editing_enabled.change(fn=update_editing, inputs=[editing_enabled], outputs=[display_name, author, source, keywords, description, tags, cover_image, rating, save_metadata_button])
+
+ cover_image.change(fn=modules.extras.run_pnginfo, inputs=[cover_image], outputs=[info1, img_file_info, info2])
+
+ try:
+ parameters_copypaste.bind_buttons(send_to_buttons, cover_image, img_file_info)
+ except:
+ pass
+
+ model.change(refresh_metadata, inputs=[module, model], outputs=[metadata_view, cover_image, display_name, author, source, keywords, description, rating, tags, model_hash, legacy_hash, model_path, copy_metadata_dir, most_frequent_tags, dataset_folders])
+ save_metadata_button.click(save_metadata, inputs=[module, model, cover_image, display_name, author, source, keywords, description, rating, tags], outputs=[save_output, model_hash, legacy_hash])
diff --git a/ex/additional-networks/scripts/model_util.py b/ex/additional-networks/scripts/model_util.py
new file mode 100644
index 0000000000000000000000000000000000000000..4aa50955a155f66866edc153a9a2af643e3c74a4
--- /dev/null
+++ b/ex/additional-networks/scripts/model_util.py
@@ -0,0 +1,334 @@
+import os
+import os.path
+import re
+import shutil
+import json
+import stat
+import tqdm
+from collections import OrderedDict
+from multiprocessing.pool import ThreadPool as Pool
+
+from modules import shared, sd_models, hashes
+from scripts import safetensors_hack, model_util, util
+import modules.scripts as scripts
+
+
+# MAX_MODEL_COUNT = shared.cmd_opts.addnet_max_model_count or 5
+MAX_MODEL_COUNT = shared.cmd_opts.addnet_max_model_count if hasattr(shared.cmd_opts, "addnet_max_model_count") else 5
+LORA_MODEL_EXTS = [".pt", ".ckpt", ".safetensors"]
+re_legacy_hash = re.compile("\(([0-9a-f]{8})\)$") # matches 8-character hashes, new hash has 12 characters
+lora_models = {} # "My_Lora(abcdef123456)" -> "C:/path/to/model.safetensors"
+lora_model_names = {} # "my_lora" -> "My_Lora(My_Lora(abcdef123456)"
+legacy_model_names = {}
+lora_models_dir = os.path.join(scripts.basedir(), "models/lora")
+os.makedirs(lora_models_dir, exist_ok=True)
+
+
+def is_safetensors(filename):
+ return os.path.splitext(filename)[1] == ".safetensors"
+
+
+def read_model_metadata(model_path, module):
+ if model_path.startswith("\"") and model_path.endswith("\""): # trim '"' at start/end
+ model_path = model_path[1:-1]
+ if not os.path.exists(model_path):
+ return None
+
+ metadata = None
+ if module == "LoRA":
+ if os.path.splitext(model_path)[1] == '.safetensors':
+ metadata = safetensors_hack.read_metadata(model_path)
+
+ return metadata
+
+
+def write_model_metadata(model_path, module, updates):
+ if model_path.startswith("\"") and model_path.endswith("\""): # trim '"' at start/end
+ model_path = model_path[1:-1]
+ if not os.path.exists(model_path):
+ return None
+
+ from safetensors.torch import save_file
+
+ back_up = shared.opts.data.get("additional_networks_back_up_model_when_saving", True)
+ if back_up:
+ backup_path = model_path + ".backup"
+ if not os.path.exists(backup_path):
+ print(f"[MetadataEditor] Backing up current model to {backup_path}")
+ shutil.copyfile(model_path, backup_path)
+
+ metadata = None
+ tensors = {}
+ if module == "LoRA":
+ if os.path.splitext(model_path)[1] == '.safetensors':
+ tensors, metadata = safetensors_hack.load_file(model_path, "cpu")
+
+ for k, v in updates.items():
+ metadata[k] = str(v)
+
+ save_file(tensors, model_path, metadata)
+ print(f"[MetadataEditor] Model saved: {model_path}")
+
+
+def get_model_list(module, model, model_dir, sort_by):
+ if model_dir == "":
+ # Get list of models with same folder as this one
+ model_path = lora_models.get(model, None)
+ if model_path is None:
+ return []
+ model_dir = os.path.dirname(model_path)
+
+ if not os.path.isdir(model_dir):
+ return []
+
+ found, _ = get_all_models([model_dir], sort_by, "")
+ return found.keys()
+
+
+def traverse_all_files(curr_path, model_list):
+ f_list = [(os.path.join(curr_path, entry.name), entry.stat()) for entry in os.scandir(curr_path)]
+ for f_info in f_list:
+ fname, fstat = f_info
+ if os.path.splitext(fname)[1] in LORA_MODEL_EXTS:
+ model_list.append(f_info)
+ elif stat.S_ISDIR(fstat.st_mode):
+ model_list = traverse_all_files(fname, model_list)
+ return model_list
+
+
+def get_model_hash(metadata, filename):
+ if metadata is None:
+ return hashes.calculate_sha256(filename)
+
+ if "sshs_model_hash" in metadata:
+ return metadata["sshs_model_hash"]
+
+ return safetensors_hack.hash_file(filename)
+
+
+def get_legacy_hash(metadata, filename):
+ if metadata is None:
+ return sd_models.model_hash(filename)
+
+ if "sshs_legacy_hash" in metadata:
+ return metadata["sshs_legacy_hash"]
+
+ return safetensors_hack.legacy_hash_file(filename)
+
+
+import filelock
+cache_filename = os.path.join(scripts.basedir(), "hashes.json")
+cache_data = None
+
+
+def cache(subsection):
+ global cache_data
+
+ if cache_data is None:
+ with filelock.FileLock(cache_filename+".lock"):
+ if not os.path.isfile(cache_filename):
+ cache_data = {}
+ else:
+ with open(cache_filename, "r", encoding="utf8") as file:
+ cache_data = json.load(file)
+
+ s = cache_data.get(subsection, {})
+ cache_data[subsection] = s
+
+ return s
+
+
+def dump_cache():
+ with filelock.FileLock(cache_filename+".lock"):
+ with open(cache_filename, "w", encoding="utf8") as file:
+ json.dump(cache_data, file, indent=4)
+
+
+def get_model_rating(filename):
+ if not model_util.is_safetensors(filename):
+ return 0
+
+ metadata = safetensors_hack.read_metadata(filename)
+ return int(metadata.get("ssmd_rating", "0"))
+
+
+def has_user_metadata(filename):
+ if not model_util.is_safetensors(filename):
+ return False
+
+ metadata = safetensors_hack.read_metadata(filename)
+ return any(k.startswith("ssmd_") for k in metadata.keys())
+
+
+def hash_model_file(finfo):
+ filename = finfo[0]
+ stat = finfo[1]
+ name = os.path.splitext(os.path.basename(filename))[0]
+
+ # Prevent a hypothetical "None.pt" from being listed.
+ if name != "None":
+ metadata = None
+
+ cached = cache("hashes").get(filename, None)
+ if cached is None or stat.st_mtime != cached["mtime"]:
+ if metadata is None and model_util.is_safetensors(filename):
+ try:
+ metadata = safetensors_hack.read_metadata(filename)
+ except Exception as ex:
+ return {"error": ex, "filename": filename}
+ model_hash = get_model_hash(metadata, filename)
+ legacy_hash = get_legacy_hash(metadata, filename)
+ else:
+ model_hash = cached["model"]
+ legacy_hash = cached["legacy"]
+
+ return {"model": model_hash, "legacy": legacy_hash, "fileinfo": finfo}
+
+
+def get_all_models(paths, sort_by, filter_by):
+ fileinfos = []
+ for path in paths:
+ if os.path.isdir(path):
+ fileinfos += traverse_all_files(path, [])
+
+ show_only_safetensors = shared.opts.data.get("additional_networks_show_only_safetensors", False)
+ show_only_missing_meta = shared.opts.data.get("additional_networks_show_only_models_with_metadata", "disabled")
+
+ if show_only_safetensors:
+ fileinfos = [x for x in fileinfos if is_safetensors(x[0])]
+
+ if show_only_missing_meta == "has metadata":
+ fileinfos = [x for x in fileinfos if has_user_metadata(x[0])]
+ elif show_only_missing_meta == "missing metadata":
+ fileinfos = [x for x in fileinfos if not has_user_metadata(x[0])]
+
+ print("[AddNet] Updating model hashes...")
+ data = []
+ thread_count = max(1, int(shared.opts.data.get("additional_networks_hash_thread_count", 1)))
+ p = Pool(processes=thread_count)
+ with tqdm.tqdm(total=len(fileinfos)) as pbar:
+ for res in p.imap_unordered(hash_model_file, fileinfos):
+ pbar.update()
+ if "error" in res:
+ print(f"Failed to read model file {res['filename']}: {res['error']}")
+ else:
+ data.append(res)
+ p.close()
+
+ cache_hashes = cache("hashes")
+
+ res = OrderedDict()
+ res_legacy = OrderedDict()
+ filter_by = filter_by.strip(" ")
+ if len(filter_by) != 0:
+ data = [x for x in data if filter_by.lower() in os.path.basename(x["fileinfo"][0]).lower()]
+ if sort_by == "name":
+ data = sorted(data, key=lambda x: os.path.basename(x["fileinfo"][0]))
+ elif sort_by == "date":
+ data = sorted(data, key=lambda x: -x["fileinfo"][1].st_mtime)
+ elif sort_by == "path name":
+ data = sorted(data, key=lambda x: x["fileinfo"][0])
+ elif sort_by == "rating":
+ data = sorted(data, key=lambda x: get_model_rating(x["fileinfo"][0]), reverse=True)
+ elif sort_by == "has user metadata":
+ data = sorted(data, key=lambda x: os.path.basename(x["fileinfo"][0]) if has_user_metadata(x["fileinfo"][0]) else "", reverse=True)
+
+ reverse = shared.opts.data.get("additional_networks_reverse_sort_order", False)
+ if reverse:
+ data = reversed(data)
+
+ for result in data:
+ finfo = result["fileinfo"]
+ filename = finfo[0]
+ stat = finfo[1]
+ model_hash = result["model"]
+ legacy_hash = result["legacy"]
+
+ name = os.path.splitext(os.path.basename(filename))[0]
+
+ # Commas in the model name will mess up infotext restoration since the
+ # infotext is delimited by commas
+ name = name.replace(",", "_")
+
+ # Prevent a hypothetical "None.pt" from being listed.
+ if name != "None":
+ full_name = name + f"({model_hash[0:12]})"
+ res[full_name] = filename
+ res_legacy[legacy_hash] = full_name
+ cache_hashes[filename] = {"model": model_hash, "legacy": legacy_hash, "mtime": stat.st_mtime}
+
+ return res, res_legacy
+
+
+def find_closest_lora_model_name(search: str):
+ if not search or search == "None":
+ return None
+
+ # Match name and hash, case-sensitive
+ # "MyModel-epoch00002(abcdef123456)"
+ if search in lora_models:
+ return search
+
+ # Match model path, case-sensitive (from metadata editor)
+ # "C:/path/to/mymodel-epoch00002.safetensors"
+ if os.path.isfile(search):
+ import json
+ find = os.path.normpath(search)
+ value = next((k for k in lora_models.keys() if lora_models[k] == find), None)
+ if value:
+ return value
+
+ search = search.lower()
+
+ # Match full name, case-insensitive
+ # "mymodel-epoch00002"
+ if search in lora_model_names:
+ return lora_model_names.get(search)
+
+ # Match legacy hash (8 characters)
+ # "MyModel(abcd1234)"
+ result = re_legacy_hash.search(search)
+ if result is not None:
+ model_hash = result.group(1)
+ if model_hash in legacy_model_names:
+ new_model_name = legacy_model_names[model_hash]
+ return new_model_name
+
+ # Use any model with the search term as the prefix, case-insensitive, sorted
+ # by name length
+ # "mymodel"
+ applicable = [name for name in lora_model_names.keys() if search in name.lower()]
+ if not applicable:
+ return None
+ applicable = sorted(applicable, key=lambda name: len(name))
+ return lora_model_names[applicable[0]]
+
+
+def update_models():
+ global lora_models, lora_model_names, legacy_model_names
+ paths = [lora_models_dir]
+ extra_lora_paths = util.split_path_list(shared.opts.data.get("additional_networks_extra_lora_path", ""))
+ for path in extra_lora_paths:
+ path = path.lstrip()
+ if os.path.isdir(path):
+ paths.append(path)
+
+ sort_by = shared.opts.data.get("additional_networks_sort_models_by", "name")
+ filter_by = shared.opts.data.get("additional_networks_model_name_filter", "")
+ res, res_legacy = get_all_models(paths, sort_by, filter_by)
+
+ lora_models.clear()
+ lora_models["None"] = None
+ lora_models.update(res)
+
+ for name_and_hash, filename in lora_models.items():
+ if filename == None:
+ continue
+ name = os.path.splitext(os.path.basename(filename))[0].lower()
+ lora_model_names[name] = name_and_hash
+
+ legacy_model_names = res_legacy
+ dump_cache()
+
+
+update_models()
diff --git a/ex/additional-networks/scripts/safetensors_hack.py b/ex/additional-networks/scripts/safetensors_hack.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ce3f300ee75f97ca9dcb7361cbf664e9fcec92d
--- /dev/null
+++ b/ex/additional-networks/scripts/safetensors_hack.py
@@ -0,0 +1,116 @@
+import io
+import os
+import mmap
+import torch
+import json
+import hashlib
+import safetensors
+import safetensors.torch
+
+from modules import sd_models
+
+# PyTorch 1.13 and later have _UntypedStorage renamed to UntypedStorage
+UntypedStorage = torch.storage.UntypedStorage if hasattr(torch.storage, 'UntypedStorage') else torch.storage._UntypedStorage
+
+def read_metadata(filename):
+ """Reads the JSON metadata from a .safetensors file"""
+ with open(filename, mode="r", encoding="utf8") as file_obj:
+ with mmap.mmap(file_obj.fileno(), length=0, access=mmap.ACCESS_READ) as m:
+ header = m.read(8)
+ n = int.from_bytes(header, "little")
+ metadata_bytes = m.read(n)
+ metadata = json.loads(metadata_bytes)
+
+ return metadata.get("__metadata__", {})
+
+
+def load_file(filename, device):
+ """"Loads a .safetensors file without memory mapping that locks the model file.
+ Works around safetensors issue: https://github.com/huggingface/safetensors/issues/164"""
+ with open(filename, mode="r", encoding="utf8") as file_obj:
+ with mmap.mmap(file_obj.fileno(), length=0, access=mmap.ACCESS_READ) as m:
+ header = m.read(8)
+ n = int.from_bytes(header, "little")
+ metadata_bytes = m.read(n)
+ metadata = json.loads(metadata_bytes)
+
+ size = os.stat(filename).st_size
+ storage = UntypedStorage.from_file(filename, False, size)
+ offset = n + 8
+ md = metadata.get("__metadata__", {})
+ return {name: create_tensor(storage, info, offset) for name, info in metadata.items() if name != "__metadata__"}, md
+
+
+def hash_file(filename):
+ """Hashes a .safetensors file using the new hashing method.
+ Only hashes the weights of the model."""
+ hash_sha256 = hashlib.sha256()
+ blksize = 1024 * 1024
+
+ with open(filename, mode="r", encoding="utf8") as file_obj:
+ with mmap.mmap(file_obj.fileno(), length=0, access=mmap.ACCESS_READ) as m:
+ header = m.read(8)
+ n = int.from_bytes(header, "little")
+
+ with open(filename, mode="rb") as file_obj:
+ offset = n + 8
+ file_obj.seek(offset)
+ for chunk in iter(lambda: file_obj.read(blksize), b""):
+ hash_sha256.update(chunk)
+
+ return hash_sha256.hexdigest()
+
+
+def legacy_hash_file(filename):
+ """Hashes a model file using the legacy `sd_models.model_hash()` method."""
+ hash_sha256 = hashlib.sha256()
+
+ metadata = read_metadata(filename)
+
+ # For compatibility with legacy models: This replicates the behavior of
+ # sd_models.model_hash as if there were no user-specified metadata in the
+ # .safetensors file. That leaves the training parameters, which are
+ # immutable. It is important the hash does not include the embedded user
+ # metadata as that would mean the hash could change every time the user
+ # updates the name/description/etc. The new hashing method fixes this
+ # problem by only hashing the region of the file containing the tensors.
+ if any(not k.startswith("ss_") for k in metadata):
+ # Strip the user metadata, re-serialize the file as if it were freshly
+ # created from sd-scripts, and hash that with model_hash's behavior.
+ tensors, metadata = load_file(filename, "cpu")
+ metadata = {k: v for k, v in metadata.items() if k.startswith("ss_")}
+ model_bytes = safetensors.torch.save(tensors, metadata)
+
+ hash_sha256.update(model_bytes[0x100000:0x110000])
+ return hash_sha256.hexdigest()[0:8]
+ else:
+ # This should work fine with model_hash since when the legacy hashing
+ # method was being used the user metadata system hadn't been implemented
+ # yet.
+ return sd_models.model_hash(filename)
+
+
+DTYPES = {
+ "F64": torch.float64,
+ "F32": torch.float32,
+ "F16": torch.float16,
+ "BF16": torch.bfloat16,
+ "I64": torch.int64,
+ # "U64": torch.uint64,
+ "I32": torch.int32,
+ # "U32": torch.uint32,
+ "I16": torch.int16,
+ # "U16": torch.uint16,
+ "I8": torch.int8,
+ "U8": torch.uint8,
+ "BOOL": torch.bool
+}
+
+
+def create_tensor(storage, info, offset):
+ """Creates a tensor without holding on to an open handle to the parent model
+ file."""
+ dtype = DTYPES[info["dtype"]]
+ shape = info["shape"]
+ start, stop = info["data_offsets"]
+ return torch.asarray(storage[start + offset : stop + offset], dtype=torch.uint8).view(dtype=dtype).reshape(shape).clone().detach()
diff --git a/ex/additional-networks/scripts/util.py b/ex/additional-networks/scripts/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..81c28b937767f3da48110653eddb98ec75fa4cb0
--- /dev/null
+++ b/ex/additional-networks/scripts/util.py
@@ -0,0 +1,12 @@
+import csv
+from io import StringIO
+from typing import List
+
+def split_path_list(path_list: str) -> List[str]:
+ pl = []
+ with StringIO() as f:
+ f.write(path_list)
+ f.seek(0)
+ for r in csv.reader(f):
+ pl += r
+ return pl
diff --git a/ex/additional-networks/scripts/xyz_grid_support.py b/ex/additional-networks/scripts/xyz_grid_support.py
new file mode 100644
index 0000000000000000000000000000000000000000..dce8b95627efab26dcf5493391b1da46cc7b2305
--- /dev/null
+++ b/ex/additional-networks/scripts/xyz_grid_support.py
@@ -0,0 +1,160 @@
+import os
+import os.path
+from modules import shared
+import modules.scripts as scripts
+from scripts import model_util, util
+from scripts.model_util import MAX_MODEL_COUNT
+
+
+LORA_TRAIN_METADATA_NAMES = {
+ "ss_session_id": "Session ID",
+ "ss_training_started_at": "Training started at",
+ "ss_output_name": "Output name",
+ "ss_learning_rate": "Learning rate",
+ "ss_text_encoder_lr": "Text encoder LR",
+ "ss_unet_lr": "UNet LR",
+ "ss_num_train_images": "# of training images",
+ "ss_num_reg_images": "# of reg images",
+ "ss_num_batches_per_epoch": "Batches per epoch",
+ "ss_num_epochs": "Total epochs",
+ "ss_epoch": "Epoch",
+ "ss_batch_size_per_device": "Batch size/device",
+ "ss_total_batch_size": "Total batch size",
+ "ss_gradient_checkpointing": "Gradient checkpointing",
+ "ss_gradient_accumulation_steps": "Gradient accum. steps",
+ "ss_max_train_steps": "Max train steps",
+ "ss_lr_warmup_steps": "LR warmup steps",
+ "ss_lr_scheduler": "LR scheduler",
+ "ss_network_module": "Network module",
+ "ss_network_dim": "Network dim",
+ "ss_network_alpha": "Network alpha",
+ "ss_mixed_precision": "Mixed precision",
+ "ss_full_fp16": "Full FP16",
+ "ss_v2": "V2",
+ "ss_resolution": "Resolution",
+ "ss_clip_skip": "Clip skip",
+ "ss_max_token_length": "Max token length",
+ "ss_color_aug": "Color aug",
+ "ss_flip_aug": "Flip aug",
+ "ss_random_crop": "Random crop",
+ "ss_shuffle_caption": "Shuffle caption",
+ "ss_cache_latents": "Cache latents",
+ "ss_enable_bucket": "Enable bucket",
+ "ss_min_bucket_reso": "Min bucket reso.",
+ "ss_max_bucket_reso": "Max bucket reso.",
+ "ss_seed": "Seed",
+ "ss_keep_tokens": "Keep tokens",
+ "ss_dataset_dirs": "Dataset dirs.",
+ "ss_reg_dataset_dirs": "Reg dataset dirs.",
+ "ss_sd_model_name": "SD model name",
+ "ss_vae_name": "VAE name",
+ "ss_training_comment": "Comment"
+}
+
+
+xy_grid = None # XY Grid module
+script_class = None # additional_networks scripts.Script class
+axis_params = [{}] * MAX_MODEL_COUNT
+
+
+def update_axis_params(i, module, model):
+ axis_params[i] = {"module": module, "model": model}
+
+
+def get_axis_model_choices(i):
+ module = axis_params[i].get("module", "None")
+ model = axis_params[i].get("model", "None")
+
+ if module == "LoRA":
+ if model != "None":
+ sort_by = shared.opts.data.get("additional_networks_sort_models_by", "name")
+ return model_util.get_model_list(module, model, "", sort_by)
+
+ return [f"select `Model {i+1}` in `Additional Networks`. models in same folder for selected one will be shown here."]
+
+
+def update_script_args(p, value, arg_idx):
+ global script_class
+ for s in scripts.scripts_txt2img.alwayson_scripts:
+ if isinstance(s, script_class):
+ args = list(p.script_args)
+ # print(f"Changed arg {arg_idx} from {args[s.args_from + arg_idx - 1]} to {value}")
+ args[s.args_from + arg_idx] = value
+ p.script_args = tuple(args)
+ break
+
+
+def confirm_models(p, xs):
+ for x in xs:
+ if x in ["", "None"]:
+ continue
+ if not model_util.find_closest_lora_model_name(x):
+ raise RuntimeError(f"Unknown LoRA model: {x}")
+
+
+def apply_module(p, x, xs, i):
+ update_script_args(p, True, 0) # set Enabled to True
+ update_script_args(p, x, 2 + 4 * i) # enabled, separate_weights, ({module}, model, weight_unet, weight_tenc), ...
+
+
+def apply_model(p, x, xs, i):
+ name = model_util.find_closest_lora_model_name(x)
+ update_script_args(p, True, 0)
+ update_script_args(p, name, 3 + 4 * i) # enabled, separate_weights, (module, {model}, weight_unet, weight_tenc), ...
+
+
+def apply_weight(p, x, xs, i):
+ update_script_args(p, True, 0)
+ update_script_args(p, x, 4 + 4 * i ) # enabled, separate_weights, (module, model, {weight_unet, weight_tenc}), ...
+ update_script_args(p, x, 5 + 4 * i)
+
+
+def apply_weight_unet(p, x, xs, i):
+ update_script_args(p, True, 0)
+ update_script_args(p, x, 4 + 4 * i) # enabled, separate_weights, (module, model, {weight_unet}, weight_tenc), ...
+
+
+def apply_weight_tenc(p, x, xs, i):
+ update_script_args(p, True, 0)
+ update_script_args(p, x, 5 + 4 * i) # enabled, separate_weights, (module, model, weight_unet, {weight_tenc}), ...
+
+
+def format_lora_model(p, opt, x):
+ global xy_grid
+ model = model_util.find_closest_lora_model_name(x)
+ if model is None or model.lower() in ["", "none"]:
+ return "None"
+
+ value = xy_grid.format_value(p, opt, model)
+
+ model_path = model_util.lora_models.get(model)
+ metadata = model_util.read_model_metadata(model_path, "LoRA")
+ if not metadata:
+ return value
+
+ metadata_names = util.split_path_list(shared.opts.data.get("additional_networks_xy_grid_model_metadata", ""))
+ if not metadata_names:
+ return value
+
+ for name in metadata_names:
+ name = name.strip()
+ if name in metadata:
+ formatted_name = LORA_TRAIN_METADATA_NAMES.get(name, name)
+ value += f"\n{formatted_name}: {metadata[name]}, "
+
+ return value.strip(" ").strip(",")
+
+
+def initialize(script):
+ global xy_grid, script_class
+ xy_grid = None
+ script_class = script
+ for scriptDataTuple in scripts.scripts_data:
+ if os.path.basename(scriptDataTuple.path) == "xy_grid.py" or os.path.basename(scriptDataTuple.path) == "xyz_grid.py":
+ xy_grid = scriptDataTuple.module
+ for i in range(MAX_MODEL_COUNT):
+ model = xy_grid.AxisOption(f"AddNet Model {i+1}", str, lambda p, x, xs, i=i: apply_model(p, x, xs, i), format_lora_model, confirm_models, cost=0.5, choices=lambda i=i: get_axis_model_choices(i))
+ weight = xy_grid.AxisOption(f"AddNet Weight {i+1}", float, lambda p, x, xs, i=i: apply_weight(p, x, xs, i), xy_grid.format_value_add_label, None, cost=0.5)
+ weight_unet = xy_grid.AxisOption(f"AddNet UNet Weight {i+1}", float, lambda p, x, xs, i=i: apply_weight_unet(p, x, xs, i), xy_grid.format_value_add_label, None, cost=0.5)
+ weight_tenc = xy_grid.AxisOption(f"AddNet TEnc Weight {i+1}", float, lambda p, x, xs, i=i: apply_weight_tenc(p, x, xs, i), xy_grid.format_value_add_label, None, cost=0.5)
+ xy_grid.axis_options.extend([model, weight, weight_unet, weight_tenc])
diff --git a/ex/additional-networks/style.css b/ex/additional-networks/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..9a2e162d16efa7e7b0922005a2f328befdaafaef
--- /dev/null
+++ b/ex/additional-networks/style.css
@@ -0,0 +1,9 @@
+#additional_networks_cover_image,
+#additional_networks_cover_image > .h-60,
+#additional_networks_cover_image > .h-60 > div,
+#additional_networks_cover_image > .h-60 > div > img
+{
+ height: 480px !important;
+ max-height: 480px !important;
+ min-height: 480px !important;
+}
diff --git a/ex/dynamic-prompts/.eslintrc.js b/ex/dynamic-prompts/.eslintrc.js
new file mode 100644
index 0000000000000000000000000000000000000000..d099f97cbe47fda95d552d923977c64da1128add
--- /dev/null
+++ b/ex/dynamic-prompts/.eslintrc.js
@@ -0,0 +1,19 @@
+module.exports = {
+ env: {
+ browser: true,
+ es2021: true,
+ },
+ extends: ["airbnb-base", "prettier"],
+ plugins: ["prettier"],
+ rules: {
+ "class-methods-use-this": "off",
+ "max-classes-per-file": "off",
+ "no-console": "off",
+ "no-param-reassign": "off",
+ "prettier/prettier": "error",
+ curly: ["error", "all"],
+ },
+ parserOptions: {
+ ecmaVersion: "latest",
+ },
+};
diff --git a/ex/dynamic-prompts/.github/CONTRIBUTING.md b/ex/dynamic-prompts/.github/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..1ced92b72dff09c348f5a8d673f03c37a2736c2a
--- /dev/null
+++ b/ex/dynamic-prompts/.github/CONTRIBUTING.md
@@ -0,0 +1,130 @@
+# GitHub Etiquette
+borrowed from [Open source etiquette](https://github.com/kossnocorp/opensource.how)
+
+## Don't be mean!
+
+Be nice!
+
+## Don't be bossy!
+
+ It takes just a few seconds to type "Any updates on this?" but it takes much
+ more time and energy to write a report back to you. First of all, you're not
+ maintainers' boss, and they owe you nothing, not to mention a report.
+
+ These minutes could have been spent on something meaningful, so you not only
+ steal time from the maintainer, but also the whole community.
+
+ Don't write like a boss: "Why this isn't merged?" "What's the ETA?" "It blocks
+ us!" "What are the blockers?".
+
+## Don't demand!
+
+ Never demand anything from maintainers. Always keep in mind that maintainers'
+ work is an act of goodwill — even labor backed by the community rarely pays
+ more than minimum wage, so communicate accordingly.
+
+ If you need a piece of information or help, say it politely. If you want to
+ have something done, never push.
+
+ First of all, you could have different priorities. You and your colleagues
+ might be aligned on the same goal, but maintainers can have a different focus.
+ Secondly, you might have a different perspective on the problem. Be ready to
+ accept a rejection of your proposal, feature, or bug report. Yes, sometimes,
+ bugs are features!
+
+## Don't be noisy!
+
+ Comments like "I also have this error" and "+1" are never helpful. It's
+ especially tempting to type such comment when it's a critical issue, but that
+ adds additional pressure and distraction.
+
+ If you want the get the attention of the maintainer, at least contribute
+ something. If the issue lacks stack trace or reproductions steps, add it.
+ Don't feel capable of opening a PR? Create a minimal repo with the demo of the
+ error.
+
+## Don't rush!
+
+ Take your time before reporting a bug or asking a question. First, make sure
+ you're not missing anything. Read the docs, Google the problem, search the
+ issues, double-check, and only then reach for help.
+
+ When you do reach for help, make sure that you provide as much information as
+ possible. Proactively present library versions, code example, reproduction
+ steps, etc. Describe the problem in detail. Don't wait for the maintainers to
+ ask you for that. Provide or at least offer to provide a minimal reproducible
+ example. This way, you'll minimize the effort that they have to put to help
+ you, which would maximize your chances to prompt response.
+
+ It's easy for you to assume that all they need is a short description of the
+ problem as the maintainers know their thing the best and provide additional
+ information only when they ask you. But in that's just a time steal and the
+ best way to get rightfully ignored.
+
+## Don't be emotional!
+
+ When the deadline is approaching and you still have a lot to do, a bug or
+ unexpected behavior in the code you don't control is annoyance at least. Never
+ show it!
+
+ The maintainer has a different perspective and might not be aware of the
+ problem even if you feel like everything is broken. If you want to get help,
+ then be calm, objective, and patient.
+
+## Don't patronize!
+
+ Never assume that the maintainer is less experienced or knowledgeable or
+ straight stupid. That better approach, tool, or decision that you have in mind
+ might have been considered or even planned. They have full context and had
+ much more time than you to think everything through, so more likely, it's you
+ who's confused.
+
+ It's reasonable to think that the maintainer is an expert in the subject, and
+ you're not. Even if you find an objectively low-quality code, don't assume the
+ authors' experience or skills.
+
+ If you disagree with the direction, instead of arguing, it's better to
+ consider an alternative. Some prefer functional programming, some
+ object-oriented code, but that doesn't mean that latter or former are wrong.
+ The maintainer should be able to decide what trade-off to choose regardless of
+ your needs or views.
+
+## Don't forget to say thanks!
+
+ Simple words of gratitude and praises are often the sole motivator that makes
+ open-source authors keep going, so don't be shy and say it!
+
+ Do you want to see a pull-request merged, much-needed feature implemented and
+ long-awaiter release shipped? Instead of reminding how much work is on their
+ plate by asking "any news" or showing dissatisfaction (which only kills the
+ motivation), say how their work is essential. Tell how much you value them.
+ Tweet kind words about them and their project. Sometimes that's the best you
+ can do.
+
+## Don't cause drama!
+
+ Never post comments that might cause a drama or emotionally hurt maintainers.
+
+ You might be upset about maintainers intrusively asking for donations. You
+ might be frustrated by the lack of attention to your issue. You might be
+ dissatisfied with the quality of the project. You might know the better
+ alternative. You might think that's enough for you to post a comment demanding
+ to remove annoying ads or announce that you're moving to another solution. No,
+ it's not.
+
+ For you, that would be a simple message, but on another end, it might ruin the
+ day or strip out the motivation to continue. That's not the right way to treat
+ people that decided to give something for you for free, even if it's not good
+ enough.
+
+## Don't surprise!
+
+ If you plan to contribute great work to a project, communicate it first. Your
+ vision might differ from the maintainers' one, or it could collide with their
+ plans or ongoing work. The worst way you could help them is to create more
+ work.
+
+ If you get rejected, be understanding and not try to cause the feeling of
+ guilt. It's already hard for maintainers to say no, so don't make it harder.
+ Feel free to clarify your intention if you think they misunderstood you but
+ never start an argument.
diff --git a/ex/dynamic-prompts/.github/ISSUE_TEMPLATE/bug_report.md b/ex/dynamic-prompts/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000000000000000000000000000000000..5d7a6c100612df9eff18a07939d40eb34414bc3b
--- /dev/null
+++ b/ex/dynamic-prompts/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,31 @@
+
+**Before opening a new issue**
+
+Make sure that you have had a look at the [troubleshooting section](https://github.com/adieyal/sd-dynamic-prompts#troubleshooting) of the project's README file.
+
+**Describe the bug**
+
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behaviour, include the prompt you used if applicable:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+Also mention which checkboxes have been set.
+
+**What version of the extension and dynamicprompts library do you have installed?**
+
+These can be found under the Need Help? accordion.
+
+**Are you using a local install or a colab?**
+
+If a colab, which one?
+
+**Expected behaviour**
+A clear and concise description of what you expected to happen.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/ex/dynamic-prompts/.github/workflows/test.yml b/ex/dynamic-prompts/.github/workflows/test.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a05d05d38933f1b1c6a357f743ccfdd869085528
--- /dev/null
+++ b/ex/dynamic-prompts/.github/workflows/test.yml
@@ -0,0 +1,28 @@
+name: Test
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: pre-commit/action@v3.0.0
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+ cache: "pip"
+ - name: Install dependencies
+ run: python -m pip install pytest-cov -r requirements.txt
+ - run: pytest --cov --cov-report=term-missing .
diff --git a/ex/dynamic-prompts/.gitignore b/ex/dynamic-prompts/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..92c996b32e3b359e88cbf7d2248f9908fa420a1f
--- /dev/null
+++ b/ex/dynamic-prompts/.gitignore
@@ -0,0 +1,7 @@
+*.pyc
+.coverage
+.env
+.vscode
+\.*.sw*
+node_modules
+wildcards
diff --git a/ex/dynamic-prompts/.pre-commit-config.yaml b/ex/dynamic-prompts/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1f961c539f6c129a580ff150912ae8806d0111ec
--- /dev/null
+++ b/ex/dynamic-prompts/.pre-commit-config.yaml
@@ -0,0 +1,20 @@
+repos:
+ - repo: https://github.com/charliermarsh/ruff-pre-commit
+ rev: v0.0.259
+ hooks:
+ - id: ruff
+ args:
+ - --fix
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.4.0
+ hooks:
+ - id: end-of-file-fixer
+ exclude: ^collections/.*
+ - id: trailing-whitespace
+ exclude: ^collections/.*
+ - repo: https://github.com/psf/black
+ rev: 23.1.0
+ hooks:
+ - id: black
+ args:
+ - --quiet
diff --git a/ex/dynamic-prompts/LICENSE b/ex/dynamic-prompts/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..e1814833954812f465ce75181acee35953637d08
--- /dev/null
+++ b/ex/dynamic-prompts/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Adi Eyal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/ex/dynamic-prompts/README.md b/ex/dynamic-prompts/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a25baaffa6070f74e1414d8a421e2359365117a4
--- /dev/null
+++ b/ex/dynamic-prompts/README.md
@@ -0,0 +1,325 @@
+# Stable Diffusion Dynamic Prompts extension
+A custom extension for [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) that implements an expressive template language for random or combinatorial prompt generation along with features to support deep wildcard directory structures.
+
+
+
+
+
+## Table of Contents
+
+ * [Basic Usage](#basic-usage)
+ * [Online resources](#online-resources)
+ * [Installation](#installation)
+ * [Configuration](#configuration)
+ * [Troubleshooting](#troubleshooting)
+ * [Compatible Scripts](#compatible-scripts)
+ * [Template syntax](#template-syntax)
+ * [Fuzzy Glob/recursive wildcard file/directory matching](#fuzzy-globrecursive-wildcard-filedirectory-matching)
+ * [Combinatorial Generation](#combinatorial-generation)
+ * [Combinatorial Batches](#combinatorial-batches)
+ * [Increasing the maximum number of generations](#increasing-the-maximum-number-of-generations)
+ * [Fixed seed](#fixed-seed)
+ * [Magic Prompt](#magic-prompt)
+ * [Other models](#other-models)
+ * [I'm feeling lucky](#im-feeling-lucky)
+ * [Attention grabber](#attention-grabber)
+ * [Write prompts to file](#write-prompts-to-file)
+ * [Jinja2 templates](#jinja2-templates)
+ * [WILDCARD_DIR](#wildcard_dir)
+ * [Collections](#collections)
+ * [Dynamic Prompts and Random Seeds](#dynamic-prompts-and-random-seeds)
+ * [Without Dynamic Prompts Enabled](#without-dynamic-prompts-enabled)
+ * [With Dynamic Prompts Enabled in Random/Standard Mode](#with-dynamic-prompts-enabled-in-randomstandard-mode)
+ * [Variation Seeds with Dynamic Prompts](#variation-seeds-with-dynamic-prompts)
+ * [Combinatorial Mode with Variation Strength > 0](#combinatorial-mode-with-variation-strength--0)
+
+
+## Basic Usage
+Using this script, the prompt:
+
+ A {house|apartment|lodge|cottage} in {summer|winter|autumn|spring} by {2$$artist1|artist2|artist3}
+
+Will produce any of the following prompts:
+
+- A **house** in **summer** by **artist1**, **artist2**
+- A **lodge** in **autumn** by **artist3**, **artist1**
+- A **cottage** in **winter** by **artist2**, **artist3**
+- ...
+
+This is especially useful if you are searching for interesting combinations of artists and styles.
+
+You can also pick a random string from a file. Assuming you have the file seasons.txt in WILDCARD_DIR (see below), then:
+
+ __seasons__ is coming
+
+Might generate the following:
+
+- Winter is coming
+- Spring is coming
+- ...
+
+You can also use the same wildcard twice
+
+ I love __seasons__ better than __seasons__
+
+- I love Winter better than Summer
+- I love Spring better than Spring
+
+More complete documentation can be found [here](docs/SYNTAX.md).
+
+You can also install it manually by running the following command from within the webui directory:
+
+ git clone https://github.com/adieyal/sd-dynamic-prompting/ extensions/dynamic-prompts
+
+## Configuration
+In case of a syntax clash with another extension, Dynamic Prompts allows you to change the definition of variant start and variant end. By default these are set to `{` and `}` respectively. , e.g. `{red|green|blue}`. In the settings tab, you can change these two any string, e.g. `
+
+By default, wildcards start with `__`(double underscore) and end with `__`. You can change this in the settings tab under wildcard wrap.
+
+## Troubleshooting
+If you encounter an issue with Dynamic Prompts, follow these steps to resolve the problem:
+
+1. Check that you have installed the latest version of both the Dynamic Prompts extension and library. To check the installed versions, open the **Need Help? accordion** in the Dynamic Prompts section of txt2image. You can find the latest version number of the extension [here](https://github.com/adieyal/sd-dynamic-prompts/blob/main/docs/CHANGELOG.md) and the library [here](https://github.com/adieyal/dynamicprompts/blob/main/CHANGELOG.md?plain=1).
+
+2. If the versions do not match, update the extension in the extensions tab and restart the webui. The extension should automatically update the library.
+
+3. If the above step does not work, you might need to manually update the library using the following command:
+
+```shell
+python -m pip install -U dynamicprompts[attentiongrabber,magicprompt]
+```
+
+4. Restart the webui and check. If the webui uses a different python binary, find the correct path to the python binary and run:
+
+```shell
+/path/to/python/binary/python -m pip install -U dynamicprompts[attentiongrabber,magicprompt]
+```
+
+5. If the Wildcard UI does not show, it could be due to an outdated library version. Check for errors in the terminal and update the library as described in step 3.
+
+6. If you get an error message saying "No values found for wildcard some/wildcard", ensure that the file wildcard.txt is in extensions/sd-dynamic-prompts/wildcards/some/. The full path is required, as relative paths are not currently supported.
+
+7. If the issue persists, search for solutions in the [issues section](https://github.com/adieyal/sd-dynamic-prompts/issues?q=is%3Aissue) on Github and the [discussion forum](https://github.com/adieyal/sd-dynamic-prompts/discussions). If you cannot find a solution, create a new issue and give it a descriptive name, such as "Wildcard values are being ignored in prompt templates". Provide the necessary context, including the versions of the Dynamic Prompts extension and library, and mention the operating system or colab being used. If there is an error in the terminal, copy and paste the entire text or take a screenshot.
+
+8. Finally, it is essential to test and apply any fixes we release. Your feedback is valuable, as an issue that works in our environment may not work in yours.
+
+## Compatible Scripts
+Dynamic Prompts works particularly well with X/Y Plot - setting Dynamic Prompts to combinatorial mode while using X/Y Plot, lets you exhaustively test prompt and paramter variations simultaneously.
+
+
+## Template syntax
+Documentation can be found [here](docs/SYNTAX.md)
+
+### Fuzzy Glob/recursive wildcard file/directory matching
+In addition to standard wildcard tokens such as `__times__` -> `times.txt`, you can also use globbing to match against multiple files at once.
+For instance:
+
+`__colors*__` will match any of the following:
+- WILDCARD_DIR/colors.txt
+- WILDCARD_DIR/colors1.txt
+- WILDCARD_DIR/nested/folder/colors1.txt
+
+`__light/**/*__` will match:
+- WILDCARD_DIR/nested/folder/light/a.txt
+- WILDCARD_DIR/nested/folder/light/b.txt
+
+but won't match
+- WILDCARD_DIR/nested/folder/dark/a.txt
+- WILDCARD_DIR/a.txt
+
+You can also used character ranges `[0-9]` and `[a-z]` and single wildcard characters `?`. For more examples see [this article](http://pymotw.com/2/glob/).
+
+## Combinatorial Generation
+Instead of generating random prompts from a template, combinatorial generation produced every possible prompt from the given string. For example:
+`I {love|hate} {New York|Chicago} in {June|July|August}`
+
+will produce:
+- I love New York in June
+- I love New York in July
+- I love New York in August
+- I love Chicago in June
+- I love Chicago in July
+- I love Chicago in August
+- I hate New York in June
+- I hate New York in July
+- I hate New York in August
+- I hate Chicago in June
+- I hate Chicago in July
+- I hate Chicago in August
+
+If a `__wildcard__` is provided, then a new prompt will be produced for every value in the wildcard file. For example:
+`My favourite season is __seasons__`
+
+will produce:
+- My favourite season is Summer
+- My favourite season is August
+- My favourite season is Winter
+- My favourite season is Sprint
+
+
+
+You also arbitrarily nest combinations inside wildcards and wildcards in combinations.
+
+Combinatorial generation can be useful if you want to create an image for every artist in a file. It can be enabled by checking the __Combinatorial generation__ checkbox in the ui. In order to prevent accidentially producing thousands of images, you can limit the total number of prompts generated using the **Max Generations** slider. A value of 0 (the default) will not set any limit.
+
+### Combinatorial Batches
+The combinatorial batches slider lets you repeat the same set of prompts a number of times with different seeds. The default number of batches is 1.
+
+### Increasing the maximum number of generations
+By default, the __Batch count__ silder of automatic1111 has a maximum value of 100. This can limit the maximum number of generations when using combinatorial generation. You can change the maximum value of this slider by editing ui-config.json and change:
+
+ txt2img/Batch count/maximum": 100
+
+to something larger like:
+
+ txt2img/Batch count/maximum": 1000
+
+## Fixed seed
+Select this if you want to use the same seed for every generated image. If there are no wildcards then all the images will be identical. It is useful if you want to test the effect of a particular modifier. For example:
+
+ A beautiful day at the beach __medium/photography/filmtypes__
+
+That way you can isolate the effect of each film type on a particular scene. Here are some of the results:
+
+
+## Magic Prompt
+Use one of a number of prompt generation models to spice up your prompt.
+
+Using [Gustavosta](https://huggingface.co/Gustavosta/MagicPrompt-Stable-Diffusion)'s MagicPrompt model, Trained on 80,000 prompts from [Lexica.art](lexica.art), it can help give you interesting new prompts on a given subject. Here are some automatically generated variations for "dogs playing football":
+
+> dogs playing football, in the streets of a japanese town at night, with people watching in wonder, in the style of studio ghibli and makoto shinkai, highly detailed digital art, trending on artstation
+
+> dogs playing football, in the background is a nuclear explosion. photorealism. hq. hyper. realistic. 4 k. award winning.
+
+> dogs playing football, in the background is a nuclear explosion. photorealistic. realism. 4 k wideshot. cinematic. unreal engine. artgerm. marc simonetti. jc leyendecker
+
+This is compatible with the wildcard syntax described above.
+
+### Other models
+* [daspartho/prompt-extend (~500mb)](https://huggingface.co/daspartho/prompt-extend)
+* [succinctly/text2image-prompt-generator (~600mb)](https://huggingface.co/succinctly/text2image-prompt-generator) - Trained on Midjourney prompts
+* [microsoft/Promptist (~500mb)](https://huggingface.co/microsoft/Promptist) - Read the paper [here](https://arxiv.org/abs/2212.09611)
+* [AUTOMATIC/promptgen-lexart (~300mb)](https://huggingface.co/AUTOMATIC/promptgen-lexart) - Finetuned using 134,819 prompts from lexica.art
+* [AUTOMATIC/promptgen-majinai-safe (~300mb)](https://huggingface.co/AUTOMATIC/promptgen-majinai-safe) - 1,654 prompts from majinai.art
+* [AUTOMATIC/promptgen-majinai-unsafe (~300mb)](https://huggingface.co/AUTOMATIC/promptgen-majinai-unsafe) - 825 prompts from majinai.art (NSFW)
+* [Gustavosta/MagicPrompt-Dalle](https://huggingface.co/Gustavosta/MagicPrompt-Dalle)
+* [kmewhort/stable-diffusion-prompt-bolster (~500mb)](https://huggingface.co/kmewhort/stable-diffusion-prompt-bolster),
+* [Ar4ikov/gpt2-650k-stable-diffusion-prompt-generator (~500mb)](Ar4ikov/gpt2-650k-stable-diffusion-prompt-generator),
+* [Ar4ikov/gpt2-medium-650k-stable-diffusion-prompt-generator (~1.4gb)](https://huggingface.co/Ar4ikov/gpt2-medium-650k-stable-diffusion-prompt-generator),
+* [crumb/bloom-560m-RLHF-SD2-prompter-aesthetic (~1.1gb)](https://huggingface.co/crumb/bloom-560m-RLHF-SD2-prompter-aesthetic),
+* [Meli/GPT2-Prompt (~500mb)](https://huggingface.co/Meli/GPT2-Prompt),
+* [DrishtiSharma/StableDiffusion-Prompt-Generator-GPT-Neo-125M (~550mb)](https://huggingface.co/DrishtiSharma/StableDiffusion-Prompt-Generator-GPT-Neo-125M)
+
+The first time you use a model, it is downloaded. It is approximately 500mb and so will take some time depending on how fast your connection is. It will also take a few seconds on first activation as the model is loaded into memory. Note, if you're low in VRAM, you might get a Cuda error. My GPU uses less than 8GB but YMMV.
+
+
+
+
+You can control the maximum prompt length with the __Max magic prompt length__ slider. __Magic prompt creativity__ can adjust the generated prompt but you will need to experiment with this setting.
+
+Use the __Magic prompt blocklist regex__ to filter out keywords. For example, if you want to avoid prompts containing Greg Rutkowski, add his name to this field.
+
+If you are generating many prompts using Magic Prompt, then increasing the __Magic Prompt batch size__ can improve significantly improve prompt generation speed. This may only be noticeable if you are not generating images as well since image generation is much slower than prompt generation.
+
+
+## I'm feeling lucky
+Use the [lexica.art](https://lexica.art) API to create random prompts. Useful if you're looking for inspiration, or are simply too lazy to think of your own prompts. When this option is selected, the prompt in the main prompt box is used as a search string. For example, prompt "Mech warrior" might return:
+
+* A large robot stone statue in the middle of a forest by Greg Rutkowski, Sung Choi, Mitchell Mohrhauser, Maciej Kuciara, Johnson Ting, Maxim Verehin, Peter Konig, final fantasy , 8k photorealistic, cinematic lighting, HD, high details, atmospheric,
+* a beautiful portrait painting of a ( ( ( cyberpunk ) ) ) armor by simon stalenhag and pascal blanche and alphonse mucha and nekro. in style of digital art. colorful comic, film noirs, symmetry, brush stroke, vibrating colors, hyper detailed. octane render. trending on artstation
+* symmetry!! portrait of a robot astronaut, floral! horizon zero dawn machine, intricate, elegant, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration, art by artgerm and greg rutkowski and alphonse mucha, 8 k
+
+
+
+Leaving the prompt box blank returns a list of completely randomly chosen prompts.
+
+## Attention grabber
+This option randomly selects a keyword in your prompt and adds a random amount of emphasis. Below is an example of how this affects the prompt:
+
+ a portrait an anthropomorphic panda mage casting a spell, wearing mage robes, landscape in background, cute, dnd character art portrait, by jason felix and peter mohrbacher, cinematic lighting
+
+
+
+Tick the __Fixed seed__ checkbox under __Advanced options__ to see how emphasis changes your image without changing seed.
+
+
+## Write prompts to file
+Check the write prompts to file checkbox in order to create a file with all generated prompts. The generated file is a slugified version of the prompt and can be found in the same directory as the generated images, e.g. outputs/txt2img-images
+
+
+## Jinja2 templates
+[Jinja2 templates](https://jinja.palletsprojects.com/en/3.1.x/templates/) is an experimental feature that enables you to define prompts imperatively. This is an advanced feature and is only recommended for users who are comfortable writing scripts.
+
+To enable, open the advanced accordion and select __Enable Jinja2 templates__.
+
+
+You can read about them in more detail here
+
+## WILDCARD_DIR
+The extension looks for wildcard files in WILDCARD_DIR. The default location is /path/to/stable-diffusion-webui/extensions/sd-dynamic-prompts/wildcards. It can also be manually defined in the main webui config.json under wildcard_dir. When in doubt, the help text for the extension in the webui lists the full path to WILDCARD_DIR
+
+## Collections
+The collections directory contains modifier libraries that you can use as is or to bootstrap your own. To get started, either use the Wildcard Manager tab to copy a one or more collections to your wildcards folder, or you can manually copy the files across. There are currently three collections:
+
+- [jumbo](https://github.com/adieyal/sd-dynamic-prompts/tree/main/collections/jumbo)
+- [parrotzone](https://github.com/adieyal/sd-dynamic-prompts/tree/main/collections/parrotzone)
+- [devilkkw](https://github.com/adieyal/sd-dynamic-prompts/tree/main/collections/devilkkw)
+
+Jumbo is a very large collection of wildcards across many categories including aesthetics, appearance, artists, medium, style, and time. It is a work in progress, but aims to provide good coverage of various modifier categories.
+
+Parrotzone is a far smaller and more manageable collection sourced from https://proximacentaurib.notion.site/e28a4f8d97724f14a784a538b8589e7d?v=42948fd8f45c4d47a0edfc4b78937474.
+
+Devilkkw focuses more on character building, clothes, gestures, food, etc
+
+If you're using a Unix/Linux O/S, you can easily create a symlink to the relevant collection rather than copying it across if you don't plan to alter it. E.g.
+
+ ln -sr collections/parrotzone wildcards/
+
+## Dynamic Prompts and Random Seeds
+Random seeds play an important role in controlling the randomness of the generated outputs. Let's discuss how Dynamic Prompts works with random seeds in different scenarios.
+
+### Without Dynamic Prompts Enabled
+!. Seed set to -1: A random seed is selected, the first image is generated using that seed, the next image is generated with that seed + 1, and so on.
+2. Seed set to a number > -1: The process is the same as above, but the seed used is the one chosen.
+3. Variation seed set but variation strength is set to zero: The situation is the same as the previous two scenarios.
+4. Variation seed set to a number > 0: All images are created using the same seed (either randomly chosen or set by the user). The variation seed is either chosen at random (if set to -1) or the value selected by the user. The first image is generated using the variation seed, the next with the variation seed + 1, and so on.
+
+### With Dynamic Prompts Enabled in Random/Standard Mode
+1. Seed set to -1: The situation is the same as the first item above, but the prompt is chosen using the same seed (if using the random prompt generator).
+2. Seed set to a number > -1: The situation is the same as the second item above, except that a random prompt is generated using the given seed (if using the prompt generator).
+3. Fixed seed checkbox checked: Instead of incrementing the seed, the same seed is used for all images and prompts, i.e., you generate the same image (not very useful).
+4. Fixed seed and unlink seed from prompt checkboxes checked: A random seed is used for the prompt, and the same seed is used for images. This is useful if you want to test how different prompts affect the same image.
+
+### Variation Seeds with Dynamic Prompts
+1. Variation strength set to 0: Variations are ignored.
+2. Variation set to a number > 0: A variation seed is assigned to every image, incrementing by one each time. However, only 1 prompt is generated since you are looking for variations of the same image.
+
+### Combinatorial Mode with Variation Strength > 0
+In this case, it only generates the first image for you, which is probably not what you want. To get the desired results, you might need to adjust the settings or use a different mode.
diff --git a/ex/dynamic-prompts/_tools/import_noodle_soup_prompts.py b/ex/dynamic-prompts/_tools/import_noodle_soup_prompts.py
new file mode 100644
index 0000000000000000000000000000000000000000..8bf9f2a0fa761dc8f0d2408f0770a7c9f8b03855
--- /dev/null
+++ b/ex/dynamic-prompts/_tools/import_noodle_soup_prompts.py
@@ -0,0 +1,87 @@
+"""
+Import collections/nsp from https://github.com/WASasquatch/noodle-soup-prompts.
+
+This script is intended to be run from the root of the repository;
+it's best to delete the existing collections/nsp folder first to avoid
+duplicate entries.
+
+You would then import these via the WebUI to your wildcards collection.
+"""
+import collections
+import logging
+from pathlib import Path
+
+import requests
+
+logger = logging.getLogger(__name__)
+
+
+def get_tag_group(tag):
+ return tag.partition("-")[0]
+
+
+def get_grouped_tags():
+ pantry_url = "https://raw.githubusercontent.com/WASasquatch/noodle-soup-prompts/main/nsp_pantry.json"
+ resp = requests.get(pantry_url)
+ resp.raise_for_status()
+ pantry = {tag.lower(): entries for (tag, entries) in resp.json().items()}
+ grouped_tags = collections.defaultdict(list)
+ for tag, entries in pantry.items():
+ grouped_tags[get_tag_group(tag)].append((tag, entries))
+ return grouped_tags
+
+
+def main():
+ count_files = 0
+ current_path = Path.cwd()
+ if current_path.name == "_tools":
+ current_path = current_path.parent
+
+ can_overwrite = None
+
+ grouped_tags = get_grouped_tags()
+ collections_dir = current_path / "collections"
+
+ if not collections_dir.exists():
+ print(
+ "Could not find the collections directory. You should run this from the root of the repository",
+ )
+ else:
+ for tag_group_name, tags_in_group in sorted(grouped_tags.items()):
+ tag_group_name = (
+ "nsp" if len(tags_in_group) == 1 else f"nsp-{tag_group_name}"
+ )
+ for tag, entries in sorted(tags_in_group):
+ filename = collections_dir / f"./nsp/{tag_group_name}/{tag}.txt"
+ filename.parent.mkdir(parents=True, exist_ok=True)
+
+ if can_overwrite is None and filename.exists():
+ answer = input(
+ f"Skipping {filename} as it already exists. Should we overwrite existing files? (y/n)",
+ )
+ if answer.strip().lower() == "y":
+ can_overwrite = True
+ else:
+ can_overwrite = False
+
+ if can_overwrite is None or can_overwrite is True:
+ count_files += 1
+ with filename.open("w", encoding="utf-8") as f:
+ for entry in sorted(entries):
+ try:
+ f.write(f"{entry}\n")
+ except UnicodeEncodeError:
+ logger.warning(f"Error writing {entry} to {filename}")
+
+ print(f"{filename}: {len(entries)} entries")
+
+ print("")
+ print(f"{count_files} files copied to {collections_dir}")
+ if count_files > 0:
+ print(
+ "You should now import these via the WebUI to your wildcards collection using the Wildcards Manager tab.",
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/baroque.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/baroque.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6c2cb0c9fbc8dee135e2f8b18a5e8dd49a335ecd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/baroque.txt
@@ -0,0 +1,11 @@
+__artists/European Art/baroque/italian_baroque_painters__
+__artists/European Art/baroque/french_baroque_painters__
+__artists/European Art/baroque/british_baroque_painters__
+__artists/European Art/baroque/czech_baroque_painters__
+__artists/European Art/baroque/danish_baroque_painters__
+__artists/European Art/baroque/german_baroque_painters__
+__artists/European Art/baroque/greek_baroque_painters__
+__artists/European Art/baroque/netherlandish_baroque_painters__
+__artists/European Art/baroque/flemish_baroque_painters__
+__artists/European Art/baroque/quadratura__
+__artists/European Art/baroque/spanish_baroque_painters__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/bentvueghels.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/bentvueghels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e6bf4ffa174ba65ed84da60a7d4bf6fdae7b982
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/bentvueghels.txt
@@ -0,0 +1,114 @@
+Abraham Brueghel
+Abraham Genoels
+Adriaen Foly
+Adriaen Honich
+Adriaen van der Cabel
+Albertus Clouwet
+Albert van Spiers
+Andries Both
+Anthoni Schoonjans
+Augustinus Terwesten
+Bartholomeus Appelman
+Bartholomeus Breenbergh
+Bernard de Bailliu
+Bonaventura van Overbeek
+Carel de Vogelaer
+Caspar van Wittel
+Christian Reder
+Cornelis Bloemaert
+Cornelis de Bruijn
+Cornelis Schut
+Cornelis van Poelenburgh
+Cornelis van Rijssen
+Cornelis van Slingeland
+Daniel Mijtens the Younger
+Daniel Seiter
+David Beck
+David de Coninck
+Dirck van Baburen
+Domenicus van Wijnen
+Ezaias Terwesten
+Franciscus de Neve (II)
+Francis van Bossuit
+Francoys Dancx
+Frans Beeldemaker
+Franz Ludwig Raufft
+Franz Werner von Tamm
+Gaspar de Witte
+Gerard van Kuijl
+Hans IV Jordaens
+Hendrick Mommers
+Hendrik Frans van Lint
+Herman van Swanevelt
+Hubertus Quellinus
+Ignatius Croon
+Isaac de Moucheron
+Jacob de Decker
+Jacob de Heusch
+Jacob Ferdinand Voet
+Jacob Leyssens
+Jacob Toorenvliet
+Jacobus de Baen
+Jacob van der Does
+Jacob van Staverden
+Jacques Blondeau
+Jacques Vaillant (painter)
+Jan Asselijn
+Jan Baptist Brueghel
+Jan Baptist Weenix
+Jan Boeckhorst
+Jan Dirksz Both
+Jan Erasmus Quellinus
+Jan Frans van Bloemen
+Jan Fyt
+Jan Linsen
+Jan Theunisz Blanckerhoff
+Jan van Bijlert
+Jan van Bunnik
+Jean Baptiste Assenede
+Jean Ducamps
+Joachim von Sandrart
+Johannes Glauber
+Johannes Gottlieb Glauber
+Johannes Jansz. van Bronckhorst
+Johann Liss
+Johann Wilhelm Baur
+Johan Teyler
+Johan Zierneels
+Karel Dujardin
+Karel Škréta
+Leonaert Bramer
+Luigi Primo
+Mattheus Terwesten
+Matthias Withoos
+Nicolaas Piemont
+Nicolaes Latombe
+Norbert van Bloemen
+Otto Marseus van Schrieck
+Paulus Bor
+Philipp Peter Roos
+Philips de Momper the Elder
+Pieter Anthonisz. van Groenewegen
+Pieter de Zeelander
+Pieter Fris
+Pieter Hofman
+Pieter Mulier II
+Pieter van Bloemen
+Pieter van der Hulst (IV)
+Pieter van Laer
+Pieter Verbrugghen the Younger
+Reinier van Persijn
+Robbert Duval (1639–1732)
+Samuel Dirksz van Hoogstraten
+Simon Ardé
+Theodoor Wilkens
+Theodor van der Schuer
+Thomas Mathisen
+Tyman Arentsz. Cracht
+Willem Doudijns
+Willem Gabron
+Willem van Aelst
+Willem van Bemmel
+Willem van Ingen
+Wouter Crabeth II
+Wybrand de Geest
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/british_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/british_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..257578141383140ebec8a1b34770e8ad2d72c461
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/british_baroque_painters.txt
@@ -0,0 +1,8 @@
+Alexander Cooper
+Cornelius Johnson
+Godfrey Kneller
+Jan Griffier
+Joan Carlile
+John Hayls
+Mary Beale
+Richard Gibson
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/czech_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/czech_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..563662e62246674076b465342ae8ce38a9f9c9a1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/czech_baroque_painters.txt
@@ -0,0 +1,5 @@
+Petr Brandl
+Jan Kryštof Liška
+Wenzel Lorenz Reiner
+Karel Škréta
+Anton Stevens
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/danish_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/danish_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e885cbd71e774be52ae91ca428683218e2cee692
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/danish_baroque_painters.txt
@@ -0,0 +1,12 @@
+Adriaen Foly
+Andreas Brünniche
+Andreas Møller
+Benoît Le Coffre
+Bernhard Keil
+Ebbe Ulfeldt
+Heinrich Jansen
+Jacques d'Agar
+Johan Jacob Bruun
+Jürgen Ovens
+Lambert van Haven
+Pieter Isaacsz
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/dutch_goldenage_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/dutch_goldenage_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc4386b15840653fba8a1986780318b88bd768fe
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/dutch_goldenage_painters.txt
@@ -0,0 +1,828 @@
+Aart Jansz Druyvesteyn
+Abraham Beerstraaten
+Abraham Begeyn
+Abraham Bloemaert
+Abraham Bosschaert
+Abraham Casembroot
+Abraham de Heusch
+Abraham de Verwer
+Abraham de Vries
+Abraham Diepraam
+Abraham Furnerius
+Abraham Hondius
+Abraham Lambertsz van den Tempel
+Abraham Mignon
+Abraham Staphorst
+Abraham Storck
+Abraham Susenier
+Abraham van Beijeren
+Abraham van Calraet
+Abraham van Cuylenborch
+Abraham van den Hecken
+Abraham van der Haagen
+Abraham van der Hoef
+Abraham van Diepenbeeck
+Abraham van Dijck
+Abraham Willaerts
+Abraham Wuchters
+Adam Colonia
+Adam de Colone
+Adam Pynacker
+Adam van Breen
+Adam Willaerts
+Adriaan Bloemaert
+Adriaan Gerritsz de Vrije
+Adriaen Backer
+Adriaen Coorte
+Adriaen Cornelisz Beeldemaker
+Adriaen Cornelisz van Linschoten
+Adriaen Hanneman
+Adriaen Hendriksz Verboom
+Adriaen Honich
+Adriaen Jansz Kraen
+Adriaen Oudendijck
+Adriaen van der Burch
+Adriaen van der Cabel
+Adriaen van der Spelt
+Adriaen van der Werff
+Adriaen van de Velde
+Adriaen van de Venne
+Adriaen van Eemont
+Adriaen van Gaesbeeck
+Adriaen van Nieulandt
+Adriaen van Ostade
+Adriaen Verdoel
+Adriana Spilberg
+Aelbert Cuyp
+Aert Anthoniszoon
+Aert de Gelder
+Aert Jansz Marienhof
+Aert Pietersz
+Aert van der Neer
+Aert van Waes
+Albert Eckhout
+Albert Jansz. Klomp
+Albert Meijeringh
+Albert van Spiers
+Aleijda Wolfsen
+Alexander Westerhout
+Alida Withoos
+Allaert van Everdingen
+Ambrosius Bosschaert
+Ambrosius Bosschaert II
+Andries Beeckman
+Andries Both
+Andries Vaillant
+Anna Cornelia Holt
+Anna Maria van Schurman
+Anna Ruysch
+Anthonie Beerstraaten
+Anthonie de Lorme
+Anthonie Hals
+Anthonie Jansz. van der Croos
+Anthonie Leemans
+Anthonie Palamedesz.
+Anthonie van Borssom
+Anthonie Verstraelen
+Anthony Vreem
+Antonie Waterloo
+Arent Arentsz
+Arnold Houbraken
+Arnoldus van Anthonissen
+Arnold van Ravesteyn
+Arnout Elsevier
+Ary de Vois
+Ary Huybertsz Verveer
+Balthasar van der Ast
+Balthasar van der Veen
+Balthazar Gerbier
+Bamboccianti
+Barend Bispinck
+Barend Graat
+Barend van der Meer
+Barend van Eijsen
+Barend van Someren
+Barent Avercamp
+Barent Fabritius
+Barent Gael
+Barent van Kalraet
+Bartholomeus Appelman
+Bartholomeus Assteyn
+Bartholomeus Breenbergh
+Bartholomeus Maton
+Bartholomeus Meyburgh
+Bartholomeus Molenaer
+Bartholomeus van Bassen
+Bartholomeus van der Helst
+Bartram de Fouchier
+Bastiaan Govertsz van der Leeuw
+Benjamin Gerritsz Cuyp
+Bentvueghels
+Bernardus van Schijndel
+Bernard Vaillant
+Caesar van Everdingen
+Carel de Moor
+Carel Fabritius
+Carel van Savoyen
+Caspar Netscher
+Caspar van Wittel
+Catharina Oostfries
+Catharina van Knibbergen
+Charles Cornelisz. de Hooch
+Christiaan Coevershoff
+Christiaen Jansz van Bieselingen
+Christiaen Striep
+Christiaen van Couwenbergh
+Christoffel Pierson
+Christoffel Puytlinck
+Christoffel van den Berghe
+Claes Corneliszoon Moeyaert
+Claes Dirksz van der Heck
+Claes Isaacsz. van Swanenburg
+Claes Jacobsz van der Heck
+Claes Pietersz van der Meulen
+Claes van Beresteyn
+Claes van Heussen
+Clara Peeters
+Claude de Jongh
+Confrerie Pictura
+Constantijn à Renesse
+Cornelia van Marle
+Cornelis Beelt
+Cornelis Biltius
+Cornelis Bisschop
+Cornelis Bloemaert
+Cornelis Brisé
+Cornelis Brouwer
+Cornelis Claesz van Wieringen
+Cornelis de Bie
+Cornelis de Heem
+Cornelis de Man
+Cornelis Droochsloot
+Cornelis Dusart
+Cornelis Engelsz
+Cornelis Gerritsz Decker
+Cornelis Holsteyn
+Cornelis IJsbrantsz Cussens
+Cornelis Jacobsz Delff
+Cornelis Ketel
+Cornelis Kick
+Cornelis Kruys
+Cornelis Liefrinck
+Cornelis Pietersz Bega
+Cornelis Saftleven
+Cornelis Snellinck
+Cornelis Stooter
+Cornelis Symonsz van der Schalcke
+Cornelis van der Meulen
+Cornelis van der Voort
+Cornelis van Haarlem
+Cornelis van Poelenburgh
+Cornelis van Slingeland
+Cornelis Verbeeck
+Cornelis Vroom
+Cornelius Janson van Ceulen the Younger
+Cornelius Johnson
+Crijn Hendricksz Volmarijn
+Daniël de Blieck
+Daniël Mijtens
+Daniel Mijtens the Younger
+Daniël Schellinks
+Daniel Thivart
+Daniël Tomberg
+Daniel Vertangen
+Daniel Vosmaer
+David Bailly
+David Beck
+David Colijns
+David Cornelisz de Heem
+David Davidsz de Heem
+David de Haen
+David de Meyne
+David van der Plas
+David Vinckboons
+Diana Glauber
+Dionys Verburg
+Dirck Bleker
+Dirck Cornelis de Hooch
+Dirck Dalens the Elder
+Dirck de Bray
+Dirck de Quade van Ravesteyn
+Dirck Ferreris
+Dirck Govertsz
+Dirck Hals
+Dirck Helmbreker
+Dirck van Baburen
+Dirck van Bergen
+Dirck van Delen
+Dirck van der Lisse
+Dirck van Santvoort
+Dirck Wijntrack
+Dirk Dalens
+Dirk de Vrije
+Dirk Maas
+Dirk Meerkerk
+Dirk Pietersz
+Dirk Rafaelsz Camphuysen
+Dirk Stoop
+Dirk Valkenburg
+Dirk van Hoogstraten
+Domenicus van Wijnen
+Dominicus van Tol
+Douwe Juwes de Dowe
+Dutch Golden Age painting
+Egbert van der Poel
+Egbert van Heemskerck
+Eglon van der Neer
+Elias van den Broeck
+Elias Vonck
+Emanuel de Witte
+Emanuel Murant
+Esaias Boursse
+Esaias van de Velde
+Eva van Marle
+Everard Crijnsz. van der Maes
+Evert Collier
+Evert Oudendijck
+Evert van Aelst
+Ferdinand Bol
+Fijnschilder
+Floris van Dyck
+Floris van Schooten
+Franciscus Carree
+François van Knibbergen
+François Verwilt
+Francoys Dancx
+Frans Beeldemaker
+Frans de Hulst
+Frans Hals
+Frans Hals the Younger
+Frans Menton
+Frans Pietersz de Grebber
+Frans Post
+Frans van Mieris the Elder
+Frans Withoos
+Frederik de Moucheron
+Gabriël Metsu
+Geertgen Wyntges
+Geertruydt Roghman
+Gerard de Lairesse
+Gerard Donck
+Gerard Edema
+Gerard Hoet
+Gerard Houckgeest
+Gerard Pietersz van Zijl
+Gerard Soest
+Gerard ter Borch
+Gerard ter Borch the Elder
+Gerard van Deynen
+Gerard van Honthorst
+Gerard van Kuijl
+Gerbrand van den Eeckhout
+Gerret Willemsz. Heda
+Gerrit Battem
+Gerrit Berckheyde
+Gerrit Claesz Bleker
+Gerrit de Hooch
+Gerrit de Wet
+Gerrit Dou
+Gerrit Gerritsz Cuyp
+Gerrit Lundens
+Gerrit Pietersz Sweelink
+Gerrit van Santen
+Gerrit van Uylenburgh
+Gerrit Willemsz Horst
+Gesina ter Borch
+Gijsbert d'Hondecoeter
+Gijsbert Verhoek
+Gillis d'Hondecoeter
+Gillis Gillisz. de Bergh
+Gillis Rombouts
+Gillis Schagen
+Godfried Schalcken
+Govert Dircksz Camphuysen
+Govert Flinck
+Govert van der Leeuw
+Guillam Dubois
+Guilliam du Gardijn
+Hans de Jode
+Hans Gillisz. Bollongier
+Hans Goderis
+Hans IV Jordaens
+Harmen Hals
+Harmen Steenwijck
+Heerman Witmont
+Heiman Dullaert
+Hendrick Avercamp
+Hendrick Berckman
+Hendrick Bloemaert
+Hendrick Bogaert
+Hendrick Cornelisz. van Vliet
+Hendrick Cornelisz Vroom
+Hendrick Couturier
+Hendrick Danckerts
+Hendrick de Meijer
+Hendrick Dubbels
+Hendrick Fromantiou
+Hendrick Goltzius
+Hendrick Goudt
+Hendrick Mommers
+Hendrick ten Oever
+Hendrick ter Brugghen
+Hendrick van Anthonissen
+Hendrick van der Burgh
+Hendrick van Someren
+Hendrick van Streeck
+Hendrik Carré
+Hendrik Gerritsz Pot
+Hendrik Graauw
+Hendrik Heerschop
+Hendrik Martenszoon Sorgh
+Hendrik Rietschoof
+Hendrik Schoock
+Hendrik van Minderhout
+Hendrik van Steenwijk II
+Hendrik Verschuring
+Henry Ferguson
+Hercules Seghers
+Herman Doncker
+Herman Naiwincx
+Herman Saftleven
+Herman van Aldewereld
+Herman van der Mast
+Herman van Swanevelt
+Herman Verelst
+Horatius Paulijn
+Hubert van Ravesteyn
+Huchtenburg
+Huijgh Pietersz. Voskuijl
+Huybrecht Jacobsz Grimani
+Isaac Claesz. van Swanenburg
+Isaac Colonia
+Isaac de Jouderville
+Isaac Ducart
+Isaac Elias
+Isaack Gilsemans
+Isaack Luttichuys
+Isaac Koedijck
+Isaac Koene
+Isaack van Ruisdael
+Isaac Paling
+Isaac Sailmaker
+Isaac van Duynen
+Isaac van Ostade
+Isaak van Nickelen
+Isac Vromans
+Israel Covyn
+Jacob Adriaensz Backer
+Jacob Adriaensz Bellevois
+Jacob Biltius
+Jacob Block
+Jacob de Decker
+Jacob de Gheyn II
+Jacob de Gheyn III
+Jacob de Heusch
+Jacob de Wet II
+Jacob de Wolf
+Jacob Duck
+Jacob Esselens
+Jacob Gerritsz. Cuyp
+Jacob Gerritsz. Loef
+Jacob Gillig
+Jacob Isaacsz. van Swanenburg
+Jacob Jansz. Coeman
+Jacob Jansz van Velsen
+Jacob Knijff
+Jacob Koninck
+Jacob Lambrechtsz. Loncke
+Jacob Levecq
+Jacob Marrel
+Jacob Moelaert
+Jacob Ochtervelt
+Jacob Potma
+Jacob Pynas
+Jacob Rotius
+Jacob Salomonsz van Ruysdael
+Jacob Toorenvliet
+Jacobus de Baen
+Jacobus Mancadan
+Jacobus Storck
+Jacob van Bunnik
+Jacob van Campen
+Jacob van der Does
+Jacob van der Roer van Dordrecht
+Jacob van der Sluys
+Jacob van der Ulft
+Jacob van Geel
+Jacob van Loo
+Jacob van Moscher
+Jacob van Musscher
+Jacob van Ruisdael
+Jacob van Staverden
+Jacob van Walscapelle
+Jacob Vosmaer
+Jacob Vrel
+Jacob Willemsz Delff the Younger
+Jacob Willemszoon de Wet
+Jacques de Claeuw
+Jacques Vaillant
+Jacques Waben
+Jan Abrahamsz Beerstraaten
+Jan Adriaensz van Staveren
+Jan Aelbertsz Riethoorn
+Jan Albertsz Rotius
+Jan Ariens Duif
+Jan Asselijn
+Jan Baptist van Fornenburgh
+Jan Baptist Weenix
+Jan Claesz
+Jan Claesz Rietschoof
+Jan Coelenbier
+Jan Daemen Cool
+Jan Damesz de Veth
+Jan Davidsz. de Heem
+Jan de Baen
+Jan de Bisschop
+Jan de Bray
+Jan de Groot
+Jan den Uyl
+Jan de Visscher
+Jan Dirksz Both
+Jan Franse Verzijl
+Jan Frans van Douven
+Jan Gabrielsz Sonjé
+Jan Gerritsz van Bronckhorst
+Jan Gillisz van Vliet
+Jan Goedart
+Jan Griffier
+Jan Hackaert
+Jan Hals
+Jan Harmensz. Muller
+Jan Hoogsaat
+Jan Jansz Buesem
+Jan Jansz. de Stomme
+Jan Janszoon de Heem
+Jan Jansz. Treck
+Jan Jansz van de Velde
+Jan Janz Slop
+Jan Karel Donatus van Beecq
+Jan Lagoor
+Jan Lievens
+Jan Linsen
+Jan Looten
+Jan Maertz Engelsman
+Jan Martszen de Jonge
+Jan Matham
+Jan Meerhout
+Jan Micker
+Jan Miense Molenaer
+Jan Moninckx
+Jan Olis
+Jan Philipsz van Bouckhorst
+Jan Porcellis
+Jan Pynas
+Jan Savery
+Jan Snellinck
+Jan Soukens
+Jan Steen
+Jan Tengnagel
+Jan Theunisz Blanckerhoff
+Jan Vaillant
+Jan van Aken
+Jan van Assen
+Jan van Bijlert
+Jan van Bunnik
+Jan van Call
+Jan van de Cappelle
+Jan van den Bergh
+Jan van der Heyden
+Jan van der Lijs
+Jan van de Velde
+Jan van Goyen
+Jan van Hoogstraten
+Jan van Kessel
+Jan van Leyden
+Jan van Mieris
+Jan van Neck
+Jan van Nickelen
+Jan van Noordt
+Jan van Oolen
+Jan van Ossenbeeck
+Jan van Pee
+Jan van Ravesteyn
+Jan Verkolje
+Jan Vermeer van Haarlem
+Jan Vermeer van Haarlem the Elder
+Jan Vermeer van Utrecht
+Jan Victors
+Jan Vonck
+Jan Weenix
+Jan Wijnants
+Jan Willemsz Lapp
+Jan Willemsz. van der Wilde
+Jan Wils
+Jan Worst
+Jan Woutersz Stap
+Jan Wouwerman
+Jan Wyck
+Jasper van den Bos
+Jelle Reyners
+Jeronimus Sweerts
+Jeronymus van Diest
+Joachim Govertsz Camphuysen
+Joachim von Sandrart
+Joachim Wtewael
+Joanna Koerten
+Joan van der Spriet
+Job Adriaenszoon Berckheyde
+Johan Bara
+Johan Danckerts
+Johan le Ducq
+Johannes Borman
+Johannes Bosschaert
+Johannes Buns
+Johannes Colaert
+Johannes Cornelisz Verspronck
+Johannes Fabritius
+Johannes Glauber
+Johannes Gottlieb Glauber
+Johannes Jansz. van Bronckhorst
+Johannes Leemans
+Johannes Lingelbach
+Johannes Moreelse
+Johannes Mytens
+Johannes Spilberg
+Johannes Thopas
+Johannes van Bronckhorst
+Johannes van der Aeck
+Johannes van der Beeck
+Johannes van der Bent
+Johannes van Haensbergen
+Johannes van Wijckersloot
+Johannes Vermeer
+Johannes Vingboons
+Johannes Vollevens
+Johannes Withoos
+Johan Starrenberg
+Johan Teyler
+Johan van Nes
+Johan Zierneels
+John Verelst
+Joost Cornelisz Droochsloot
+Joost van Geel
+Joris van der Haagen
+Joris van Schooten
+Joseph de Bray
+Josua de Grave
+Jozef Oostfries
+Judith Leyster
+Julius Porcellis
+Jürgen Ovens
+Juriaen Jacobsze
+Juriaen van Streeck
+Justus van Huysum
+Karel Dujardin
+Karel Slabbaert
+Karel van der Pluym
+Karel van Mander
+Karel van Mander III
+Karel van Mander the Younger
+Krzysztof Lubieniecki
+Lambert Doomer
+Lambert Jacobsz
+Laurens Craen
+Leendert van Beijeren
+Leendert van der Cooghen
+Leonaert Bramer
+Leonard Knijff
+Lieve Verschuier
+Lodewijk van der Helst
+Louis-Abraham van Loo
+Ludolf Bakhuizen
+Ludolf de Jongh
+Ludowyk Smits
+Maerten Boelema de Stomme
+Magdalena van den Hecken
+Marcellus Laroon
+Marcus de Bye
+Margaretha de Heer
+Margaretha van Godewijk
+Maria de Grebber
+Maria Schalcken
+Maria Sibylla Merian
+Maria van Oosterwijck
+Maria Withoos
+Marten Heemskerck van der Heck
+Martin Mijtens the Elder
+Martinus Lengele
+Martinus Nellius
+Martin Zaagmolen
+Mathieu Dubus
+Mattheus Wijtmans
+Matthias Jansz van den Bergh
+Matthias Stom
+Matthias Withoos
+Matthijs Harings
+Matthijs Naiveu
+Matthijs Wulfraet
+Meindert Hobbema
+Melchior d'Hondecoeter
+Michiel Carree
+Michiel Jansz. van Mierevelt
+Michiel Maddersteg
+Michiel Nouts
+Michiel van Musscher
+Moses ter Borch
+Moses van Uyttenbroeck
+Nicolaas Piemont
+Nicolaas Roosendael
+Nicolaes de Giselaer
+Nicolaes de Helt Stockade
+Nicolaes de Kemp
+Nicolaes de Vree
+Nicolaes Gillis
+Nicolaes Hals
+Nicolaes Lachtropius
+Nicolaes Lastman
+Nicolaes Latombe
+Nicolaes Maes
+Nicolaes Molenaer
+Nicolaes Pickenoy
+Nicolaes Pieterszoon Berchem
+Nicolaes van Gelder
+Nicolaes Willingh
+Nicolas van Houy
+Nikolaus Knüpfer
+N.L. Peschier
+Otto Hoynck
+Otto Marseus van Schrieck
+Otto van Veen
+Palamedes Palamedesz.
+Paulus Bor
+Paulus Moreelse
+Paulus Potter
+Pauwels van Hillegaert
+Peter Danckerts de Rij
+Peter Lely
+Peter Wtewael
+Petrus Staverenus
+Philip de Koninck
+Philips Angel I
+Philips Angel II
+Philips Wouwerman
+Philip Tideman
+Pieter Anthonisz. van Groenewegen
+Pieter Borsseler
+Pieter Claesz
+Pieter Codde
+Pieter Coopse
+Pieter Cornelisz van Rijck
+Pieter Cornelisz van Slingelandt
+Pieter Cornelisz van Soest
+Pieter Cornelisz Verbeeck
+Pieter Crijnse Volmarijn
+Pieter de Bloot
+Pieter de Grebber
+Pieter de Hooch
+Pieter de Molijn
+Pieter de Neyn
+Pieter de Putter
+Pieter de Ring
+Pieter de Ruelles
+Pieter de Valck
+Pieter de Zeelander
+Pieter Dircksz Santvoort
+Pieter Donker
+Pieter Feddes van Harlingen
+Pieter Fris
+Pieter Gallis
+Pieter Gerritsz van Roestraten
+Pieter Hermansz Verelst
+Pieter Holsteyn I
+Pieter Holsteyn II
+Pieter Isaacsz
+Pieter Jacobsz. Duyfhuysen
+Pieter Janssens Elinga
+Pieter Jansz
+Pieter Jansz. Saenredam
+Pieter Jansz van Asch
+Pieter Jansz van Ruyven
+Pieter Lastman
+Pieter Leermans
+Pieter Legouch
+Pieter Moninckx
+Pieter Mulier II
+Pieter Mulier the Elder
+Pieter Nason
+Pieter Nijs
+Pieter Peutemans
+Pieter Pietersz II
+Pieter Pietersz Nedek
+Pieter Post
+Pieter Quast
+Pieter Soutman
+Pieter Steenwijck
+Pieter Symonsz Potter
+Pieter van Anraedt
+Pieter van Berendrecht
+Pieter van Bronckhorst
+Pieter van den Bosch
+Pieter van der Hulst
+Pieter van der Leeuw
+Pieter van der Werff
+Pieter van Laer
+Pieter van Mierevelt
+Pieter van Noort
+Pieter Verhoek
+Pieter Withoos
+Pieter Wouwerman
+Quirijn van Brekelenkam
+Rafaël Govertsz Camphuysen
+Reinier Nooms
+Rembrandt
+Reyer Claesz Suycker
+Reyer van Blommendael
+Reynier Covyn
+Reynier Hals
+Reynier van Gherwen
+Richard Brakenburgh
+Richard van Bleeck
+Robbert Duval
+Rochus van Veen
+Roeland van Laer
+Roelant Roghman
+Roelant Savery
+Roelof Jansz van Vries
+Roelof Koets
+Roger de Piles' artists from Germany and the Low Countries
+Rombout van Troyen
+Romeyn de Hooghe
+Salomon de Bray
+Salomon Koninck
+Salomon Mesdach
+Salomon Rombouts
+Salomon van Ruysdael
+Samuel Dirksz van Hoogstraten
+Sara Saftleven
+Sara van Baalbergen
+Simon de Vlieger
+Simon Du Bois
+Simon Germyn
+Simon Kick
+Simon Luttichuys
+Simon Pietersz Verelst
+Simon van der Does
+Susanna van Steenwijk
+Sybrand van Beest
+Theodoor van Thulden
+Theodor Roos
+Theodor van der Schuer
+Thomas de Keyser
+Thomas Heeremans
+Thomas Wijck
+Tyman Arentsz. Cracht
+Utrecht Caravaggism
+Vincent van der Vinne
+Vincenzo Armanno
+Wallerant Vaillant
+Warnard van Rijsen
+Werner van den Valckert
+Wilhelm Breckvelt
+Wilhelmus Beurs
+Willem Bartsius
+Willem Claesz. Heda
+Willem Cornelisz Duyster
+Willem de Heusch
+Willem de Poorter
+Willem Doudijns
+Willem Drost
+Willem Eversdijck
+Willem Frederiksz van Royen
+Willem Gillisz Kool
+Willem Hendrik Wilhelmus van Royen
+Willem Hondius
+Willem Jacobsz Delff
+Willem Kalf
+Willem Ormea
+Willem Pieterszoon Buytewech
+Willem Romeyn
+Willem Schellinks
+Willem van Aelst
+Willem van Bemmel
+Willem van den Bundel
+Willem van der Vliet
+Willem van de Velde the Elder
+Willem van de Velde the Younger
+Willem van Diest
+Willem van Drielenburg
+Willem van Honthorst
+Willem van Ingen
+Willem van Nieulandt II
+Willem Verschuring
+Willem Wissing
+William Gouw Ferguson
+Wouter Crabeth II
+Wouter Knijff
+Wybrand de Geest
+Zacharias Blyhooft
+Zacharias Paulusz
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/flemish_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/flemish_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c43eee1f7179294d219c595ab9c8750f280f6836
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/flemish_baroque_painters.txt
@@ -0,0 +1,199 @@
+Abraham Brueghel
+Abraham Casembroot
+Abraham Genoels
+Abraham Godijn
+Abraham Govaerts
+Abraham van Blijenberch
+Abraham van Diepenbeeck
+Adam de Colone
+Adam de Coster
+Adriaen Brouwer
+Adriaen de Bie
+Adriaen Frans Boudewijns
+Adriaen van Bloemen
+Albert Flamen
+Alexander Adriaenssen
+Alexander Casteels the Elder
+Alexander Casteels the Younger
+Alexander Coosemans
+Ambrosius Bosschaert
+Ambrosius Brueghel
+Andries Benedetti
+Andries Bosman
+Andries Daniels
+Andries de Coninck
+Andries van Eertvelt
+Anna Francisca de Bruyns
+Anthonie Crussens
+Anthony van Dyck
+Anton Goubau
+Anton Gunther Gheringh
+Antwerp school
+Artus Claessens
+Augustin Coppens
+Bamboccianti
+Bentvueghels
+Bernaert de Bridt
+Bertholet Flemalle
+Carel Fonteyn
+Carel van Falens
+Charles Emmanuel Biset
+Christoffel van den Berghe
+Constantijn Francken
+Cornelis Bol
+Cornelis de Baellieur
+Cornelis de Bryer
+Cornelis Norbertus Gijsbrechts
+Daniel van den Dyck
+David de Coninck
+Diego de Borgraf
+Dominicus Claessens
+Elias van den Broeck
+Engelbert Ergo
+Erasmus de Bie
+Ferdinand van Apshoven the Elder
+Ferdinand van Apshoven the Younger
+Franciscus Gijsbrechts
+Franciscus Hamers
+François Duchatel
+Frans Badens
+Frans Cuyck van Myerop
+Frans Denys
+Frans Francken III
+Frans Francken the Younger
+Frans Geffels
+Frans van Everbroeck
+Frederik Bouttats the Elder
+Gaspar de Crayer
+Gaspar van Eyck
+George Geldorp
+Gérard Edelinck
+Gilles Hallet
+Gilliam Dandoy
+Gillis Backereel
+Gillis II Coignet
+Godfriedt van Bochoutt
+Gommaert van der Gracht
+Gonzales Coques
+Gonzales Franciscus Casteels
+Gualterus Gysaerts
+Guglielmo Borremans
+Guillam Forchondt the Elder
+G. van Deynum
+Hendrick Andriessen
+Hendrick de Clerck
+Hendrick van Balen the Elder
+Hendrik van der Borcht the elder
+Hieronymus Francken II
+Hieronymus Francken III
+Hieronymus Galle
+Ignatius Croon
+Isabella Francken
+Izaak Godijn
+Jacob Caproens
+Jacob de Bie
+Jacob de Formentrou
+Jacob Denys
+Jacob Foppens van Es
+Jacob Franquart
+Jacob Peter Gowy
+Jacques Backereel
+Jacques d'Arthois
+Jacques de l'Ange
+Jacques Fouquier
+Jan Anthonie Coxie
+Jan Anton van der Baren
+Jan Baptist Boel the Younger
+Jan Baptist Bonnecroy
+Jan Baptist Borrekens
+Jan Baptist Bosschaert
+Jan Baptist Brueghel
+Jan Baptist de Crépu
+Jan Baptist van Deynum
+Jan Boeckhorst
+Jan Brueghel the Elder
+Jan Brueghel the Younger
+Jan Carel van Eyck
+Jan Cossiers
+Jan Coxie
+Jan de Herdt
+Jan Dirven
+Jan Frans van Bloemen
+Jan Fyt
+Jan Pauwel Gillemans the Elder
+Jan Pauwel Gillemans the Younger
+Jan Pieter Brueghel
+Jan van Balen
+Jan van Buken
+Jan van Dalen
+Jan van den Hecke
+Jan van Essen
+Jasper Broers
+Jasper Geeraards
+Jean Baptiste Assenede
+Jean Baptiste de Champaigne
+Jean Ducamps
+Jean-Guillaume Carlier
+Joannes de Cordua
+Joannes van der Brugghen
+Johann Baptiste Bouttats
+Joos van Craesbeeck
+Joris van Bredael
+Laureys a Castro
+Lodewijk de Vadder
+Louis de Caullery
+Louis Finson
+Lucas Achtschellinck
+Lucas Franchoys the Elder
+Lucas Franchoys the Younger
+Marcus Gheeraerts the Younger
+Marie Duchatel
+Melchior Hamers
+Michel Bouillon
+Michele Desubleo
+Michiel II Coignet
+Nicasius Bernaerts
+Nicolaas van Eyck
+Nicolaes Cave
+Norbert van Bloemen
+Osias Beert
+Ottmar Elliger
+Pauwels Casteels
+Pedro de Campolargo
+Peeter Gijsels
+Peeter van Bredael
+Peter Franchoys
+Peter Frans Casteels
+Peter van Boucle
+Peter van Halen
+Philip Fruytiers
+Philip Gyselaer
+Philippe de Champaigne
+Philips Brueghel
+Philip van Dapels
+Pieter Boel
+Pieter Bout
+Pieter Brueghel the Younger
+Pieter Casteels II
+Pieter Hardimé
+Pieter van Aelst
+Pieter van Avont
+Pieter van Bloemen
+Pieter van der Borcht
+Sebastiaen van Aken
+Sebastian Castro
+Simon Ardé
+Simon Hardimé
+Simon Johannes van Douw
+Theodoor Aenvanck
+Theodoor Boeyermans
+Thomas van Apshoven
+Vigor Boucquet
+Vincent Adriaenssen
+Vincenzo Armanno
+Walther Damery
+Wenceslas Cobergher
+Wilhelm Schubert van Ehrenberg
+Willem Backereel
+Willem Gabron
+Willem van Haecht
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/french_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/french_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..74034570ebf0b26a0b7fb44043ef9daf4304e41c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/french_baroque_painters.txt
@@ -0,0 +1,54 @@
+Charles Errard
+Charles Le Brun
+Charles Mellin
+Claude Deruet
+Claude-Guy Hallé
+Claude Lorrain
+Claude Mellan
+Daniel Hallé
+Eustache Le Sueur
+Francisque Millet
+François de Nomé
+François de Troy
+François Perrier
+François Puget
+François Stella
+Gaspard Dughet
+Georges de La Tour
+Henri Testelin
+Hyacinthe Rigaud
+Isaac Oliver
+Jacob van Schuppen
+Jacques Blanchard
+Jacques d'Agar
+Jacques des Rousseaux
+Jacques Restout
+Jacques Stella
+Jean Bérain the Elder
+Jean de Beaugrand
+Jean Jouvenet
+Jean LeClerc
+Laurent de La Hyre
+Le Nain
+Louis-Abraham van Loo
+Louis Cretey
+Louise Moillon
+Madeleine Boullogne
+Michel Serre
+Monsù Desiderio
+Nicolas Guibal
+Nicolas Mignard
+Nicolas Poussin
+Nicolas Tournier
+Philippe de Champaigne
+Pierre Bourguignon
+Pierre Mignard
+Pierre Rabon
+Pieter Dubordieu
+Quentin Varin
+Raymond Lafage
+Sebastian Stoskopff
+Sébastien Bourdon
+Simon Vouet
+Trophime Bigot
+Vincent Malo
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/german_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/german_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9d91ea652de08130dccaec1475f5693fa73b84e6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/german_baroque_painters.txt
@@ -0,0 +1,60 @@
+Anna Katharina Block
+Anton Mirou
+Benjamin Block
+Bentvueghels
+Christian Berentz
+Christopher Paudiß
+Cosmas Damian Asam
+Daniel Blok
+David Klöcker Ehrenstrahl
+Ernst Stuven
+Franz Joachim Beich
+Franz Ludwig Raufft
+Franz Werner von Tamm
+Franz Wulfhagen
+Georg Anton Urlaub
+Georg Hainz
+Godfrey Kneller
+Hendrik van der Borcht II
+Hendrik van der Borcht the elder
+Isaak Soreau
+Jacob Christoph Le Blon
+Jacob Ernst Thomann von Hagelstein
+Jacob Marrel
+Jan Boeckhorst
+Joachim von Sandrart
+Johann Baptist Zimmermann
+Johann Carl Loth
+Johannes Spilberg
+Johann Georg Fischer
+Johann Georg Melchior Schmidtner
+Johann Georg Stuhr
+Johann Heinrich Roos
+Johann Hulsman
+Johann Liss
+Johann Melchior Roos
+Johann Oswald Harms
+Johann Ulrich Mayr
+Johann Wilhelm Baur
+Johann Zacharias Kneller
+Joseph Anton Merz
+Joseph Ignaz Appiani
+Jürgen Ovens
+Louise Hollandine of the Palatinate
+Ludolf Bakhuizen
+Maria Dorothea Wagner
+Maria Sibylla Merian
+Matthias Scheits
+Michael Conrad Hirt
+Michael Willmann
+Nikolaus Knüpfer
+Ottmar Elliger
+Philipp Peter Roos
+Philip Tideman
+Pieter Schoubroeck
+Salomon Adler
+Sebastian Stoskopff
+Simon Peter Tilemann
+Susanna Mayr
+Theodor Roos
+Willem van Bemmel
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/greek_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/greek_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dff1ce6b6a617ab71c37b73e0736a7043e9936b0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/greek_baroque_painters.txt
@@ -0,0 +1,13 @@
+Belisario Corenzio
+Efstathios Karousos
+Elias Moskos
+Emmanuel Tzanes
+Ioannis Korais
+Konstantinos Tzanes
+Nikolaos Doxaras
+Nikolaos Kallergis
+Nikolaos Koutouzis
+Panagiotis Doxaras
+Philotheos Skoufos
+Spiridione Roma
+Theodore Poulakis
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/italian_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/italian_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..37324a6972cb5d4569f7131e40a50a6729948934
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/italian_baroque_painters.txt
@@ -0,0 +1,198 @@
+Agostino Beltrano
+Agostino Bonisoli
+Alessandro Albini
+Alessandro Badiale
+Alessandro Baratta
+Alessandro Bardelli
+Alfonso Aldiverti
+Ambrogio Besozzi
+Andrea Barbiani
+Andrea Belvedere
+Andrea dell'Asta
+Angelica Veronica Airola
+Aniella di Beltrano
+Aniello Ascione
+Anton Domenico Bamberini
+Anton Giuseppe Barbazza
+Antonia Bertucci-Pinelli
+Antonio Amorosi
+Antonio Bacci
+Antonio Baldi
+Antonio Balestra
+Antonio Barbalonga
+Antonio Baroni
+Antonio Bellucci
+Antonio Beltrami
+Antonio Bonfanti
+Antonio de Bellis
+Atanasio Bimbacci
+Aurelio Barili
+Baldassare Aloisi
+Baldassare Bianchi
+Bartolomeo Baderna
+Bartolomeo Barbiani
+Bartolomeo Bassi
+Bartolomeo Bettera
+Bartolomeo Biscaino
+Benedetto Bandiera
+Bernardino Bono
+Camillo Berlinghieri
+Carlo Amalfi
+Carlo Ascenzi
+Carlo Biffi
+Carlo Bolognini
+Carlo Girolamo Bersotti
+Ciro Adolfi
+Clemente Bocciardo
+Dionisio Boldo
+Domenico Ambrogi
+Domenico Bettini
+Domenico Bocciardo
+Domenico de Benedettis
+Domenico Maria Bonavera
+Ercole Bazzicaluva
+Ercole Gaetano Bertuzzi
+Faustino Bocchi
+Federico Bencovich
+Federico Bianchi
+Ferrante Amendola
+Ferrante Bacciocchi
+Filippo Abbiati
+Filippo d'Angeli
+Fra Bonaventura Bisi
+Francesco Albani
+Francesco Allegrini da Gubbio
+Francesco Ange
+Francesco Antonozzi
+Francesco Appiani
+Francesco Aviani
+Francesco Barbieri
+Francesco Bassi
+Francesco Bernardi
+Francesco Boccaccino
+Francesco Bonifaccio
+Francesco Borgani
+Gennaro Basile
+Giacinto Bellini
+Giacinto Boccanera
+Giacomo Adolfi
+Giacomo Alberelli
+Giacomo Alboresi
+Giacomo Antonio Arland
+Giacomo Anziani
+Giacomo Apollonio
+Giacomo Argente
+Giacomo Bargone
+Giacomo Barri
+Giacomo Bolognini
+Giacomo Boni
+Gian Lorenzo Bernini
+Gioacchino Assereto
+Giorgio Alberino
+Gioseffo Maria Bartolini
+Giovanni Andrea Ansaldo
+Giovanni Andrea Biscaino
+Giovanni Andrea Podestà
+Giovanni Baglione
+Giovanni Battista Alberoni
+Giovanni Battista Amigazzi
+Giovanni Battista Baiardo
+Giovanni Battista Barbiani
+Giovanni Battista Barca
+Giovanni Battista Belloti
+Giovanni Battista Benaschi
+Giovanni Battista Bertusio
+Giovanni Battista Bolognini
+Giovanni Battista Bonacina
+Giovanni Bernardino Azzolini
+Giovanni Biliverti
+Giovanni Carlo Aliberti
+Giovanni Francesco Bagnoli
+Giovanni Francesco Bassotti
+Giovanni Giacomo Barbelli
+Giovanni Girolamo Bonesi
+Giovanni Lorenzo Bertolotti
+Giovanni Raffaele Badaracco
+Giovenale Boetto
+Girolamo Bonini
+Giulio Benso
+Giulio Cesare Angeli
+Giulio Cesare Begni
+Giulio Giacinto Avellino
+Giuseppe Agellio
+Giuseppe Alberti
+Giuseppe Angeli
+Giuseppe Angelini
+Giuseppe Arrighi
+Giuseppe Avanzi
+Giuseppe Badaracco
+Giuseppe Bazzani
+Giuseppe Bonati
+Giuseppe Bonito
+Guido Ubaldo Abbatini
+Isidoro Bianchi
+Jacopo Baccarini
+Jacopo Bambini
+Jacopo Barbello
+Kaspar Anton von Baroni-Cavalcabo
+Laura Bernasconi
+Lazzaro Baldi
+Leonardo dell'Arca
+Lionello Bononi
+Lodovico Bertucci
+Lorenzo Bergonzoni
+Luca Antonio Bistega
+Luca Barbieri
+Luigi Baccio del Bianco
+Marcantonio Bellavia
+Marco Antonio Bassetti
+Marco Bandinelli
+Maria Maddalena Baldacci
+Mario Balassi
+Martino Altomonte
+Matteo Bonechi
+Matteo Borboni
+Mattia Battini
+Mattia Benedetti
+Mauro Aldrovandini
+Michele Blasco
+Niccolò Bambini
+Niccolò Berrettoni
+Niccolò Billy
+Nicola Bertucci
+Onofrio Avellino
+Orazio Bianchi
+Ottavio Amigoni
+Paolo Albertoni
+Paolo Alboni
+Paolo Anesi
+Paolo Antonio Barbieri
+Paolo Bianchi
+Paolo Biancucci
+Paolo Bonomino
+Paolo Emilio Besenzi
+Paolo Vincenzo Bonomini
+Pasquale Bellonio
+Pier Francesco Battistelli
+Piermaria Bagnadore
+Pietro Adami
+Pietro Andrea Barbieri Pucciardi
+Pietro Antonio Avanizi
+Pietro Antonio Avanzini
+Pietro Aquila
+Pietro Avogadro
+Pietro Bellotti
+Pietro Bianchi
+Pietro Francesco Alberti
+Pietro Paolo Baldini
+Pietro Paolo Bonzi
+Pompeo Aldrovandini
+Scipione Angelini
+Sebastiano Bombelli
+Simone Barabino
+Sisto Badalocchio
+Stefano Amadei
+Tiburzio Baldini
+Tommaso Aldrovandini
+Valerio Baldassari
+Vittorio Bigari
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/netherlandish_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/netherlandish_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..94e3033e00e1f94dc5ea89bc3238c5027d75850d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/netherlandish_baroque_painters.txt
@@ -0,0 +1,2 @@
+__dutch_goldenage_painters__
+__bentvueghels__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/quadratura.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/quadratura.txt
new file mode 100644
index 0000000000000000000000000000000000000000..16d1b0e984ecd29b1271852c61ed357e2bc0a757
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/quadratura.txt
@@ -0,0 +1,74 @@
+Agostino Carlini
+Agostino Collaceroni
+Agostino Mitelli
+Alberto Carlieri
+Alessandro Baratta
+Angelo Michele Colonna
+Antonio Bonetti
+Antonio Maria Panni
+Antonio Rolli
+Baldassare Bianchi
+Bartolo Ceru
+Bartolomeo Bassi
+Carlo Bolognini
+Carlo Moscatiello
+Cesare Baglioni
+Cristoforo Rosa
+Domenico Ambrogi
+Domenico Bruni
+Domenico Carnovale
+Domenico Ghislandi
+Domenico Santi
+Enrico Haffner
+Faustino Trebbi
+Filippo Maccari
+Flaminio Innocenzo Minozzi
+Francesco Costa
+Francesco Quaini
+Francesco Veau
+Fra Simone da Carnuli
+Gaetano Alemani
+Gerolamo Mengozzi Colonna
+Giacomo Alboresi
+Giacomo Torelli
+Giovanni Antonio Caldelli
+Giovanni Battista Alberoni
+Giovanni Battista Caccioli
+Giovanni Battista Crosato
+Giovanni Battista Gaulli
+Giovanni Benedetto Paolazzi
+Giovanni Giacomo Monti
+Giovanni Maria Cerva
+Giovanni Niccolò Servandoni
+Giovanni Paderna
+Girolamo Curti
+Girolamo Pellizoni
+Giulio Trogli
+Giuseppe Alabardi
+Giuseppe Antonio Landi
+Giuseppe Dallamano
+Giuseppe Melani
+Giuseppe Natali
+Giuseppe Turbini
+Gregorio De Ferrari
+Jacopo Antonio Mannini
+Jacopo Chiavistelli
+Lorenzo del Moro
+Lorenzo Pavia
+Luca Antonio Bistega
+Luigi Quaini
+Marcantonio Chiarini
+Mattia Benedetti
+Mauro Aldrovandini
+Ottavio Viviani
+Paolo Ballarini
+Paolo Brozzi
+Petronio Fancelli
+Pier Francesco Battistelli
+Pietro Anderlini
+Pietro Capelli
+Pietro Carattoli
+Pietro Paltronieri
+Rinaldo Botti
+Stefano Orlandi
+Tommaso Sandrino
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/rococco.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/rococco.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5db12ce24d505de770ddc003f4f1e19ece391366
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/rococco.txt
@@ -0,0 +1,86 @@
+Adélaïde Victoire Hall
+Alessandro Magnasco
+Alexander Roslin
+Andien de Clermont
+Andrea Casali
+Angelica Le Gru Perotti
+Angelo Mozzillo
+Anna Maria Hilfeling
+Anna Rajecka
+Antoine Watteau
+Antonio Balestra
+Antonio Beccadelli (painter)
+Antonio Bellucci
+Antonio Liozzi
+Antonio Rossi (painter)
+Balthasar Denner
+Bartolomeo Nazari
+Bartolomeo Pedon
+Bellino Bellini
+Carlo Carlone
+Charles-Amédée-Philippe van Loo
+Charles Joseph Flipart
+Charles-Joseph Natoire
+Corrado Giaquinto
+Daniel Hisgen
+Domenico Corvi
+Elia Interguglielmi
+Élisabeth Vigée Le Brun
+Étienne Jeaurat
+Flora Yukhnovich
+Francescantonio Coratoli
+Francesco Fernandi
+Francesco Monti (Bologna)
+Francesco Zugno
+François Boucher
+François Guérin (artist)
+František Jakub Prokyš
+Gaetano Gandolfi
+Gaspare Traversi
+Georgije Tenecki
+Giambattista Pittoni
+Giambettino Cignaroli
+Giampietro Zanotti
+Giorgio Anselmi
+Giovanni Antonio Greccolini
+Giovanni Battista Cipriani
+Giovanni Battista Lorenzi (painter)
+Giovanni Battista Tiepolo
+Giovanni Domenico Cignaroli
+Giovanni Domenico Ferretti
+Giovanni Domenico Tiepolo
+Giuseppe Baldrighi
+Giuseppe Bazzani
+Giuseppe Bonito
+Giuseppe Dallamano
+Giuseppe Marchesi
+Giuseppe Nogari
+Gottlieb Welté
+Jacopo Amigoni
+Jean-Baptiste Charpentier the Elder
+Jean-Baptiste Pater
+Jean-Baptiste Pillement
+Jean-Baptiste-Siméon Chardin
+Jean-Baptiste van Loo
+Jean François de Troy
+Jean-Honoré Fragonard
+Johann Jakob Zeiller
+Joseph Ignaz Appiani
+François Boucher
+Lorenzo Baldissera Tiepolo
+Lorenzo De Caro
+Louis-Jean-François Lagrenée
+Louis-Michel van Loo
+Marcello Leopardi
+Margareta Christina Giers
+Nicola Antonio Monti
+Nicola Peccheneda
+Paolo Anesi
+Peter Adolf Hall
+Pier Leone Ghezzi
+Pietro Capelli
+Placido Costanzi
+Sebastiano Ricci
+Thomas Gainsborough
+Ulrika Pasch
+William Delacour
diff --git a/ex/dynamic-prompts/collections/artists/European Art/baroque/spanish_baroque_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/baroque/spanish_baroque_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a82d7f4312ce725557cb9e96301ef06395a95137
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/baroque/spanish_baroque_painters.txt
@@ -0,0 +1,157 @@
+Agustín del Castillo
+Agustin Gasull
+Agustín Leonardo
+Alardo de Popma
+Alejandro de Loarte
+Alejandro González Velázquez
+Alonso de Llera Zambrano
+Alonso Miguel de Tovar
+Ambrosio Martínez Bustos
+Andrea López Caballero
+Andrés Amaya
+Andrés Leyto
+Andrés Marzo
+Andrés Pérez
+Antonio Bisquert
+Antonio del Castillo y Saavedra
+Antonio de Pereda
+Antonio de Puga
+Antonio Fernández Arias
+Antonio González Velázquez
+Antonio L'Horfelin
+Antonio Palomino
+Antonio Ponz
+Antonio Richarte
+Antonio Vela Cobo
+Bartolomé Esteban Murillo
+Bartolomé Pérez
+Bartolomé Román
+Benevides Juan Ramirez
+Benito Manuel Agüero
+Bernardo Germán de Llórente
+Bernardo Polo
+Blas de Ledesma
+Buonaventura Ligli
+Carlos Luis de Ribera y Fieve
+Claudio Coello
+Clemente de Torres
+Cristóbal de León
+Cristóbal de Villalpando
+Cristóbal García Salmerón
+Cristóbal López
+Cristóbal Valero
+Cristóbal Vela
+Diego de Leyva
+Diego Polo the Younger
+Diego Velázquez
+Diego Vidal de Liendo
+Esteban Márquez de Velasco
+Eugenio Caxés
+Evaristo Muñoz
+Felipe de León
+Felipe Diricksen
+Felipe Gil de Mena
+Felipe Ramírez
+Félix Castello
+Fernando Márquez Joya
+Francisco Agullo
+Francisco Barrera
+Francisco Caro
+Francisco Collantes
+Francisco de Aguirre
+Francisco de Burgos Mantilla
+Francisco de Reyna
+Francisco de Zurbarán
+Francisco Herrera the Elder
+Francisco Llamas
+Francisco Lopez Caro
+Francisco Preciado
+Francisco Rizi
+Francisco Salmerón
+Francisco Varela
+Gerónimo Antonio de Ezquerra
+Geronimo de Bobadilla
+Gerónimo Ramírez
+Giovanni Do
+Gregorio Bausá
+Ignacio de Iriarte
+Ignacio de León Salcedo
+Ignacio de Ries
+Isaac Lievendal
+Isidoro de Redondillo
+Jaime López
+Jaime Mosen Ponz
+Jerónimo Jacinto de Espinosa
+Joaquim Juncosa
+Joaquín Inza y Ainsa
+José Antolínez
+José de Ledesma
+Josefa de Óbidos
+Josef Lopez
+Josef Ramírez
+José Leonardo
+Jose Risueño
+José Romeo
+Juan Antonio García de Bouzas
+Juan Antonio Ribera
+Juan Bautista Maíno
+Juan Bautista Martínez del Mazo
+Juan Bautista Ravanals
+Juan Caro de Tavira
+Juan Carreño de Miranda
+Juan de Alfaro y Gámez
+Juan de Arellano
+Juan de Espinosa
+Juan del Castillo
+Juan de Licalde
+Juan de Loaysa y Giron
+Juan de Peñalosa
+Juan de Valdés Carasquilla
+Juan de Valdés Leal
+Juan Fernández el Labrador
+Juan García de Miranda
+Juan Martín Cabezalero
+Juan Rizi
+Juan Rodríguez Juárez
+Juan Valdelmira de Leon
+Juan van der Hamen
+Juan Vicente Ribera
+Jusepe de Ribera
+Lorenzo Quiros
+Lucas de Valdés
+Luis González Velázquez
+Luis Paret y Alcázar
+Luis Tristán
+Maria de Abarca
+Mateo Cerezo
+Mateo Gilarte
+Miguel Posadas
+Mosen Vicente Bru
+Niccolò Granello
+Nicolás de la Quadra
+Nicolás de Villacis
+Orazio Cambiasi
+Pablo Legote
+Pablo Pontons
+Pablo Rabiella
+Pedro Atanasio Bocanegra
+Pedro de Campolargo
+Pedro de Camprobín
+Pedro de Moya
+Pedro de Obregón
+Pedro Orrente
+Pedro Pozo
+Pedro Ramírez
+Pedro Rodriguez de Miranda
+Roque Ponce
+Sebastián de Llanos y Valdés
+Sebastián Herrera Barnuevo
+Simón de León Leal
+Teodoro Ardemans
+Tomas de Aguiar
+Tomás Francisco Prieto
+Tomás Yepes
+Vicente Castelló
+Vicente Giner
+Vicente Guirri
+Vincenzo Carducci
diff --git a/ex/dynamic-prompts/collections/artists/European Art/classical/classical.txt b/ex/dynamic-prompts/collections/artists/European Art/classical/classical.txt
new file mode 100644
index 0000000000000000000000000000000000000000..854c21052a115e7e5c90f77e8d5d6dc25296a1c3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/classical/classical.txt
@@ -0,0 +1,9 @@
+Minoan art
+Aegean art
+Cycladic art
+Ancient Greek art
+Mycenaean art
+Cycladic art
+Ancient Egyptian art
+Roman Art
+
diff --git a/ex/dynamic-prompts/collections/artists/European Art/medieval/gothic.txt b/ex/dynamic-prompts/collections/artists/European Art/medieval/gothic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ae1578fff99324340d2938139012d3f3b035ed43
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/medieval/gothic.txt
@@ -0,0 +1,95 @@
+Agostino di Giovanni
+Albertus Pictor
+Allegretto Nuzi
+Altichiero
+Andrea da Firenze
+Andrea Pisano
+André Beauneveu
+Arnau Bassa
+Arnolfo di Cambio
+Bartolo di Fredi
+Benedetto Antelami
+Bernat Martorell
+Bernt Notke
+Bonaventura Berlinghieri
+Bonino da Campione
+Claus Sluter
+Cola Petruccioli
+Daniel Mauch
+Duccio di Buoninsegna
+Evrard d'Orleans
+Ferrer Bassa
+Fra Angelico
+Fra Guglielmo
+Gano di Fazio
+Gentile da Fabriano
+Gherardo Starnina
+Gil de Siloé
+Giottino
+Giovanni Bon
+Giovanni da Balduccio
+Giovanni da Campione
+Giovanni da Milano
+Giovanni del Biondo
+Giovanni Pisano
+Giusto de Menabuoi
+Goro di Gregorio
+Guariento di Arpo
+Guido Bigarelli
+Henning von der Heide
+Henri Bellechose
+Hermann Jean and Paul Limbourg
+Hermen Rode
+Jacobello Dalle Masegne
+Jacomart
+Jacopo Bellini
+Jacopo del Casentino
+Jacquemart de Hesdin
+Jan Goraj
+Jan Polack
+Jaume Huguet
+Jean de Liege
+Jean Malouel
+Jean Pucelle
+Jörg Syrlin the Elder
+Jörg Syrlin the Younger
+Lluís Borrassà
+Lorenzo Maitani
+Lorenzo Monaco
+Maestro Esiguo
+Master of Saint Veronica
+Master of San Francesco Bardi
+Master of San Jacopo a Mucciana
+Master of Schloss
+Master of the Berswordt Altar
+Master of the Dominican Effigies
+Master of the Drapery Studies
+Master of the Franciscan Crucifixes
+Master of the Passion of Christ
+Master of the Rebel Angels
+Master of the Rinuccini Chapel
+Mastro Guglielmo
+Meister Hartmann
+Melchior Broederlam
+Michel Erhart
+Niccolo di Pietro Gerini
+Nicola Pisano
+Nicolaus Haberschrack
+Nicolo da Bologna
+Niklaus Weckmann
+Nino Pisano
+Pere Johan
+Pere Oller
+Pere Serra
+Peter Parler
+Puccio Capanna
+Puccio di Simone
+Segna di Buonaventure
+Simone Martini
+Stefano da Verona
+Taddeo di Bartolo
+Theodoric of Prague
+Tino da Camaino
+Upper Rhenish Master
+Veit Stoss
+Vitale da Bologna
diff --git a/ex/dynamic-prompts/collections/artists/European Art/medieval/medieval.txt b/ex/dynamic-prompts/collections/artists/European Art/medieval/medieval.txt
new file mode 100644
index 0000000000000000000000000000000000000000..daba7e68bc42dc9f31254b8e4593126787eb1346
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/medieval/medieval.txt
@@ -0,0 +1,3 @@
+Byzantine
+__artists/European Art/medieval/romanesque__
+__artists/European Art/medieval/gothic__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/European Art/medieval/romanesque.txt b/ex/dynamic-prompts/collections/artists/European Art/medieval/romanesque.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a5f30342fa27df0fd8a1139d00bcb4bfe9ed8ed3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/medieval/romanesque.txt
@@ -0,0 +1,33 @@
+Arnau Cadell
+Benedetto Antelami
+Berlinghiero Berlinghieri
+Byzantios
+Calcarius
+Claricia
+Dunstan
+Ende
+Gislebertus
+Guda
+Hegvald
+Herrad of Landsberg
+Horder
+Hugo d'Oignies
+Lucchese School
+Majestatis
+Master Hugo
+Master Mateo
+Master of Cabestany
+Master of Pedret
+Master of Taüll
+Master of the Registrum Gregorii
+Nicholas of Verdun
+Notker Physicus
+Othelric
+Radovan
+Renier de Huy
+Roger of Helmarshausen
+Sigraf
+Spearhafoc
+Tove
+Vgo
+Wiligelmo
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/abstract_expressionism/abstract_expressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/abstract_expressionism/abstract_expressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a9f45e0e8b18d96a69e8e6a1c2a225ae4c323d2e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/abstract_expressionism/abstract_expressionism.txt
@@ -0,0 +1,395 @@
+Abdul Djalil Pirous
+Adja Yunkers
+Adolf Bierbrauer
+Adolph Gottlieb
+Ad Reinhardt
+Agnes Martin
+Ahmad Sadali
+Albert Alcalay
+Albert Irvin
+Albert Kotin
+Alexander Bogen
+Alexander Calder
+Alexander McNeish
+Alexandre Istrati
+Alex Salaueu
+Alfonso A. Ossorio
+Alfred L. Copley
+Alfred Leslie
+Alfred Russell
+Alfred Russell
+Al Held
+Alice Baber
+Alma Thomas
+Amanda Snyder
+Angela Gegg
+Anna-Eva Bergman
+Anne Ryan
+Annick Gendron
+Anthony Benjamin
+Arshile Gorky
+Arthur Sarkissian
+Ashot Avagyan
+Aubrey Williams
+Balcomb Greene
+Barbara Januszkiewicz
+Barnett Newman
+Barrie Cooke
+Baruj Salinas
+Batia Grossbard
+Beauford Delaney
+Ben Culwell
+Boris Mirski Gallery
+Bradley Walker Tomlin
+Brian Wall
+Byron McClintock
+Calvert Coggeshall
+Captain Beefheart
+Carle Hessay
+Charles Alston
+Charles Cajori
+Charles Pollock
+Charles Ragland Bunnell
+Charles Seliger
+Charlotte Park
+Charlotte Park
+Christine Ay Tjoe
+Christopher Oywecha
+Cleve Gray
+Clyfford Still
+Conrad Marca-Relli
+Cora Kelley Ward
+Corinne Michelle West
+Cy Twombly
+Dan Berger
+David Budd
+David Geiser
+David Hare
+David Hare
+David Lund
+David Park
+David Park
+David Sawin
+David Simpson
+David Simpson
+David Smith
+David Smith
+David Stromeyer
+Dick Wray
+Donald P. Olsen
+Dorothy Dehner
+Dorothy Heller
+Dusti Bongé
+Earle M. Pilgrim
+Earl Kerkam
+Ed Clark
+Edo Murtić
+Edward Corbett
+Edward Corbett
+Edward Dugmore
+Elaine de Kooning
+Elaine Hamilton-O'Neal
+Eleanor Hilowitz
+Eligio Pichardo
+Elmer Bischoff
+Emerson Woelffer
+Emiko Nakano
+Emil Schumacher
+Enrico Donati
+Ernest Briggs
+Esteban Vicente
+Estelle Asmodelle
+Eugène de Kermadec
+Evelyn Buff-Segal
+Evgeny Chubarov
+Ezio Martinelli
+Félix Anaut
+Frances Kornbluth
+Franck de Las Mercedes
+Frank Lobdell
+Franz Kline
+Fred Mitchell
+Fred Mitchell
+Friedel Dzubas
+Fritz Bultman
+Fritz Faiss
+Fuller Potter
+Gandy Brodie
+Geoffrey de Groen
+George Johnson
+George Johnson
+George McNeil
+George McNeil
+George Morrison
+George Morrison
+George Rickey
+Georges Mathieu
+George Stillman
+Georgina Hunt
+Gerome Kamrowski
+Giorgio Cavallon
+Grace Hartigan
+Gretna Campbell
+Hale Woodruff
+Hans Burkhardt
+Hans Hartung
+Hans Hofmann
+Harold Frank
+Harold Shapinsky
+Harold Zisla
+Harry Jackson
+Harry Jackson
+Hassel Smith
+Hedda Sterne
+Helen Berman
+Helene Herzbrun
+Helen Frankenthaler
+Henrietta Dubrey
+Herbert Ferber
+Hollis Jeffcoat
+Hortense Gordon
+Hugh Mesibov
+Ibram Lassaw
+Ion Țuculescu
+Isamu Noguchi
+Jack Boynton
+Jack Bush
+Jack Coulter
+Jack Hooper
+Jack Hooper
+Jackson Pollock
+Jack Tworkov
+Jack Whitten
+Jacob Kainen
+Jacques Grinberg
+Jacques Hérold
+Jacques Hurtubise
+Jacques Hurtubise
+Jakob Weidemann
+James Bishop
+James Brooks
+James Brooks
+James Budd Dixon
+James Clifford
+James Clifford
+James Gahagan
+James Kelly
+James Kelly
+James Kelsey
+James Kelsey
+James Rosati
+James Siena
+James Verbicky
+Jane Frank
+Jane Freilicher
+Janet Sobel
+Janice Biala
+Jay Meuser
+Jean Dubuffet
+Jean-Paul Riopelle
+Jeppesen Victor Martin
+Jérôme Btesh
+Jimmy Ernst
+Joan Mitchell
+Joe Overstreet
+Joe Stefanelli
+Joe Stefanelli
+John Altoon
+John Chamberlain
+John Chamberlain
+John Copnall
+John Ferren
+John Harrison Levee
+John Hultberg
+John Levee
+John Opper
+John von Wicht
+Jonas Lundh
+Jon Schueler
+José María Sicilia
+Josep Guinovart
+Joseph Cornell
+Joseph Glasco
+Joseph Goto
+Joseph Pisani
+Judith Godwin
+Jules Olitski
+Julio Rosado del Valle
+Julius Hatofsky
+Kathleen Gemberling Adkison
+Kenneth Noland
+Kenneth O. Goehring
+Kenzo Okada
+Kevin Connor
+Kevin Connor
+Kinuko Emi
+Knox Martin
+Kwon Jung Ho
+Lawrence Calcagno
+Lee Hall
+Lee Hall
+Lee Krasner
+Leo Amino
+Leonor Antunes
+Lester Johnson
+Lester Johnson
+Lilly Fenichel
+Linda Lindeberg
+Lise Gervais
+Lola Liivat
+Louise Bourgeois
+Louise Nevelson
+Louis Schanker
+Louis Siegriest
+Luc Leestemaker
+Ludwig Merwart
+Luke Frost
+Lundy Siegriest
+Mala Breuer
+Malcolm Morley
+Manouchehr Yektai
+Manoucher Yektai
+Manuel Chabrera
+Mark di Suvero
+Mark Rothko
+Mark Tobey
+Marla Olmstead
+Marlene Tseng Yu
+Mary Abbott
+Mary Abbott
+Mary Callery
+Matsumi Kanemitsu
+Max Shertz
+Melville Price
+Mercedes Matter
+Merton Simpson
+Michael Goldberg
+Michael Goldberg
+Michael Loew
+Michelle Gregor
+Milton Resnick
+Minas Avetisyan
+Mino Argento
+Minoru Kawabata
+Miriam Laufer
+Mochtar Apin
+Morris Graves
+Morris Louis
+Nanno de Groot
+Natalia Dumitresco
+Natalie Edgar
+Nathan Oliveira
+Natvar Bhavsar
+Nela Arias-Misson
+Nicholas Hondrogen
+Nicholas Marsicano
+Nicolas Carone
+Nína Tryggvadóttir
+Norman Bluhm
+Norman Lewis
+Norman Lewis
+Onyeka Ibe
+Otto Fried
+Otto Nebel
+Painters Eleven
+Pascal Foucart
+Pat Passlof
+Patricia Hermine Sloane
+Patricio Moreno Toro
+Paul Burlin
+Paul-Émile Borduas
+Paul Giudicelli
+Paul Horiuchi
+Paul Jenkins
+Paul Jenkins
+Paul Wonner
+Perle Fine
+Peter Voulkos
+Philip Guston
+Philip Pavia
+Philippe Pastor
+Phillip Pavia
+Phyllis Wiener
+Piergiorgio Colautti
+Ralph Rosenborg
+Raoul Hague
+Raymond P. Spillenger
+Ray Parker
+Reuben Tam
+Rhea Carmi
+Richard Diebenkorn
+Richard Keyes
+Richard Lippold
+Richard Mayhew
+Richard Pousette-Dart
+Richard Stankiewicz
+Robert De Niro Sr.
+Robert De Niro, Sr.
+Robert Goodnough
+Robert Motherwell
+Robert Richenburg
+Ronan Walsh
+Ronnie Landfield
+Rosemarie Beck
+Roy Newell
+Ruth Asawa
+Sam Francis
+Sam Glankoff
+Samuel Bookatz
+Samuel E. Vázquez
+Sarai Sherman
+Seong Moy
+Serge Poliakoff
+Sergey Bashkirov
+Seymour Boardman
+Seymour Fogel
+Seymour Lipton
+Silvio Formichetti
+Simeon Braguin
+Sonia Gechtoff
+Sonya Rapoport
+Srihadi Soedarsono
+Stanley Twardowicz
+Stephen Greene
+Stephen Greene
+Susan Mohl Powers
+Sydney Ball
+Sylvia Lark
+Taro Yamamoto
+Taro Yamamoto
+Terry Frost
+The Club
+The Club
+The Irascibles
+Theodore Conrath
+Theodore Odza
+Theodore Roszak
+Theodoros Stamos
+Theophilus Brown
+Thomas Sills
+Thornton Willis
+Todd Williamson
+Toko Shinoda
+Tom Boutis
+Tom Savage
+Tom Savage
+Umi Dachlan
+Vincent Cavallaro
+Vincent Pepi
+Virginia Cuppaidge
+Vivian Springford
+Walter Darby Bannard
+Walter Kuhlman
+Wilhelmina Weber Furlong
+Willem de Kooning
+William Baziotes
+William H. Littlefield
+William Melton Halsey
+William Ronald
+William Scharf
+William Walton
+William Walton
+Windsor Utley
+Yiannis Maltezos
+Yuki Katsura
+Zoe Longfield
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/american_impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/american_impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fefa86e911e54782f0e52acfe7271ca62e1851d8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/american_impressionism.txt
@@ -0,0 +1,88 @@
+Abram Molarsky
+Albert Henry Krehbiel
+Alson S. Clark
+Anna Huntington Stanley
+Arthur Hill Gilbert
+Carl Eytel
+Catherine Wiley
+Charles S. Kaelin
+Childe Hassam
+Christian von Schneidau
+Clara Elsene Peck
+Clark Voorhees
+Colin Campbell Cooper
+Daniel Garber
+Dennis Miller Bunker
+Edgar Alwin Payne
+Edmund Charles Tarbell
+Edmund Greacen
+Edward Charles Volkert
+Edward Francis Rook
+Edward Henry Potthast
+Edward Simmons
+Edward Willis Redfield
+Frank DuMond
+Frank Nuderscher
+Frank Weston Benson
+Frederick Carl Frieseke
+Fred Wagner
+Fritz Poock
+George Herbert Baker
+George Loftus Noyes
+George Sotter
+George W Dinckel
+Guy Rose
+Hayley Lever
+J. Alden Weir
+Johann Berthelsen
+John Elwood Bundy
+John Henry Twachtman
+John Joseph Enneking
+John Leslie Breck
+John Noble Barlow
+John Singer Sargent
+John White Alexander
+Joseph DeCamp
+Joseph Kleitsch
+J. Ottis Adams
+Julian Onderdonk
+Laura Muntz Lyall
+Leonard Ochtman
+Lilla Cabot Perry
+Lucy Bacon
+Marilyn Bendell
+Marion Wachtel
+Martha Walter
+Mary Agnes Yerkes
+Mary Cassatt
+Matilda Browne
+Otto Stark
+Paul Cornoyer
+Paul Sawyier
+Pedro Figari
+Porfirio Salinas
+Reynolds Beal
+Richard Edward Miller
+Richard Gruelle
+Robert F. Gault
+Robert Reid
+Robertson Kirtland Mygatt
+Robert Vonnoh
+Robert William Wood
+Sueo Serisawa
+T. C. Steele
+Theodore Earl Butler
+Theodore Lukits
+Theodore Robinson
+Thomas Dewing
+Thomas P. Barnett
+Tim Solliday
+Van Dearing Perrine
+Victor Matson
+Warren Eugene Brandon
+Willard Metcalf
+William Langson Lathrop
+William McGregor Paxton
+William Merritt Chase
+William Samuel Horton
+Wilson Irvine
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/art_nouveau.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/art_nouveau.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5e9e5f1e4c623bdf9bab9692513c43c418a10595
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/art_nouveau.txt
@@ -0,0 +1,145 @@
+Abel Pann
+Adolf Michael Boehm
+Adolfo Hohenstein
+Adolphe Willette
+Aladár Körösfői-Kriesch
+Alexandre Benois
+Alois Delug
+Alois Hans Schram
+Alphonse Mucha
+Amelia Bauerle
+Annie French
+Anselmo Govi
+Antonio Fabrés
+Antonio Juez Nieto
+Archibald Knox (designer)
+Arnold Lyongrün
+Arthur Frank Mathews
+Austin Osman Spare
+Bela Čikoš Sesija
+Bronisława Janowska
+Bror Geijer Göthe
+Cesare Laurenti (painter)
+Charles Rennie Mackintosh
+Clara Weaver Parrish
+Constant Detré
+Duilio Cambellotti
+Edith Soterius von Sachsenheim
+Edvard Munch
+Egon Schiele
+Elenore Abbott
+Élisabeth Sonrel
+Eliseu Visconti
+Emanuel Vidović
+Emmi Walther
+Ernst Linck
+Erwin Puchinger
+Erwin Stolz
+Eugen Jettel
+Fedir Krychevsky
+Felician Myrbach
+Fernand Toussaint
+Fidus
+Fidushaus
+Francis Jourdain
+Franz Stuck
+Franz von Matsch
+Friedrich König (painter)
+Fritz Mackensen
+Fujishima Takeji
+Galileo Chini
+Georges de Feure
+Gerda Wegener
+Giorgio Ceragioli (sculptor)
+Gojmir Anton Kos
+Gustav Hahn
+Gustav Klimt
+Hans Tichy
+Hans Unger
+Hede von Trapp
+Henri Bellery-Desfontaines
+Henri de Toulouse-Lautrec
+Henri Thiriet
+Henry van de Velde
+Herbert MacNair
+Ion Theodorescu-Sion
+Ivan Milev
+Jaak van Wijck
+J. A. G. Acke
+Jane Atché
+Janis Rozentāls
+Jan Toorop
+Jean Crotti
+Jean de Bosschère
+Jean Dupas
+Jean-Edouard de Castella
+Jean Rouppert
+Jens Lund
+Johann Victor Krämer
+Johan Thorn Prikker
+John Duncan (painter)
+Josef Maria Auchentaller
+Jules Chéret
+Julius Exter
+Kamisaka Sekka
+Karel Vítězslav Mašek
+Konrad Mägi
+Konstantin Korovin
+Konstantin Somov
+Konstanty Laszczka
+Lascăr Vorel
+Léon Bakst
+Leo Putz
+Léo Schnug
+Lucien Lévy-Dhurmer
+Ludwig Fahrenkrog
+Ludwig von Hofmann
+Ludwik Konarzewski
+Marcel Janco
+Marcello Dudovich
+Margaret Macdonald Mackintosh
+Maria Yakunchikova
+Martin Battersby
+Maurice Langaskens
+Maximilian Liebenwein
+Max Kurzweil
+Mihail Simonidi
+Mikalojus Konstantinas Čiurlionis
+Mikhail Vrubel
+Mirko Rački
+Octavian Smigelschi
+Olaf Lange
+Oskar Zwintscher
+Osmar Schindler
+Otto Eckmann
+Prince Eugen, Duke of Närke
+Raphael Kirchner
+Robert Burns (artist)
+Roberto Montenegro
+Robert Pötzelberger
+Rudolf Otto von Ottenfeld
+Sascha Schneider
+Stefan Filipkiewicz
+Ștefan Luchian
+Sydney Long
+Theo Nieuwenhuis
+Théophile Steinlen
+Thomas Theodor Heine
+Tomislav Krizman
+Valentin Držkovic
+Victor Borisov-Musatov
+Victor Prouvé
+__vienna_secession__
+Viktor Oliva
+Vojtěch Hynais
+Vojtěch Preissig
+Wacław Szymanowski
+Wilhelm Bernatzik
+Wilhelm Dachauer
+William Brown Macdougall
+Wojciech Weiss
+Xavier Gosé
+Yelena Polenova
+Ze'ev Raban
+__mir_iskusstva__
+
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/cloisonnism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/cloisonnism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..76dc0c8cbfdb92d0209eb634b9d7b7cd8f511902
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/cloisonnism.txt
@@ -0,0 +1,3 @@
+Émile Bernard
+Paul Sérusiero
+Louis Anquetin
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/cobs_art_colony.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/cobs_art_colony.txt
new file mode 100644
index 0000000000000000000000000000000000000000..58074280217dfa1c8a58d2b8a93371285bf31ca0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/cobs_art_colony.txt
@@ -0,0 +1,19 @@
+Alice Judson
+Allen Tucker
+Charles Ebert
+Dorothy Ochtman
+Edward Clark Potter
+Elmer Livingston MacRae
+Emil Carlsen
+Ernest Lawson
+Genjiro Yeto
+George Wharton Edward
+Henry Fitch Taylor
+J. Alden Weir
+John Henry Twachtman
+Kerr Eby
+Leonard Ochtman
+Mary Robinson Ebert
+Mina Fitch Ochtman
+Robert Reid
+Theodore Robinson
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/divisionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/divisionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9abbf7a7e5b495cb2493ab793b9e8e9ec4f86c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/divisionism.txt
@@ -0,0 +1,36 @@
+Adriano Baracchini Caputi
+Angelo Morbelli
+Antonio Discovolo
+Arturo Noci
+Benvenuto Benvenuti
+Carlo Cressini
+Cesare Maggi
+Cesare Monti
+Corrado Michelozzi
+Daniele Ranzoni
+Divisionism
+Emilio Longoni
+Enrico Lionne
+Gaetano Previati
+Georges Seurat
+Gino Severini
+Giovanni Battista Crema
+Giovanni Segantini
+Giovanni Sottocornola
+Giuseppe Carozzi
+Giuseppe Cominetti
+Giuseppe Pellizza da Volpedo
+Giuseppe Viner
+Guglielmo Amedeo Lori
+Henri-Edmond Cross
+Jean Metzinger
+Leonardo Dudreville
+Llewelyn Lloy
+Matteo Olivero
+Paul Signac
+Plinio Nomellini
+Robert Antoine Pinchon
+Robert Delaunay
+Serafino Macchiati
+Umberto Boccioni
+Vittore Grubicy de Dragon
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..90261d7e85a6ed9b7d6c313bb7b327758fe23aae
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism.txt
@@ -0,0 +1,15 @@
+__artists/European Art/modern/expressionism/abstract_impressionism__
+__artists/European Art/modern/expressionism/american_expressionist_painters__
+__artists/European Art/modern/expressionism/american_figurative_expressionism__
+__artists/European Art/modern/expressionism/austrian_expressionist_painters__
+__artists/European Art/modern/expressionism/belgian_expressionist_painters__
+__artists/European Art/modern/expressionism/british_expressionist_painters__
+__artists/European Art/modern/expressionism/diebrucke__
+__artists/European Art/modern/expressionism/expressionism__
+__artists/European Art/modern/expressionism/finnish_expressionist_painters__
+__artists/European Art/modern/expressionism/french_expressionist_painters__
+__artists/European Art/modern/expressionism/german_expressionist_painters__
+__artists/European Art/modern/expressionism/indian_expressionist_painters__
+__artists/European Art/modern/expressionism/russian_expressionist_painters__
+__artists/European Art/modern/expressionism/slovakian_expressionist_painters__
+__artists/European Art/modern/expressionism/spanish_expressionist_painters__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/abstract_impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/abstract_impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0985f5a872a25077c4dbd909b3ead6c09ead416c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/abstract_impressionism.txt
@@ -0,0 +1,343 @@
+Mary Abbott (artist)
+Kathleen Gemberling Adkison
+Charles Alston
+John Altoon
+Leo Amino
+Félix Anaut
+Leonor Antunes
+Mochtar Apin
+Mino Argento
+Nela Arias-Misson
+Estelle Asmodelle
+Ashot Avagyan
+Minas Avetisyan
+Christine Ay Tjoe
+B
+Alice Baber
+Sydney Ball
+Walter Darby Bannard
+Sergey Bashkirov
+William Baziotes
+Rosemarie Beck
+Anthony Benjamin
+Dan Berger
+Anna-Eva Bergman
+Helen Berman
+Natvar Bhavsar
+Janice Biala
+Adolf Bierbrauer
+Elmer Bischoff
+Norman Bluhm
+Seymour Boardman
+Alexander Bogen
+Dusti Bongé
+Samuel Bookatz
+Paul-Émile Borduas
+Boris Mirski Gallery
+Louise Bourgeois
+Tom Boutis
+Jack Boynton
+Simeon Braguin
+Mala Breuer
+Ernest Briggs
+Gandy Brodie
+James Brooks (painter)
+Theophilus Brown
+Jérôme Btesh
+David Budd
+Evelyn Buff-Segal
+Fritz Bultman
+Charles Ragland Bunnell
+Hans Burkhardt
+Paul Burlin
+Jack Bush
+C
+Charles Cajori
+Lawrence Calcagno
+Mary Callery
+Gretna Campbell
+Captain Beefheart
+Rhea Carmi
+Nicolas Carone
+Vincent Cavallaro
+Giorgio Cavallon
+Manuel Chabrera
+John Chamberlain (sculptor)
+Evgeny Chubarov
+James Clifford (artist)
+The Club (fine arts)
+Calvert Coggeshall
+Piergiorgio Colautti
+Kevin Connor (artist)
+Theodore Conrath
+Barrie Cooke
+Alfred L. Copley
+John Copnall
+Edward Corbett (artist)
+Jack Coulter
+Ben Culwell
+Virginia Cuppaidge
+D
+Umi Dachlan
+Geoffrey de Groen
+Elaine de Kooning
+Willem de Kooning
+Robert De Niro Sr.
+Dorothy Dehner
+Richard Diebenkorn
+James Budd Dixon
+Enrico Donati
+Henrietta Dubrey
+Edward Dugmore
+Natalia Dumitresco
+E
+Natalie Edgar
+Kinuko Emi
+Jimmy Ernst
+F
+Fritz Faiss
+Lilly Fenichel
+Herbert Ferber
+Perle Fine
+Seymour Fogel
+Silvio Formichetti
+Pascal Foucart
+Sam Francis
+Harold Frank
+Jane Frank
+Helen Frankenthaler
+Jane Freilicher
+Otto Fried
+Luke Frost
+Terry Frost
+Wilhelmina Weber Furlong
+G
+James Gahagan
+Sonia Gechtoff
+Angela Gegg
+David Geiser
+Annick Gendron
+Lise Gervais
+Paul Giudicelli
+Sam Glankoff
+Joseph Glasco
+Judith Godwin
+Kenneth O. Goehring
+Michael Goldberg (painter)
+Robert Goodnough
+Hortense Gordon
+Arshile Gorky
+Cleve Gray
+Balcomb Greene
+Stephen Greene (artist)
+Michelle Gregor
+Jacques Grinberg
+Nanno de Groot
+Batia Grossbard
+Josep Guinovart
+Philip Guston
+H
+Lee Hall (artist)
+William Melton Halsey
+Elaine Hamilton-O'Neal
+David Hare (artist)
+Grace Hartigan
+Hans Hartung
+Julius Hatofsky
+Al Held
+Dorothy Heller
+Jacques Hérold
+Helene Herzbrun
+Carle Hessay
+Eleanor Hilowitz
+Hans Hofmann
+Nicholas Hondrogen
+Jack Hooper (artist)
+Georgina Hunt
+Jacques Hurtubise (painter)
+I
+Onyeka Ibe
+The Irascibles
+Albert Irvin
+Alexandre Istrati
+J
+Harry Jackson (artist)
+Barbara Januszkiewicz
+Hollis Jeffcoat
+Paul Jenkins (painter)
+George Johnson (artist)
+Lester Johnson (artist)
+K
+Jacob Kainen
+Yuki Katsura
+Minoru Kawabata
+James Kelly (abstract expressionist artist)
+James Kelsey (sculptor)
+Earl Kerkam
+Eugène de Kermadec
+Richard Keyes
+Franz Kline
+Frances Kornbluth
+Albert Kotin
+Lee Krasner
+Walter Kuhlman
+Kwon Jung Ho
+L
+Ronnie Landfield
+Sylvia Lark
+Franck de Las Mercedes
+Ibram Lassaw
+Miriam Laufer
+Luc Leestemaker
+John Levee
+Norman Lewis (artist)
+Lola Liivat
+Linda Lindeberg
+Seymour Lipton
+William H. Littlefield
+Michael Loew
+Zoe Longfield
+Morris Louis
+David Lund
+Jonas Lundh
+M
+Yiannis Maltezos
+Conrad Marca-Relli
+Nicholas Marsicano
+Agnes Martin
+Jeppesen Victor Martin
+Knox Martin
+Ezio Martinelli
+Georges Mathieu
+Richard Mayhew
+Byron McClintock
+George McNeil (artist)
+Alexander McNeish
+Ludwig Merwart
+Hugh Mesibov
+Jay Meuser
+Fred Mitchell (artist)
+Joan Mitchell
+Malcolm Morley
+George Morrison (artist)
+Robert Motherwell
+Edo Murtić
+N
+Emiko Nakano
+Otto Nebel
+Roy Newell
+Barnett Newman
+Isamu Noguchi
+Kenneth Noland
+O
+Theodore Odza
+Jules Olitski
+Nathan Oliveira
+Marla Olmstead
+Donald P. Olsen
+John Opper
+Alfonso A. Ossorio
+Joe Overstreet
+Christopher Oywecha
+P
+Painters Eleven
+Charlotte Park (artist)
+David Park (painter)
+Pat Passlof
+Philippe Pastor
+Patricia Hermine Sloane
+Philip Pavia
+Vincent Pepi
+Eligio Pichardo
+Earle M. Pilgrim
+Abdul Djalil Pirous
+Joseph Pisani
+Serge Poliakoff
+Charles Pollock
+Jackson Pollock
+Fuller Potter
+Richard Pousette-Dart
+Susan Mohl Powers
+Melville Price
+R
+Sonya Rapoport
+Milton Resnick
+Robert Richenburg
+William Ronald
+Julio Rosado del Valle
+James Rosati
+Ralph Rosenborg
+Mark Rothko
+Alfred Russell (artist)
+Anne Ryan
+S
+Ahmad Sadali
+Alex Salaueu
+Baruj Salinas
+Arthur Sarkissian
+Tom Savage (painter)
+David Sawin
+Louis Schanker
+William Scharf
+Emil Schumacher
+Charles Seliger
+Seong Moy
+Harold Shapinsky
+Sarai Sherman
+Max Shertz
+Toko Shinoda
+José María Sicilia
+Louis Siegriest
+Lundy Siegriest
+James Siena
+David Simpson (artist)
+Merton Simpson
+David Smith (sculptor)
+Hassel Smith
+Amanda Snyder
+Janet Sobel
+Srihadi Soedarsono
+Raymond P. Spillenger
+Vivian Springford
+Theodoros Stamos
+Joe Stefanelli (painter)
+Hedda Sterne
+Clyfford Still
+George Stillman
+David Stromeyer
+T
+Alma Thomas
+Mark Tobey
+Bradley Walker Tomlin
+Patricio Moreno Toro
+Nína Tryggvadóttir
+Ion Țuculescu
+Stanley Twardowicz
+Jack Tworkov
+U
+Windsor Utley
+V
+Samuel E. Vázquez
+James Verbicky
+Esteban Vicente
+W
+Brian Wall
+Ronan Walsh
+William Walton (painter)
+Cora Kelley Ward
+Jakob Weidemann
+Corinne Michelle West
+Jack Whitten
+Phyllis Wiener
+Aubrey Williams
+Todd Williamson
+Thornton Willis
+Paul Wonner
+Dick Wray
+Y
+Taro Yamamoto (artist)
+Manoucher Yektai
+Marlene Tseng Yu
+Adja Yunkers
+Z
+Harold Zisla
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f570e51e4463cabeba1584457edcc4852e449219
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_expressionist_painters.txt
@@ -0,0 +1,60 @@
+Adolph Gottlieb
+Arthur Polonsky
+Benny Andrews
+Boris Deutsch
+Byron Randall
+Charles Demuth
+Clara Ledesma
+David Geiser
+David Park
+David Sawin
+Elaine de Kooning
+Eligio Pichardo
+Elmer Bischoff
+Emmy Lichtwitz Krasso
+Eugene Biel-Bienne
+Fay Peck
+Frank Lobdell
+Frank Okada
+Gene Beery
+Grace Hartigan
+Harold Garde
+Harry Jackson
+Hassel Smith
+Ida Kohlmeyer
+Jack Hooper
+Jacques Kupfermann
+James Bishop
+Jan Müller
+Joan Brown
+Joe Petruccio
+John Beardman
+Joyce Reopel
+Justin McCarthy
+Kevin Larmee
+Lourdes Gomez-Franca
+Lyn Brockway
+Martha Elizabeth Burchfield Richter
+Melanie Kent Steinhardt
+Mel Zabarsky
+Michelle Gregor
+Morris Graves
+Nathan Oliveira
+Norris Embry
+Paul Wonner
+Red Jordan Arobateau
+Renée Radell
+Richard Diebenkorn
+Rudolf Hess
+Russell Frantom
+Sacha Moldovan
+Sally Michel Avery
+Sam Francis
+Sherman Drexler
+Sylvia Dwyer
+Theophilus Brown
+The Ten
+Wilhelmina Weber Furlong
+Willem de Kooning
+William Johnson
+__american_figurative_expressionism__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_figurative_expressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_figurative_expressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7a26f909676daf0dadc84d0e21b4906c0f5cb75b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/american_figurative_expressionism.txt
@@ -0,0 +1,25 @@
+Henrietta Berk
+Elmer Bischoff
+Boris Mirski Gallery
+Joan Brown
+Theophilus Brown
+Elaine de Kooning
+Robert De Niro Sr.
+Charles Demuth
+Richard Diebenkorn
+Sherman Drexler
+Leon Golub
+Michelle Gregor
+Grace Hartigan
+Jack Hooper
+Wolf Kahn
+Frank Lobdell
+Marcia Marcus
+Nathan Oliveira
+David Park
+Renée Radell
+Seymour Rosofsky
+Hassel Smith
+James Weeks
+Paul Wonner
+
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/austrian_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/austrian_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f85161058f67a2a5e76f1b8c84d4ac2cda4ae2b4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/austrian_expressionist_painters.txt
@@ -0,0 +1,10 @@
+Agnes Muthspiel
+Albin Egger-Lienz
+Aloys Wach
+Anton Kolig
+Egon Schiele
+Eugene Biel-Bienne
+Fritz Schwarz-Waldegg
+Josef Gassler
+Oskar Kokoschka
+Richard Gerstl
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/belgian_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/belgian_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e0f37018e9cd69a4cb0e35f14c36112569ae300
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/belgian_expressionist_painters.txt
@@ -0,0 +1,8 @@
+Albert Servaes
+Ernest Welvaert
+Frits Van den Berghe
+Gustave De Smet
+Gustave Van de Woestijne
+James Ensor
+Jean Brusselmans
+Marie Howet
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/british_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/british_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c98651c348a9b61d0f9c3d53f401f90f5477dd0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/british_expressionist_painters.txt
@@ -0,0 +1 @@
+Oskar Kokoschka
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/diebrucke.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/diebrucke.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2b4ea21ceb6d2b799c1b75bf00f9347af932cd64
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/diebrucke.txt
@@ -0,0 +1,7 @@
+Emil Nolde
+Erich Heckel
+Ernst Ludwig Kirchner
+Fritz Bleyl
+Karl Schmidt-Rottluff
+Max Pechstein
+Otto Mueller
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/expressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/expressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c24376156c33b2caff1a1614e05c12e7d516d42
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/expressionism.txt
@@ -0,0 +1,287 @@
+Abraham Rattner
+Affandi
+Ahmed Al Safi
+Albert Bloch
+Albert Kotin
+Albert Servaes
+Albert Tucker
+Albin Amelin
+Alexej von Jawlensky
+Alexis Gritchenko
+Alex Salaueu
+Alfred Henry Maurer
+Alfred Kubin
+Alice Neel
+Alvar Cawén
+Amadeo de Souza Cardoso
+Ambroz Testen
+Amedeo Modigliani
+Anita Malfatti
+Anita Rée
+Anto Carte
+António Carneiro
+Arnold Peter Weisz-Kubínčan
+Arthur G. Dove
+Auguste Mambour
+August Macke
+August Strindberg
+Aurél Bernáth
+Axel Törneman
+Beauford Delaney
+Ben Shahn
+Ben-Zion
+Bernard Buffet
+Berta Hansson
+Bill Sienkiewicz
+Broncia Koller-Pinell
+Carlos Enrique Polanco
+Carl Eugen Keel
+Carl Hofer
+Carola Richards
+Charles Blackman
+Charles Burchfield
+Chaïm Soutine
+Christian Rohlfs
+Christoph Voll
+Clifton Pugh
+Clyfford Still
+Conrad Felixmüller
+Constant Permeke
+Cuno Amiet
+Cyprián Majerník
+Cândido Portinari
+Daniel Jouseff
+David Aronson
+David Burliuk
+David Larwill
+Di Cavalcanti
+Dorothea Tanning
+EC Bell
+Earle M. Pilgrim
+Eduard Wiiralt
+Edvard Munch
+Edvard Weie
+Egon Schiele
+Einar Hákonarson
+Einer Johansen
+Elaine de Kooning
+Elfriede Lohse-Wächtler
+Emilio Giuseppe Dossena
+Emily Carr
+Emil Nolde
+Emmy Worringer
+Erich Heckel
+Erland Cullberg
+Ernst Barlach
+Ernst Ludwig Kirchner
+Ester Almqvist
+Esther Rolick
+Eugen von Kahler
+Evert Lundquist
+Ewa Gargulinska
+Ezio Martinelli
+Fedir Manailo
+Feliks Topolski
+Floris Jespers
+Folke Heybroek
+Francis Bacon
+Frank Auerbach
+Franz Marc
+Frits Van den Berghe
+Fritz Ascher
+Fritz Bleyl
+Frédéric Fiebig
+Gabriele Münter
+Gen Paul
+Georges Gimel
+Georges Rouault
+George Biddle
+George Bouzianis
+George Grosz
+Georg Tappert
+Gojmir Anton Kos
+Gregorio Prestopino
+Guglielmo Pizzirani
+Gustave De Smet
+Gustave Van de Woestijne
+Hale Woodruff
+Hanns Katz
+Harold Elliott
+Harry Shoulberg
+Harry Sternberg
+Heinrich Brocksieper
+Heinrich Campendonk
+Hendrik Werkman
+Henryk Gotlib
+Henry Gorski
+Henry Ossawa Tanner
+Herbert Siebner
+Herman Kruyder
+Hilaire Vanbiervliet
+Horia Bernea
+Howard Hodgkin
+Hyman Bloom
+Iberê Camargo
+Ichiro Fukuzawa
+Ilka Gedő
+Ion Țuculescu
+Iosif Iser
+Irma Stern
+Irving Kriesberg
+Isaac Grünewald
+Issachar Ber Ryback
+Ivan Albright
+Ivan Milev
+Jack B. Yeats
+Jack Levine
+Jacques Démoulin
+Jalmari Ruokokoski
+James Ensor
+Jane Peterson
+Jan Sluyters
+Jan Trampota
+Jan Wiegers
+Jay Milder
+Jean-Michel Basquiat
+Johann Robert Schürch
+John Houston
+John Hoyland
+John Lowrie Morrison
+John Perceval
+John Walker
+Josef Gassler
+Joseph Kutter
+Joseph Stella
+Joy Hester
+János Mattis-Teutsch
+Kahlil Gibran
+Kai Fjell
+Kandinsky
+Karen Holtsmark
+Karina Baluyut
+Karl Schmidt-Rottluff
+Karl Zerbe
+Katharina Grosse
+Kathy Muehlemann
+Konrad Krzyżanowski
+Konrad Mägi
+Kuno Veeber
+Käthe Kollwitz
+Kārlis Padegs
+Kōshirō Onchi
+Lasar Segall
+Lascăr Vorel
+Lawrence Calcagno
+Lazar Ličenoski
+Leander Engström
+Leonard Baskin
+Leon Kossoff
+Leo Gestel
+Leo Putz
+Louise Robert
+Lou Albert-Lasard
+Lucian Freud
+Ludwig Meidner
+Luis Filcer
+Lyonel Feininger
+Magda Cordell McHale
+Maggie Laubser
+Marcel Caron
+Marcel Janco
+Marc Chagall
+Marek Żuławski
+Marianne von Werefkin
+Marie-Thérèse Auffray
+Marino Tartaglia
+Marsden Hartley
+Martiros Saryan
+Mathias Goeritz (German émigré to Mexico)
+Maxwell Bates
+Max Beckmann
+Max Kaus
+Max Pechstein
+Max Weber
+Milton Avery
+Mstislav Dobuzhinsky
+Mário Eloy
+Nanno de Groot
+Natalia Goncharova
+Nedim Kufi
+Nicholas Marsicano
+Nicolae Tonitza
+Niklāvs Strunke
+Nikolai Triik
+Nikolaos Lytras
+Norris Embry
+Oskar D'Amico
+Oskar Herman
+Oskar Kokoschka
+Otto Dix
+Otto Mueller
+Patrick Heron
+Paula Modersohn-Becker
+Paul Hartal
+Paul Klee
+Peris Carbonell
+Peter Blume
+Petre Hârtopeanu
+Petre Iorgulescu-Yor
+Philip Evergood
+Philip Guston
+Philip Iverson
+Rahel Szalit-Marcus
+Raquel Forner
+René Beeh
+Richard Gerstl
+Rico Lebrun
+Roberto Matta
+Roberto Melli
+Robert Colquhoun
+Robert Motherwell
+Rolf Nesch
+Rufino Tamayo
+Scuola Romana
+Shalva Kikodze
+Sidney Nolan
+Silvia Cambir
+Stanisław Frenkiel
+Stuart Davis
+Suzanne Perlman
+Tahia Halim
+Theodore Conrath
+Theo van der Horst
+Tinus van Doorn
+Tivadar Kosztka Csontváry
+Tyko Sallinen
+Vadim Meller
+Vera Nilsson
+Vidosava Kovačević
+Vilko Gecan
+Vilmos Aba-Novák
+Vincent van Gogh
+Wassily Kandinsky
+Werner Neuhaus
+Wilhelmina Weber
+Wilhelmina Weber Furlong
+Wilhelm Lehmbruck
+Willem Hofhuizen
+Willem de Kooning
+William Gropper
+Wolfgang Degenhardt
+Wolf Kibel
+Wäinö Aaltonen.
+Yasuo Kuniyoshi
+Yitzhak Frenkel
+Yuichiro Ando
+Zvi Malnovitzer
+__american_expressionist_painters__
+__austrian_expressionist_painters__
+__belgian_expressionist_painters__
+__british_expressionist_painters__
+__finnish_expressionist_painters__
+__french_expressionist_painters__
+__german_expressionist_painters__
+__indian_expressionist_painters__
+__rusian_expressionist_painters__
+__slovakian_expressionist_painters__
+__spanish_expressionist_painters__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/finnish_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/finnish_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..095cf6a02eaaef5a35cdeb2e3e30d325efc1590a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/finnish_expressionist_painters.txt
@@ -0,0 +1,6 @@
+Alvar Cawén
+Ellen Thesleff
+Ilmari Aalto
+Marcus Collin
+November Group (Finland)
+Väinö Kunnas
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/french_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/french_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8e3474085121ed78761c92399641d47c77c9dfa7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/french_expressionist_painters.txt
@@ -0,0 +1,7 @@
+Chaïm Soutine
+Claire Bertrand (painter)
+Francis Gruber
+Gen Paul
+Georges Gimel
+Georges Rouault
+Lou Ros
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/german_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/german_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..265e71bdd5f68960c59e182c1f5c1d0cbbb11c46
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/german_expressionist_painters.txt
@@ -0,0 +1,88 @@
+Adolf Erbslöh
+Alexander Mohr
+Alexej von Jawlensky
+August Macke
+Bernhard Hoetger
+Carle Hessay
+Carl Heidenreich
+Carl Rabus
+Cesar Klein
+Christian Rohlfs
+Christian Schad
+Conrad Felixmüller
+Curt Echtermeyer
+Curt Stoermer
+Dora Bromberger
+Doramaria Purschian
+Egon Tschirch
+Elfriede Lohse-Wächtler
+Else Hertzer
+Else Meidner
+Else Sehrig-Vehling
+Emil Nolde
+Erich Buchholz
+Erich Heckel
+Erich Kahn
+Ernst Ludwig Kirchner
+Franz Bronstert
+Franz Marc
+Franz Monjau
+Franz Nölken
+Friedrich von Bömches
+Fritz Stuckenberg
+Gabriele Münter
+George Grosz
+Georg Philipp Wörlen
+Georg Schrimpf
+Georg Tappert
+Hanns Bolz
+Hans Brasch
+Hedwig Marquardt
+Heinrich Campendonk
+Heinrich Nauen
+Heinrich Stegemann
+Heinz Tetzner
+Hermann Sehrig
+Hermann Stenner
+Julo Levin
+Karl Caspar
+Karl Hofer
+Karl Schmidt-Rottluff
+Käthe Kollwitz
+Käthe Schuftan
+Lette Valeska
+Lovis Corinth
+Ludwig Meidner
+Margret Hofheinz-Döring
+Maria Caspar-Filser
+Marta Worringer
+Max Beckmann
+Max Dungert
+Max Kaus
+Max Pechstein
+Oskar Moll
+Otto Dix
+Otto Gleichmann
+Otto Hettner
+Otto Illies
+Otto Lange
+Otto Mueller
+Otto Neumann (artist)
+Paula Modersohn-Becker
+Paul Gösch
+Peter August Böckstiegel
+Peter Ludwigs
+Philipp Bauknecht
+Pol Cassel
+Ricarda Jacobi
+Richard Simon (painter)
+Robert Friedrich Karl Scholtz
+Rolf Nesch
+Rudolf Kortokraks
+Selma Des Coudres
+Steffen Thomas
+Walter Gramatté
+Wenzel Hablik
+Wilhelm Morgner
+Willy Jaeckel
+__diebrucke__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/indian_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/indian_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a271dc37be3c55e57b8f863475637ab5b2a41f86
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/indian_expressionist_painters.txt
@@ -0,0 +1,10 @@
+Cheenu Pillai
+Devender Singh
+F. N. Souza
+Ganesh Pyne
+Gurcharan Singh (painter)
+Jangarh Singh Shyam
+S. H. Raza
+Sohan Qadri
+Sunil Das
+Tyeb Mehta
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/russian_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/russian_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..468ff1ce9d75bfc0c43c6c7a538d7cbd9046cba6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/russian_expressionist_painters.txt
@@ -0,0 +1,3 @@
+Wassily Kandinsky
+Natta Konysheva
+Nikolai Vasilievich Kuzmin
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/slovakian_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/slovakian_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f742247bdc35e7fa344872ec75032653ff387a0e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/slovakian_expressionist_painters.txt
@@ -0,0 +1 @@
+Julius Podlipny
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/spanish_expressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/spanish_expressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..21c994e567a0905c2265f12d61f251cc25e79c91
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/expressionism/spanish_expressionist_painters.txt
@@ -0,0 +1,6 @@
+Antonio Rodríguez Luna
+Antón Lamazares
+Esperanza Zabala
+José Guerrero
+José Gutiérrez Solana
+Ramón Castellano de Torres
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/fauvism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/fauvism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..50e5283f6109e4aa650845cbbdc92ebabc45c901
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/fauvism.txt
@@ -0,0 +1,26 @@
+Albert Marquet
+André Derain
+August acke
+{Balthus|Balthasar Klossowski}
+Charles Camoin
+David Davidovich Burliuk
+Edgar Degas
+Francis Picabia
+Georges Braque
+Georges Rouault
+Henri Matisse
+Jan Sluyters
+Joan Miro
+Kazimir Severinovich Malevich
+Konstantinos Parthenis
+Louis Valtat
+Marc Chagall
+Marcel Duchamp
+Maurice De Vlaminck
+Max Beckmann
+Natalia Sergeevna Goncharova
+Piet Mondrian
+Pyotr Konchalovsky
+Raoul Dufy
+Roger De La Fresnaye
+{Sonia Delaunay|(Sarah Ilinitchna Stern}
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/hagenbund.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/hagenbund.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4131c3bd844a31bad8541e952fef3c192e986396
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/hagenbund.txt
@@ -0,0 +1,181 @@
+Adolf Gross
+Adolf Lunt
+Albert Reuss
+Alexander Demetrius Goltz
+Alfons Purtscher
+Alfred Cossmann
+Alfred Keller
+Alfred Loeb
+Alfred Wesemann
+Alfred Zoff
+Alois Leopold Seibold
+Anders Zorn
+Anna Lesznai
+Anny Schröder-Ehrenfest
+Anton Bleichsteiner
+Anton Peschka
+Artur Oscar Alexander
+August Hoffmann von Vestenhof
+Augustin Roth
+Béni Ferenczy
+Bettina Ehrlich
+Bohumír Jaroněk
+Carl Fahringer
+Carl Olof Larsson
+Carry Hauser
+Clemens von Pausinger
+Eduard Amseder
+Eduard Gaertner
+Eduard Kasparides
+Eduard Thöny
+Elsa Kalmár von Köveshazi
+Emanuel Franz Hegenbarth
+Emerich Schaffran
+Emil Strecker
+Ernst Paar
+Ernst Paye
+Ernst Wagner
+Erwin Lang
+Eugen Sturm-Skrla
+Extraordinary Members
+Felix Albrecht Hart
+Ferdinand Dorsch
+Ferdinand Ludwig Graf
+Ferdinand Michl
+Ferdinand Schirnböck
+Ferdinand Staeger
+Ferdinand Stransky
+Ferdinand von Rezniček
+Franz Barwig
+Franziska Zach
+Franz Lerch
+Franz Polzer
+Franz Thiele
+Frieda Salvendy
+Friedrich Aduatz
+Friedrich von Knapitsch
+Friedrich von Radler
+Fritz Berthold Neuhaus
+Fritz Gross
+Fritz Hegenbart
+Fritz Schwarz-Waldegg
+Georg Ehrlich
+Georg Jung
+Georg Mayer-Marton
+Georg Merkel
+Georg Pevetz
+Georg Philipp Wörlen
+Gino Parin
+Gottfried Richter
+Gotthardt Kuehl
+Gustav Bamberger
+Gustav Gurschner
+Hans Bren
+Hans Hloucal
+Hans Letz
+Hans Ranzoni der Ältere
+Hans Sidonius Becker
+Hans von Hayek
+Hans Wilt
+Heinrich Lefler
+Heinrich Revy
+Heinrich Tomec
+Heinrich von Zügel
+Heinrich Zita
+Heinz Steiner
+Henryk Uziembło
+Herbert Schaffgotsch
+Heribert Potuznik
+Hermine Aichenegg
+Hildegard Jone-Humplik
+Hugo Baar
+Imre Simay
+Jacob Glasner
+Jacob Low
+Johanna Kampmann-Freund
+Johannes Fischer
+Johann Nepomuk Geller
+Johann Rathausky
+Josef Dobner
+Josef Floch
+Josef Heu
+Josef Humplik
+Josef Karl Rumpold
+Josef Straka
+Josef Tautenhayn
+Joseph Urban
+Josep Johann Beyer
+Julius Paul Junghanns
+Kark Ludwig Hassmann
+Karl Alexander Wilke
+Karl Hauk
+Karl Huck
+Karl Josef Gunsam
+Karl Markus
+Karl Mediz
+Karl O'Lynch, Alm Landschaft
+Karl O'Lynch von Town
+Karl Pippich
+Karl Stemolak
+Kazimierz Sichulski
+Konrad Widter
+Leo Delitz
+Leopold Blauensteiner
+Leopold Burger
+Leopold Gottlieb
+Lilly Steiner
+Lois Pregartbauer
+Ludvík Kuba
+Ludwig Heinrich Jungnickel
+Ludwig von Zumbusch
+Maria Fischer
+Maximilian Kahrer
+Maximilian Reinitz
+Maximilian Suppantschitsch
+Michael Powolny
+Nora Purtscher-Wydenbruck
+Oskar Felgel
+Oskar Laske
+Otto Bariedl
+Otto Barth
+Otto Bruenauer
+Otto Hoffmann
+Otto Rudolf Schatz
+Paul Johann Ress
+Peter Breithut
+Raimund Germela
+Raoul Frank
+Richard Drasche-Wartinberg
+Richard Lux
+Robert Fink
+Robert Kloss
+Robert Kohl
+Robert Oerley
+Robert Pajer-Gartegen
+Robert Phillipi
+Robert Schiff
+Robin Christian Andersen
+Rolf Eugen Heger
+Rudolf Buchner
+Rudolf Fanner
+Rudolf Junk
+Rudolf Konopa
+Rudolf Pointner
+Rudolf Sieck
+Rudolf Tropsch
+Rudolph Bachmann
+Sigmund Walter Hampel.
+Theodore Fried
+Theodor Kern
+Theodor Stundl
+Thomas Dobner
+Thomas Riss
+Tibor Gergely
+Viktor Echhardt von Eckardsburg
+Viktor Planckh
+Viktor Tischler
+Wilhelm Hedger
+Wilhelm Kaufmann
+Wilhelm Klier
+Wilhelm Wodnansky
+Wunibald Deininger
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/heidelberg_school.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/heidelberg_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..161c43c7e4afd11e06474e12d1a793785ad692bd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/heidelberg_school.txt
@@ -0,0 +1,21 @@
+Albert Henry Fullwood
+Arthur Streeton
+Charles Conder
+Charles Douglas Richardson
+Clara Southern
+David Davies
+Emanuel Phillips Fox
+Ethel Carrick Fox
+Frederick McCubbin
+Ina Gregory
+Jane Price
+Jane Sutherland
+John Llewellyn Jones
+John Mather
+Julian Ashton
+Leon Pole
+Louis Abrahams
+Tom Humphrey
+Tom Roberts
+Tudor St. George Tucker
+Walter Withers
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1e4a74bed19edb1df584d773f3574c01b2f4b226
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism.txt
@@ -0,0 +1,97 @@
+Adele Williams
+Alfred Sisley
+Ali Nemah o Neema
+Androniqi Zengo Antoniu
+Antonín Hudeček
+Armand Guillaumin
+Auguste Renoir
+Benedicto Ducat
+Berthe Morisot
+Camille Pissarro
+Claude Monet
+Darío Suro
+Derric Van Rensburg
+Diego Rivera
+Dina Nath Walli
+Edgar Degas
+Édouard Manet
+Emilio Boggio
+Emil Wiesel
+Enrico Risi
+Erin Hanson
+Ethel Carrick
+Farid Mansour
+François Gall
+Frédéric Bazille
+Fujishima Takeji
+Fyodor Zakharov
+Gustave Caillebotte
+Henri Matisse
+Henri Michel-Lévy
+Henri Rousseau
+Hugo Mühlig
+Ilya Repin
+Iso Rae
+Ivan Trush
+James Ensor
+John Henry Twachtman
+Jozef Teodor Mousson
+Juan Luna
+Leonid Afremov
+Leonid Mezheritski
+Lin Hejie
+Mary Cassatt
+Mary Perkins Taylor
+Mary Teasdel
+Max Liebermann
+Michalis Oikonomou
+Milo Milunović
+Otto Schneider
+Paul Burman
+Paul Cézanne
+Paul-Émile Pissarro
+Pierre-Auguste Renoir
+Serhii Vasylkivsky
+Sophia Laskaridou
+Spiros Pizanis
+Takanori Kinoshita
+Thomas Kinkade
+Tonal Impressionism
+Van Dearing Perrine
+Van Gogh
+Vasyl Krychevsky
+William Glackens
+__artists/European Art/modern/impressionism/american_impressionist_painters__
+__artists/European Art/modern/impressionism/austrian_impressionist_painters__
+__artists/European Art/modern/impressionism/autstralian_impressionist_painters__
+__artists/European Art/modern/impressionism/belgian_impressionist_painters__
+__artists/European Art/modern/impressionism/brazilian_impressionist_painters__
+__artists/European Art/modern/impressionism/british_impressionist_painters__
+__artists/European Art/modern/impressionism/canadian_impressionist_painters__
+__artists/European Art/modern/impressionism/chinese_impressionist_painters__
+__artists/European Art/modern/impressionism/czech_impressionist_painters__
+__artists/European Art/modern/impressionism/dutch_impressionist_painters__
+__artists/European Art/modern/impressionism/egyptian_impressionist_painters__
+__artists/European Art/modern/impressionism/german_impressionist_painters__
+__artists/European Art/modern/impressionism/hungarian_impressionist_painters__
+__artists/European Art/modern/impressionism/icelandic_impressionist_painters__
+__artists/European Art/modern/impressionism/indian_impressionist_painters__
+__artists/European Art/modern/impressionism/irish_impressionist_painters__
+__artists/European Art/modern/impressionism/italian_impressionist_painters__
+__artists/European Art/modern/impressionism/latvian_impressionist_painters__
+__artists/European Art/modern/impressionism/lebanese_impressionist_painters__
+__artists/European Art/modern/impressionism/luxembourgian_impressionist_painters__
+__artists/European Art/modern/impressionism/mexican_impressionist_painters__
+__artists/European Art/modern/impressionism/norweigian_impressionist_painters__
+__artists/European Art/modern/impressionism/polish_impressionist_painters__
+__artists/European Art/modern/impressionism/romanian_impressionist_painters__
+__artists/European Art/modern/impressionism/russian_impressionist_painters__
+__artists/European Art/modern/impressionism/serbian_impressionist_painters__
+__artists/European Art/modern/impressionism/slovenian_impressionist_painters__
+__artists/European Art/modern/impressionism/soviet_impressionist_painters__
+__artists/European Art/modern/impressionism/spanish_impressionist_painters__
+__artists/European Art/modern/impressionism/swedish_impressionist_painters__
+__artists/European Art/modern/impressionism/swiss_impressionist_painters__
+__artists/European Art/modern/impressionism/ten_american_painters__
+__artists/European Art/modern/impressionism/turkish_impressionist_painters__
+__artists/European Art/modern/impressionism/ukranian_impressionist_painters__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/baum_circle.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/baum_circle.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c2b8674a3d0ec0413affca40685c0b513a7155c5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/baum_circle.txt
@@ -0,0 +1,3 @@
+Arlington Nelson Lindenmuth
+John E. Berninger
+Karl Buesgen
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/boston_school.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/boston_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7149f49d4333847edb07543bf2aa4db0f559fc64
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/boston_school.txt
@@ -0,0 +1,16 @@
+Aldro Hibbard
+Edmund C. Tarbell
+Elizabeth Okie Paxton
+Frank Weston Benson
+Frederic Porter Vinton
+Gertrude Fiske
+Gretchen Woodman Rogers
+John Joseph Enneking
+Joseph DeCamp
+Laura Coombs Hills
+Lilian Westcott Hale
+Lilla Cabot Perry
+Marguerite Stuber Pearson
+Philip Leslie Hale
+R. H. Ives Gammell
+William McGregor Paxton
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/pennsylvania_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/pennsylvania_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e13349a22ff70ec128b26b36efcb4d967196699b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionism/pennsylvania_impressionist_painters.txt
@@ -0,0 +1,20 @@
+Charles Rosen
+Daniel Garber
+Edward Willis Redfield
+Fern Coppedge
+George Sotter
+Harry Leith-Ross
+Henry B. Snell
+Herbert Pullinger
+John Fulton Folinsbee
+John Wells James
+L. Birge Harrison
+Mary Elizabeth Price
+Morgan Colt
+Nate Dunn
+Rae Sloan Bredin
+Robert Spencer
+Roy Cleveland Nuse
+Walter Elmer Schofield
+Walter Emerson Baum
+William Langson Lathrop
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6791452de81b92cf0887a137becdd4a344ad9bad
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/american_impressionist_painters.txt
@@ -0,0 +1,202 @@
+Abby Williams Hill
+Abram Molarsky
+Adele Williams
+Agnes Millen Richmond
+Albert Clinton Conner
+Albert Henry Krehbiel
+Alphonse Maureau
+Alson S. Clark
+André Gisson
+Anita Miller Smith
+Anita Willets-Burnham
+Anna Althea Hills
+Anna Huntington Stanley
+Annie Traquair Lang
+Anni von Westrum Baldaugh
+Arlington Nelson Lindenmuth
+Armin Hansen
+Arthur Hill Gilbert
+Arthur Prince Spear
+Augustus Dunbier
+August Gay
+Baum Circle
+Brendan O'Connell
+Carl Eytel
+Carl Graf
+Carl Hoppe
+Carl Thorp
+Catherine Wiley
+Charles Arthur Fries
+Charles Fremont Conner
+Charles Harold Davis
+Childe Hassam
+Christian von Schneidau
+Clark Voorhees
+Clifton Wheeler
+Colin Campbell Cooper
+Daniel Garber
+Dennis Miller Bunker
+Dorothy Morlan
+Dulah Marie Evans
+Edith Mitchill Prellwitz
+Edmund C. Tarbell
+Edmund Greacen
+Edward Charles Volkert
+Edward Dufner
+Edward Francis Rook
+Edward Henry Potthast
+Edward L. Loper Sr.
+Edward Simmons
+Edward Willis Redfield
+Effie Anderson Smith
+Eleanor Norcross
+Elizabeth Charleston
+Elizabeth Horman
+Elmer Wachtel
+Emile Gruppe
+Emil Bisttram
+Emil Carlsen
+Emma B. King
+Emma Mendenhall
+Ernest Lawson
+Esther Rose
+Ethel Blanchard Collver
+Ettore DeGrazia
+Eugene Paul Ullman
+Everett Warner
+E. Charlton Fortune
+Felix F. de Crano
+Fern Coppedge
+Francisco Oller
+Francis Focer Brown
+Frank Cuprien
+Frank DuMond
+Frank Harmon Myers
+Frank J. Girardin
+Frank Nuderscher
+Frederick Carl Frieseke
+Fred Wagner
+George Gallo
+George Gardner Symons
+George Herbert Baker
+George Loftus Noyes
+George Newell Bowers
+George Wharton Edwards
+Granville Redmond
+Guy Rose
+Harry Hoffman
+Hayley Lever
+Helene Hibben
+Helen Turner
+Henry B. Snell
+Henry Mortikar Rosenberg
+Henry Prellwitz
+Henry Salem Hubbell
+Herman Rose
+Ira J. Deen
+Irving Ramsey Wiles
+Jack Coggins
+James Abbott McNeill Whistler
+James Carroll Beckwith
+Jane Peterson
+Jennie V. Cannon
+Jessie Arms Botke
+Johann Berthelsen
+John Elwood Bundy
+John E. Berninger
+John Francis Murphy
+John Fulton Folinsbee
+John F. Carlson
+John Joseph Enneking
+John Leslie Breck
+John Willard Raught
+Joseph DeCamp
+Joseph Kleitsch
+Joseph Raphael
+Joseph Thurman Pearson Jr.
+Julian Onderdonk
+J. Alden Weir
+J. Ottis Adams
+Karl Buesgen
+Kate Freeman Clark
+Kathryn E. Cherry
+Lars Jonson Haukaness
+Lawrence Harris
+Lawton S. Parker
+Leonard Ochtman
+Lewis Henry Meakin
+Lilla Cabot Perry
+Lindsay Dawson
+Louis Ritman
+Lucy Bacon
+Lucy Hayward Barker
+Marian T. MacIntosh
+Marilyn Bendell
+Marion Wachtel
+Martha Walter
+Martinus Andersen
+Mary Bradish Titcomb
+Mary Cassatt
+Mary Curtis Richardson
+Mary Elizabeth Price
+Mary Perkins Taylor
+Mathias Alten
+Matilda Auchincloss Brownell
+Matilda Browne
+Maurice Braun
+M. Evelyn McCormick
+Mārtiņš Krūmiņš
+Nate Dunn
+Orlando Gray Wales
+Otto Stark
+Paulette Van Roekens
+Paul Dougherty
+Paul R. Schumann
+Paul Sawyier
+Peter Alfred Gross
+Philip Leslie Hale
+Porfirio Salinas
+Reynolds Beal
+Richard E. Miller
+Richard Gruelle
+Richard H. Bassett
+Rita Asfour
+Robert B. Sherman
+Robert Malcolm Rucker
+Robert Marshall Root
+Robert Philipp
+Robert Reid
+Robert Vonnoh
+Roger Wilson Dennis
+Rowena Meeks Abdy
+Roy Cleveland Nuse
+Samuel Burtis Baker
+Simon Baus
+Stokely Webster
+Sueo Serisawa
+Svend Rasmussen Svendsen
+Theodore Earl Butler
+Theodore Robinson
+Thomas Darnell
+Thomas Dewing
+Thomas Lorraine Hunt
+Thomas P. Barnett
+T. C. Steele
+Walter Emerson Baum
+Walter Hixon Isnogle
+Warren Eugene Brandon
+Wilhelmina Weber Furlong
+Willard Metcalf
+William Chadwick
+William Forsyth
+William H. Clapp
+William Langson Lathrop
+William McGregor Paxton
+William Merritt Chase
+William Moise
+William Starkweather
+Wilson Irvine
+__american_impressionism/baum_circle__
+__american_impressionism/boston_school__
+__american_impressionism/pennsylvania_impressionist_painters__
+__american_impressionism/ten_american_painters__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/austrian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/austrian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f8dbb45e5f6953fecc4e4248dfba11b108d67275
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/austrian_impressionist_painters.txt
@@ -0,0 +1,3 @@
+Heinz Anger
+Maximilian Liebenwein
+Wilhelm Bernatzik
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/autstralian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/autstralian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..46ab55097ab36a6be8e2873328e59472f3998aaf
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/autstralian_impressionist_painters.txt
@@ -0,0 +1,7 @@
+Alfred Coleman
+Arthur Baker-Clack
+Emma Minnie Boyd
+Jane Sutherland
+John Russell
+Kathleen O'Connor
+Will Ashton
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/belgian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/belgian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f1b836cb1815417cde9fa65490d76e2eee02a72e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/belgian_impressionist_painters.txt
@@ -0,0 +1,13 @@
+Ernest Welvaert
+Evert Larock
+Frantz Charlet
+Fritz de Brouckère
+Georges Lebacq
+Guillaume Vogels
+Henry Luyten
+Jef Dutilleux
+Jenny Montigny
+Juliette Wytsman
+Leo Van Paemel
+Pieter Franciscus Dierckx
+Rodolphe Wytsman
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/brazilian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/brazilian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b82c63ef5b45a8b635d670f9bc42966fdc109077
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/brazilian_impressionist_painters.txt
@@ -0,0 +1,2 @@
+Eliseu Visconti
+Georgina de Albuquerque
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/british_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/british_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6aea06293f8eace8eba64fffd77fcb137e80730e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/british_impressionist_painters.txt
@@ -0,0 +1,35 @@
+Albert Julius Olsson
+Alexander Mann
+Alfred Sisley
+Algernon Talmage
+Amy Katherine Browning
+Arthur Diehl
+Charles W. Bartlett
+Dawson Dawson-Watson
+Dugald Sutherland MacColl
+Edward Stott
+Frederick Hall
+George Paul Chalmers
+Gladys Maccabe
+Henry Tonks
+Jack Coggins
+James Campbell Noble
+John Alexander Ford
+John Henderson
+John Menzies
+John Noble Barlow
+Joseph Franklin Kershaw
+Joseph Henderson
+Joseph Morris Henderson
+Leslie Hunter
+Paul Fordyce Maitland
+Philip Wilson Steer
+Robert McGregor
+Roy Petley
+Sydney Starr
+Victor Noble Rainbird
+Walter Sickert
+Wilfrid de Glehn
+William McTaggart
+William Stott
+Wynford Dewhurst
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/canadian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/canadian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b8d15c7f215f7ed656f51af6f46e95a55ff13669
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/canadian_impressionist_painters.txt
@@ -0,0 +1,42 @@
+Alberta Cleland
+Arthur Dominique Rozaire
+Arthur Lismer
+A. Y. Jackson
+Clarence Gagnon
+David Milne
+Edwin Holgate
+Emily Carr
+Ernest Lawson
+Euphemia McNaught
+Florence Carlyle
+Franklin Brownell
+George Agnew Reid
+Helen McNicoll
+Henri Beau
+Henry Mortikar Rosenberg
+James Wilson Morrice
+J. E. H. MacDonald
+J. M. Barnsley
+John Young Johnstone
+Joseph-Charles Franchère
+Kathleen Morris
+Lars Jonson Haukaness
+Laura Muntz Lyall
+Lawren Harris
+Lionel LeMoine FitzGerald
+Mabel May
+Marc-Aurèle de Foy Suzor-Coté
+Mary Alexandra Bell Eastlake
+Maurice Cullen
+Ottilie Palm Jost
+Paul Peel
+Prudence Heward
+Raoul Barré
+Robert Harris
+Robert Kost
+Samir Sammoun
+Sophie Pemberton
+Tom Thomson
+William Blair Bruce
+William Brymner
+William H. Clapp
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/chinese_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/chinese_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f58bd5afdeddc605799e45dee981da568b65c8ab
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/chinese_impressionist_painters.txt
@@ -0,0 +1 @@
+Wu Guanzhong
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/czech_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/czech_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d99b1ab49423bff6d57cc2ec36e59297a823ad43
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/czech_impressionist_painters.txt
@@ -0,0 +1,5 @@
+Antonín Chittussi
+Antonín Slavíček
+Jan Slavíček
+Václav Radimský
+Valentin Držkovic
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/dutch_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/dutch_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3d652549e94a9d25fa9abc12c81b46172a0c640a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/dutch_impressionist_painters.txt
@@ -0,0 +1,12 @@
+Erik Hoppe
+Harald Giersing
+Jens Søndergaard
+Karl Bovin
+Knud Agger
+Niels Lergaard
+Olaf Rude
+Oluf Høst
+Sigurd Swane
+Theodor Philipsen
+Viggo Rørup
+Vilhelm Lundstrøm
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/egyptian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/egyptian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8857e8a3eb79f24ce979abfd88ac503f29a193a2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/egyptian_impressionist_painters.txt
@@ -0,0 +1,2 @@
+Chafik Charobim
+Tahia Halim
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/german_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/german_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a106950eb6a66048480d5eafcdda79d5ebd6caf8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/german_impressionist_painters.txt
@@ -0,0 +1,46 @@
+Annot
+Arnold Lyongrün
+Arthur Langhammer
+Arthur Siebelist
+August Deusser
+August Lemmer
+August von Brandis
+Carl August Heinrich Ferdinand Oesterley
+Carl Ernst Bernhard Jutz
+Carl Geist
+Charles Johann Palmié
+Curt Herrmann
+Ernst Oppler
+Eugen Bracht
+Friedrich Eckenfelder
+Georg Arnold-Graboné
+Georg Burmester
+Gotthardt Kuehl
+Hans am Ende
+Hans von Hayek
+Heinrich Breling
+Heinrich von Zügel
+Helene Cramer
+Karl Caspar
+Karl Walther
+Leo Putz
+Lesser Ury
+Lovis Corinth
+Ludwig Dettmann
+Maria Caspar-Filser
+Max Dauthendey
+Max Liebermann
+Max Rabes
+Max Schlichting
+Max Slevogt
+Molly Cramer
+Osmar Schindler
+Otto Heichert
+Otto Reiniger
+Paul Klimsch
+Philipp Franck
+Robert Weise
+Rudolf Höckner
+Theo von Brockhusen
+Thomas Herbst
+Waldemar Rösler
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/hungarian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/hungarian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..52f75dd4fe557de23406ae5f1319789522459eba
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/hungarian_impressionist_painters.txt
@@ -0,0 +1,4 @@
+Ernő Tibor
+Károly Ferenczy
+László Paál
+Pál Szinyei Merse
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/icelandic_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/icelandic_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d1378b76a1a22d81919c7bc64fe4572a1d63ee9a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/icelandic_impressionist_painters.txt
@@ -0,0 +1 @@
+Ásgrímur Jónsson
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/indian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/indian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1cf08a222344ea00603efd42411e3909fd743233
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/indian_impressionist_painters.txt
@@ -0,0 +1 @@
+Ananta Mandal
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/irish_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/irish_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4a4f60a4c18d675d36e8eb02f38892a2e4e2e442
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/irish_impressionist_painters.txt
@@ -0,0 +1,11 @@
+Aloysius O'Kelly
+Egerton Coghill
+Frank McKelvey
+Frank O'Meara
+Gerard Byrne
+John Lavery
+Nathaniel Hill
+Roderic O'Conor
+Sheila McClean
+Walter Osborne
+William John Leech
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/italian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/italian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..223120aa3d51cbfd92015f2a86e167116fe82007
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/italian_impressionist_painters.txt
@@ -0,0 +1,3 @@
+Eliseu Visconti
+Federico Zandomeneghi
+Giuseppe De Nittis
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/latvian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/latvian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e75f77a1d87f3bef2086bd18ce49e55460316cd8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/latvian_impressionist_painters.txt
@@ -0,0 +1 @@
+Mārtiņš Krūmiņš
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/lebanese_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/lebanese_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..547aa105eb41b7727b563a81a73ddcc537003afd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/lebanese_impressionist_painters.txt
@@ -0,0 +1,2 @@
+Farid Mansour
+Omar Onsi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/luxembourgian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/luxembourgian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..096dc3a8d7cbdcd38ff7094e0b2719b73d317049
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/luxembourgian_impressionist_painters.txt
@@ -0,0 +1,3 @@
+Dominique Lang
+Frantz Seimetz
+Joseph Kutter
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/mexican_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/mexican_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4eb0d73676dad0e1579161940274e940cf01cab3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/mexican_impressionist_painters.txt
@@ -0,0 +1,2 @@
+Francisco Romano Guillemin
+Joaquín Clausell
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/norweigian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/norweigian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bc64296ed8e50cb1c14a33d5718dcaefdcf3c174
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/norweigian_impressionist_painters.txt
@@ -0,0 +1,5 @@
+Frits Thaulow
+Lars Jonson Haukaness
+Marie Løkke
+Svend Rasmussen Svendsen
+Thore Heramb
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/polish_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/polish_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cbf521f6933d08f9046d876000c81b7675239d8b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/polish_impressionist_painters.txt
@@ -0,0 +1,5 @@
+Jan Ciągliński
+Józef Pankiewicz
+Julian Fałat
+Marcin Kitz
+Władysław Podkowiński
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/romanian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/romanian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..42749bbaf251baec316331dfb48361f8c3188b9d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/romanian_impressionist_painters.txt
@@ -0,0 +1,5 @@
+Ion Theodorescu-Sion
+Nicolae Dărăscu
+Nicolae Grigorescu
+Ștefan Luchian
+Vasile Hutopilă
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/russian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/russian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b20fa42ce463474245c4c2d2d5b56f45e9c36aec
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/russian_impressionist_painters.txt
@@ -0,0 +1,24 @@
+Alexei Savrasov
+Constantin Kousnetzoff
+Constantin Westchiloff
+Dmitry Shcherbinovsky
+Emil Wiesel
+Evgenia Antipova
+Gennady Pasko
+Igor Grabar
+Joseph Pavlishak
+Konstantin Korovin
+Konstantin Yuon
+Leonid Steele
+Mikhail Demyanov
+Nikolai Clodt von Jürgensburg
+Nikolai Vasilievich Kuzmin
+Nikolay Dosekin
+Sergei Lednev-Schukin
+Sergei Vinogradov (painter)
+Sergey Vasilyevich Gerasimov
+Stanislav Zhukovsky
+Valentin Serov
+Vladimir Kozlovsky
+Vlady Kibalchich Rusakov
+Zinaida Serebriakova
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/serbian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/serbian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4634b9cb93f801442019531fcee1edc4b1af2d1f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/serbian_impressionist_painters.txt
@@ -0,0 +1,7 @@
+Beta Vukanović
+Dragomir Glišić
+Kosta Josipović
+Kosta Miličević
+Mališa Glišić
+Milan Milovanović (painter)
+Vidosava Kovačević
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/slovenian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/slovenian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b25ce99960c5b8eeb05d51374464e8a8b37ce1ed
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/slovenian_impressionist_painters.txt
@@ -0,0 +1,4 @@
+Ivan Grohar
+Matej Sternen
+Matija Jama
+Rihard Jakopič
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/soviet_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/soviet_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e05e19d59ec38172cd8081d7f0254a2618fb8b9c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/soviet_impressionist_painters.txt
@@ -0,0 +1,11 @@
+Alexander Semionov
+Alexei Voshchakin
+Arkady Plastov
+Dmitry Shcherbinovsky
+Evgenia Antipova
+Gennady Pasko
+Igor Grabar
+Joseph Pavlishak
+Leonid Steele
+Nikolay Dosekin
+Rafail Levitsky
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/spanish_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/spanish_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9e30a8549a8d48cb94d20a6bd1a7144e114bc73
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/spanish_impressionist_painters.txt
@@ -0,0 +1,12 @@
+Adolfo Guiard
+Alberto Pla y Rubio
+Eliseu Meifrèn
+Ignacio Pinazo Camarlench
+Joaquín Sorolla
+Jorge Aguilar-Agon
+Laureano Barrau
+Marceliano Santa María Sedano
+Martín Rico
+Pablo Uranga
+Ramon Pichot
+Ricard Canals
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swedish_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swedish_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab6bb2b6cb7698b20eaa2ceba84658c59216da00
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swedish_impressionist_painters.txt
@@ -0,0 +1,4 @@
+Anders Zorn
+Birger Simonsson
+Ivan Aguéli
+Richard Bergh
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swiss_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swiss_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f428302b2d4ea65a186c8d95a82c7e29d107441f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/swiss_impressionist_painters.txt
@@ -0,0 +1,4 @@
+Adolf Robbi
+Julius Voegtli
+Louise Catherine Breslau
+Martha Burkhardt
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ten_american_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ten_american_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8bd6575e9b5daa7cd367c5c89293b59ebb7c6d40
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ten_american_painters.txt
@@ -0,0 +1,10 @@
+Childe Hassam
+Edmund C. Tarbell
+Edward Simmons
+Frank W. Benson
+John Henry Twachtman
+Joseph Rodefer DeCamp
+Robert Reid
+Thomas Wilmer Dewing
+Willard Leroy Metcalf
+and J. Alden Weir
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/turkish_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/turkish_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ee1485b5626f3d19a7362b0d798ad0297a998915
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/turkish_impressionist_painters.txt
@@ -0,0 +1,6 @@
+Elif Naci
+Erkan Geniş
+Naim Uludoğan
+Nazlı Ecevit
+Nazmi Ziya Güran
+Şevket Dağ
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ukranian_impressionist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ukranian_impressionist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1f402ed13b6003b3535bd9f8ce3da4c16a84f1fc
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/impressionism/ukranian_impressionist_painters.txt
@@ -0,0 +1,5 @@
+Fyodor Zakharov
+Ivan Trush
+Mykola Burachek
+Serhii Vasylkivsky
+Vasyl Krychevsky
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/les_nabis.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/les_nabis.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5a665f00d5b7275ca8c387c445a3527deb338adb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/les_nabis.txt
@@ -0,0 +1,17 @@
+Aristide Maillol
+Édouard Vuillard
+Félix Vallotton
+Georges Lacombe
+Henri-Gabriel Ibels
+Jan Verkade
+József Rippl-Rónai
+Ker-Xavier Roussel
+Lugné-Poe
+Marguérite Sérusier
+Maurice Denis
+Maxime Dethomas
+Meyer de Haan
+Paul Ranson
+Paul Sérusier
+Pierre Bonnard
+Rene Georges Hermann-Paul
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/luminism_impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/luminism_impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5c6865ea82101eb92c108c6863f2734b8a02bae5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/luminism_impressionism.txt
@@ -0,0 +1,19 @@
+Emile Claus
+Théo van Rysselberghe
+Adriaan Jozef Heymans
+Anna Boch
+Évariste Carpentier
+Guillaume Van Strydonck
+Leon de Smet
+Jenny Montigny
+Anna De Weert
+George Morren
+Modest Huys
+Georges Buysse
+Marcel Jefferys
+Yvonne Serruys
+Juliette Wytsman
+Jan Toorop
+Leo Gestel
+Jan Sluijters
+Piet Mondriaan.
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/mir_iskusstva.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/mir_iskusstva.txt
new file mode 100644
index 0000000000000000000000000000000000000000..afab7eb383ec90c1285c5e6baa22ecc87acbf7bb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/mir_iskusstva.txt
@@ -0,0 +1,28 @@
+Albert Benois
+Alexandre Benois
+Alexandre Jacovleff
+Anna Ostroumova-Lebedeva
+Arkady Rylov
+Boris Kustodiev
+Eugene Lanceray
+Heorhiy Narbut
+Igor Grabar
+Ivan Bilibin
+Jury Annenkov
+Konstantin Bogaevsky
+Konstantin Korovin
+Konstantin Somov
+Konstantin Yuon
+Kuzma Petrov-Vodkin
+Leon Bakst
+Martiros Sarian
+Mikhail Nesterov
+Mikhail Vrubel
+Mstislav Dobuzhinsky
+Nicholas Roerich
+Pyotr Konchalovsky
+Serge Sudeikin
+Sirak Skitnik
+Vilhelms Purvitis
+Yeghishe Tadevosyan
+Zinaida Serebriakova
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/modern_art.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/modern_art.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff821975cbf342f0e7fa7ff4958e000650da4719
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/modern_art.txt
@@ -0,0 +1,18 @@
+__artists/European Art/modern/impressionism__
+__artists/European Art/modern/expressionism__
+__artists/European Art/modern/abstract_expressionism/abstract_expressionism__
+__artists/European Art/modern/american_impressionism__
+__artists/European Art/modern/cobs_art_colony__
+__artists/European Art/modern/heidelberg_school__
+__artists/European Art/modern/luminism_impressionism__
+__artists/European Art/modern/tonalism__
+__artists/European Art/modern/post_impressionism__
+__artists/European Art/modern/les_nabis__
+__artists/European Art/modern/cloisonnism__
+__artists/European Art/modern/synthetism__
+__artists/European Art/modern/neo_impressionism__
+__artists/European Art/modern/art_nouveau__
+__artists/European Art/modern/russion_avantgarde__
+__artists/European Art/modern/young_poland__
+__artists/European Art/modern/hagenbund__
+__artists/European Art/modern/fauvism__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/neo_impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/neo_impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f74fe3a2c496e1a01213264de51370453b341196
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/neo_impressionism.txt
@@ -0,0 +1,22 @@
+Albert Dubois-Pillet
+Anna Boch
+Camille Pissarro
+Charles Angrand
+Georges Lemmen
+Georges Seurat
+Henri-Edmond Cross
+Henri Matisse
+Henry van de Velde
+Hippolyte Petitjean
+Jan Toorop
+Jean Metzinger
+Léo Gausson
+Lucien Pissarro
+Maximilien Luce
+Paul Signac
+Robert Antoine Pinchon
+Robert Delaunay
+Théo van Rysselberghe
+Willy Finch
+__pointilism__
+__divisionism__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/pointilism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/pointilism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e837f2d2d6ea33c646c8bb61d20cfae01c4c06c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/pointilism.txt
@@ -0,0 +1,18 @@
+Albert Dubois-Pillet
+Alfred William Finch
+Camille Pissarro
+Charles Angrand
+Chuck Close
+Georges Lemmen
+Georges Seurat
+Henri Delavallée
+Henri-Edmond Cross
+Hippolyte Petitjean
+Jan Toorop
+Jean Metzinger
+John Roy
+Louis Fabien
+Maximilien Luce
+Paul Signac
+Théo van Rysselberghe
+Vincent van Gogh
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/post_impressionism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/post_impressionism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3943cc1b12e3326181dd8d7627511f9686ff73f7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/post_impressionism.txt
@@ -0,0 +1,162 @@
+Abel Lauvray
+Abram Molarsky
+Adrien Bas
+Albert André
+Albert Dubois-Pillet
+Albert Malet
+Aleksander Żyw
+Alexandru Bogdan-Pitești
+Alfred Swieykowski
+Alfred William Finch
+André Hallet
+Anna Boch
+Anthony Eyton
+Antun Motika
+Arthur Sachs
+Augustus John
+Birger Sandzén
+Cesáreo Bernaldo de Quirós
+Charles Angrand
+Charles Cottet
+Charles Laval
+Charles Prendergast
+Charles Reiffel
+Cleo
+Constant Detré
+Diane Esmond
+Édouard Vuillard
+Eduardo Viana
+Eero Snellman
+Élisabeth Chaplin
+Émile Bernard
+Émile Jourdan
+Émile Schuffenecker
+Émilie Charmy
+Emilio Caraffa
+Emily Carr
+Ernest Jean-Marie Millard de Bois Durand
+Ethel Carrick
+Eugène Chigot
+Eugenio Da Venezia
+Fernando Fader
+Folke Heybroek
+Francesc d'A. Planas Doria
+François Mathieu
+Frank Bramley
+Frank C. Penfold
+Fritz Friedrichs
+Gaston La Touche
+George Morren
+Georges Dufrénoy
+Georges Lemmen
+Georges Seurat
+Grace Cossington Smith
+Gustave Loiseau
+Harry Lachman
+Heidrun Huwyler
+Helen Stewart
+Henri Delavallée
+Henri de Toulouse-Lautrec
+Henri-Edmond Cross
+Henriette Tirman
+Henri-Jean Guillaume Martin
+Henri Lebasque
+Henri Le Sidaner
+Henri Matisse
+Henri Ottmann
+Henri Rivière
+Henri Rousseau
+Henry Lamb
+Hippolyte Petitjean
+Huib Luns
+Igor Grabar
+Ion Theodorescu-Sion
+Isidre Nonell
+James Michalopoulos
+Jan Autengruber
+Jan Cornelis Hofman
+Jan Toorop
+Jāzeps Grosvalds
+Jean Marchand
+Jean Metzinger
+Jeanne Pelisson-Mallet
+John Foulger
+József Rippl-Rónai
+Jules-Alexandre Grün
+Jules-Émile Zingg
+Julius von Ehren
+Juti Ravenna
+Ker-Xavier Roussel
+Konstantin Gorbatov
+Lajos Jámbor
+Lascăr Vorel
+László Dombrovszky
+Leo Gestel
+Léon Pourtau
+Léon Printemps
+Louis Dewis
+Louis Hayet
+Louis Vivin
+Lucien Biva
+Lucien Pissarro
+Madeleine Caudel
+Manuel Jardim
+Marcel Janco
+Marin Georgescu
+Mario Puccini
+Marius Borgeaud
+Martín Malharro
+Maurice Asselin
+Maurice Denis
+Maurice Prendergast
+Maximilien Luce
+Michael Matusevitch
+Mikhail Vrubel
+Miloš Jiránek
+Miroslav Kraljević
+Mogens Ballin
+Muhittin Sebati
+Nico Klopp
+Nicolae Tonitza
+Nikolaos Dragoumis
+Odilon Redon
+Oskar Herman
+Otto Weber
+Paul Cézanne
+Paule Gobillard
+Paul Gauguin
+Paul Madeline
+Paul Ranson
+Paul Sérusier
+Paul Signac
+Petre Hârtopeanu
+Pierre Bonnard
+Pío Collivadino
+Qiu Ti
+Ramón Silva
+René Auberjonois
+René Coucke
+René Schützenberger
+Richard Maguet
+Richard Ranft
+Robert Antoine Pinchon
+Robert Falk
+Sacha Moldovan
+Santiago Rusiñol
+Sonia Lewitska
+Sosthène Weis
+Stanley Royle
+Ștefan Dimitrescu
+Ștefan Luchian
+Suzanne Eisendieck
+Théo van Rysselberghe
+Thomas William Marshall
+Victor Borisov-Musatov
+Vincent van Gogh
+Vladimir Becić
+Vlaho Bukovac
+Wacław Zawadowski
+Wilhelmina Weber Furlong
+Włodzimierz Zakrzewski
+Wyndham Lewis
+Yvonne Canu
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/russion_avantgarde.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/russion_avantgarde.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3f79e308688cffdc7fad54b81edebc41ffd9d4ee
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/russion_avantgarde.txt
@@ -0,0 +1,39 @@
+Adolf Milman
+Aleksandra Ekster
+Alexander Archipenko
+Alexander Bogomazov
+Alexander Kuprin
+Alexander Osmerkin
+Aristarkh Lentulov
+Artur Fonvizin
+David Burliuk
+Elena Guro
+El Lissitzky
+Eugène Konopatzky
+Gustav Klutsis
+Ilya Chashnik
+Ilya Mashkov
+Ivan Kliun
+Ivan Puni
+Kazimir Malevich
+Kliment Red'ko
+Lazar Khidekel
+Liubov Popova
+Marc Chagall
+Max Penson
+Mikhail Larionov
+Mikhail Matyushin
+Moisey Feigin
+Natalia Goncharova
+Naum Gabo
+Nina Genke-Meller
+Paul Mansouroff
+Pavel Filonov
+Pyotr Konchalovsky
+Robert Falk
+Sergei Arksentevich Kolyada
+Solomon Nikritin
+Vadim Meller
+Vasily Kandinsky
+Vladimir Baranoff-Rossine
+Vladimir Burliuk
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/synthetism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/synthetism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5150b840f2f2ba6137351f4b720f3a0c4aeb82a4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/synthetism.txt
@@ -0,0 +1,5 @@
+Paul Sérusier
+Paul Gauguin
+Émile Bernard
+Charles Laval
+Cuno Amiet
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/tonalism.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/tonalism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b4328932a89da63f7b78a95bde42582eb8d1834
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/tonalism.txt
@@ -0,0 +1,42 @@
+Albert Pinkham Ryder
+Alexander Helwig Wyant
+Angel De Cora
+Arthur Frank Mathews
+Arthur Hoeber
+Bruce Crane
+Charles Melville Dewey
+Charles Warren Eaton
+Clarice Beckett
+Clark Greenwood Voorhees
+Colin Colahan
+Dwight William Tryon
+Edith Loring Getchell
+Edward Mitchell Bannister
+Edward Steichen
+Elliott Daingerfield
+Emanuele Cavalli
+Fausto Pirandello
+Frank Nuderscher
+George Inness
+Granville Redmond
+Henry Farrer
+Henry Ward Ranger
+James McNeill Whistler
+Jean-Charles Cazin
+John Francis Murphy
+John Twachtman
+Joseph Allworthy
+L. Birge Harrison
+Leon Dabo
+Max Meldrum
+Paul Cornoyer
+Percy Gray
+Percy Leason
+Ralph Albert Blakelock
+Raymond Dabb Yelland
+Robert Crannell Minor
+Thomas Dewing
+William Keith
+William Sartain
+Willis Seaver Adams
+Xavier Martinez
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/vienna_secession.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/vienna_secession.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2ed770c51a1231b893bb3eb5782093ecf1f2bf39
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/vienna_secession.txt
@@ -0,0 +1,16 @@
+Alfred Roller
+Bertold Löffler
+Cuno Amiet
+Egon Schiele
+Fernand Khnopff
+Franz Sedlacek
+Gustav Klimt
+Joseph Urbania
+Józef Mehoffer
+Koloman Moser
+Maximilian Pirner
+Max Kurzweil
+Oskar Kokoschka
+Richard Gerstl
+Rudolf von Alt
+Wojciech Weiss
diff --git a/ex/dynamic-prompts/collections/artists/European Art/modern/young_poland.txt b/ex/dynamic-prompts/collections/artists/European Art/modern/young_poland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4155b9ad2be17a4b12e22a83ba3707b18ba140b1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/modern/young_poland.txt
@@ -0,0 +1,28 @@
+Ferdynand Ruszczyc
+Jacek Malczewski
+Jan Bukowski
+Jan Raszka
+Jan Stanisławski
+Jan Talaga
+Józef Mehoffer
+Józef Pankiewicz
+Julian Fałat
+Karol Frycz
+Kazimierz Sichulski
+Konstanty Brandel
+Konstanty Laszczka
+Leon Wyczółkowski
+Ludwik Konarzewski
+Maurycy Lilien
+Olga Boznańska
+Stanisław Wyspiański
+Teodor Axentowicz
+Teofil Terlecki
+Wacław Szymanowski
+Witold Wojtkiewicz
+Władysław Ślewiński
+Włodzimierz Przerwa-Tetmajer
+Wojciech Gerson
+Wojciech Kossak
+Wojciech Weiss
+Xawery Dunikowski
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/american_barbizon_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/american_barbizon_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9ff8e01379ddde87828c3d256239923d66dd388b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/american_barbizon_school.txt
@@ -0,0 +1,21 @@
+Alexander Helwig Wyant
+Alexis Jean Fournier
+Childe Hassam
+Edward Mitchell Bannister
+George Inness
+Henry Golden Dearth
+Henry Ossawa Tanner
+Henry Ward Ranger
+Homer Dodge Martin
+Homer Watson
+Horatio Walker
+John Francis Murphy
+Joseph Foxcroft Cole
+Maria a'Becket
+Robert Crannell Minor
+Thomas Eakins
+William Keith
+William Morris Hunt
+Wilson Irvine
+Winckworth Allan Gay
+Winslow Homer
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/barbizon_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/barbizon_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5f591599fb0556a71481248f26ea25bef9e7a656
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/barbizon_school.txt
@@ -0,0 +1,14 @@
+Eugène Boudin
+Hippolyte Boulenger
+Paul Cornoyer
+Gustave Courbet
+Pierre Emmanuel Damoye
+Constant Dutilleux
+Antonio Fontanesi
+Nicolae Grigorescu
+Winckworth Allan Gay
+H. I. Marlatt
+Adolphe Joseph Thomas Monticelli
+Paul Trouillebert
+Albert Charpin
+Charles Olivier de Penne
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/biedermeier.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/biedermeier.txt
new file mode 100644
index 0000000000000000000000000000000000000000..72e8f2d228bd23ce35db43ff353c1fda04672118
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/biedermeier.txt
@@ -0,0 +1,3 @@
+Josef Navrátil
+Antonín Machek
+Antonín Mánes.
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/hague_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/hague_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..63a3ac6e6216e083d987d00c6114e9e1d49445c9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/hague_school.txt
@@ -0,0 +1,45 @@
+Adrianus Hendrikus Witjens
+Albert Neuhuys
+Andreas Schelfhout
+Anthonie Waldorp
+Anthon Van Rappard
+Anton Mauve
+Arnold Hendrik Koning
+Barend Cornelis Koekkoek
+Bartholomeus Van Hove
+Bernard De Hoog
+Bernard J. Blommers
+Charles Rochussen
+David Adolph Constant Artz
+Floris Arntzenius
+George Hendrik Breitner
+George Jan Hendik Poggenbeek
+Gerard Bilders
+Gerrit Van Houten
+Hendrik Van de Sande Bakhuysen
+Hendrik Willem Mesdag
+Herman Jacob Van der Voort in de Betouw
+Herman Johannes Van der Weele
+Hubertus Van Hove
+Isaac Israëls
+Jacob Jan van der Maaten
+Jacob Maris
+Jan Hendrik Weissenbruch
+Jan Hillebrand Wijsmuller
+Johannes Bosboom
+Johannes Evert Hendrik Akkeringa
+Johannes Hubertus Leonardus De Haas
+Johannes Warnardus Bilders
+Jozef Israëls
+Julius Van de Sande Bakhuyzen
+Matthijs Maris
+Paul Joseph Constantin Gabriël
+Philip Sadée
+Pieter Frederik Van Os
+Sina Mesdag-van Houten
+Taco Mesdag
+Théophile De Bock
+Willem Bastiaan Tholen
+Willem De Zwart
+Willem Maris
+Willem Roelofs
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/macchiaioli.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/macchiaioli.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d083515040e31507adec70cdd9d29d712b25b8c5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/macchiaioli.txt
@@ -0,0 +1,5 @@
+Giuseppe Abbati
+Vito D'Ancona
+Giovanni Fattori
+Silvestro Lega
+Telemaco Signorini
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e2d157f807faa62cdc76dac400cd62d8334634ff
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical.txt
@@ -0,0 +1,12 @@
+__artists/European Art/neoclassical/neoclassical/american_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/belgian_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/british_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/french_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/german_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/italian_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/neoclassical__
+__artists/European Art/neoclassical/neoclassical/portuguese_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/return_to_order__
+__artists/European Art/neoclassical/neoclassical/romanian_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/russian_neoclassical_painters__
+__artists/European Art/neoclassical/neoclassical/spanish_neoclassical_painters__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/american_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/american_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bc0655d806a5d2780248ae34be96c938f588f636
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/american_neoclassical_painters.txt
@@ -0,0 +1,5 @@
+Bruno Civitico
+Rembrandt Peale
+Sarah Miriam Peale
+John Trumbull
+John Vanderlyn
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/belgian_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/belgian_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ea19dcd2bb31220babeff9702195cd0f03a9c50
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/belgian_neoclassical_painters.txt
@@ -0,0 +1,5 @@
+Pieter van Hanselaere
+François-Joseph Navez
+Joseph Denis Odevaere
+Joseph-Benoît Suvée
+Matthias de Visch
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/british_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/british_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..67fc472a8b49200f7b561a20bd025a7641e9432b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/british_neoclassical_painters.txt
@@ -0,0 +1,3 @@
+John Hamilton Mortimer
+Dorothy Tennant
+Herbert William Weekes
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/french_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/french_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e8b515fd5951ae3523ae9076c7f699f4167b0e4f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/french_neoclassical_painters.txt
@@ -0,0 +1,31 @@
+Adélaïde Binart
+Alexandre Cabanel
+Antoine-Jean Gros
+Charles-Louis Clérisseau
+Charles Thévenin
+Élisabeth Vigée Le Brun
+Éloi Firmin Féron
+François-André Vincent
+François-Édouard Picot
+François Guérin (artist)
+François-Guillaume Ménageot
+Georges Rouget
+Guillaume Guillon-Lethière
+Guillaume-Joseph Roques
+Jacques Amans
+Jacques-Louis David
+Jacques Stella
+Jean-Antoine-Théodore Giroust
+Jean-Auguste-Dominique Ingres
+Jean-Charles Nicaise Perrin
+Jean-François Pierre Peyron
+Joseph André Cellony
+Joseph-Noël Sylvestre
+Louis Jean Desprez
+Louis René Vialy
+Marie-Guillemine Benoist
+Merry-Joseph Blondel
+Pierre Bouillon
+Pierre Subleyras
+Raymond Monvoisin
+Thomas Degeorge
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/german_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/german_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bbc599b152c447f117f923d1ee11b6e4b84e6a9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/german_neoclassical_painters.txt
@@ -0,0 +1,7 @@
+Anselm Feuerbach
+Anna Rosina de Gasc
+Leo von Klenze
+Anton Raphael Mengs
+Gottlieb Schick
+Karl Friedrich Schinkel
+Johan Zoffany
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/italian_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/italian_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4d7c1a1db227eda35bea42ce96e63e79fe22450e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/italian_neoclassical_painters.txt
@@ -0,0 +1,136 @@
+Adeodato Malatesta
+Agostino Comerio
+Agostino Panozzi
+Alfonso Chierici
+Andrea Appiani
+Andrea Celestini
+Angelo Monticelli
+Antonio Bresciani
+Antonio Cavallucci
+Antonio Concioli
+Antonio Marini
+Antonio Paticchi
+Antonio Peracchi
+Antonio Raffaele Calliano
+Antonio Zucchi
+Baldassare Calamai
+Bartolomeo Pinelli
+Benedetto dal Buono
+Biagio Martini
+Camillo Guerra
+Carlo De Notaris
+Carlo Giuseppe Ratti
+Carlo Maria Mariani
+Carlo Maria Viganoni
+Cesare Maffei
+Christopher Unterberger
+Cosroe Dusi
+Costanzo Angelini
+Domenico Corvi
+Domenico De Angelis
+Domenico Udine Nani
+Domenico Vantini
+Emidio Pallotta
+Eugenio Agneni
+Fedele Fischetti
+Felice Giani
+Felice Schiavoni
+Filippo Bigioli
+Filippo Marsigli
+Filippo Prosperi
+Francesco Alberi
+Francesco Corneliani
+Francesco Fontanesi
+Francesco Giangiacomo
+Francesco Montanari
+Francesco Nenci
+Francesco Pascucci
+Francesco Sabatelli
+Francisco Preciado
+Gaetano Callani
+Gallo Gallina
+Gaspare Gabrielli
+Gaspare Landi
+Gaspare Mattioli
+Gasparo Martellini
+Gennaro Maldarelli
+Giacomo Berger
+Gioacchino Giuseppe Serangeli
+Giorgio Berti
+Giorgio Fuentes
+Giovanni Battista Biscarra
+Giovanni Battista Borghesi
+Giovanni Battista Canal
+Giovanni Battista Cassevari
+Giovanni Battista Cecchi
+Giovanni Battista Ercole
+Giovanni Battista Frulli
+Giovanni Battista Piranesi
+Giovanni Battista Sangiorgi
+Giovanni Carlo Bevilacqua
+Giovanni De Min
+Giovanni Gaibazzi
+Girolamo Dal Pane
+Giulio Cesare Ferrari
+Giuseppe Appiani
+Giuseppe Bezzuoli
+Giuseppe Bossi
+Giuseppe Cammarano
+Giuseppe Collignon
+Giuseppe Gandolfo
+Giuseppe Gherardi
+Giuseppe Guizzardi
+Giuseppe Jarmorini
+Giuseppe Levati
+Giuseppe Mazzola
+Giuseppe Patania
+Giuseppe Sabatelli
+Giuseppe Sogni
+Giuseppe Turchi
+Giuseppe Velasquez
+Ignazio Hugford
+Jean-Baptiste Frédéric Desmarais
+Lamberto Cristiano Gori
+Laurent Pécheux
+Liberale Cozza
+Luigi Agricola
+Luigi Catani
+Luigi Crespi
+Luigi Persico
+Luigi Rubio
+Luigi Sabatelli
+Marcello Leopardi
+Mariano Rossi
+Michelangelo Fumagalli
+Michele Plancher
+Napoleone Angiolini
+Natale Schiavoni
+Nazario Nazari
+Nicola Cianfanelli
+Nicola Contestabili
+Nicola Mónti
+Odoardo Fischetti
+Odorico Politi
+Pasquale Ciaramponi
+Pasquale Saviotti
+Pietro Angeletti
+Pietro Benvenuti
+Pietro Bettelini
+Pietro Gonzaga
+Pietro Labruzzi
+Pietro Ròi
+Pietro Saja
+Pio Panfili
+Pompeo Batoni
+Prospero Minghetti
+Raffaele Ciappa
+Raffaelle Giovannetti
+Romoaldo Turini
+Salvatore Lo Forte
+Sante Cattaneo
+Sante Pacini
+Stanislao Campana
+Vicenza Giovanna Rovisi
+Vincenzo Brenna
+Vincenzo Camuccini
+Vincenzo Valdrè
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/portuguese_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/portuguese_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..631d8d8cfb7b14558575056d5adde9092723c30d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/portuguese_neoclassical_painters.txt
@@ -0,0 +1,2 @@
+Domingos Sequeira
+Vieira Portuense
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/return_to_order.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/return_to_order.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b79b66208f385bfcd4d0304d8c7d55011d0061b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/return_to_order.txt
@@ -0,0 +1,8 @@
+Jean Cocteau
+Pierre Dumont
+Auguste Herbin
+André Lhote
+Jean Metzinger
+Pablo Picasso
+Diego Rivera
+Gino Severini
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/romanian_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/romanian_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f5c7df31829fc4fee6c6e82ea4681a53fbb710b7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/romanian_neoclassical_painters.txt
@@ -0,0 +1 @@
+Gheorghe Tattarescu
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/russian_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/russian_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5d3dc21e5ae866b0cbd9da5d8d05a140e04fe42b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/russian_neoclassical_painters.txt
@@ -0,0 +1,4 @@
+Karl Bryullov
+Fyodor Gordeyev
+Fyodor Matveyev
+Semyon Shchedrin
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/spanish_neoclassical_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/spanish_neoclassical_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6d6cf392cd64a376da8637c45a57c43668727a9f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/neoclassical/spanish_neoclassical_painters.txt
@@ -0,0 +1,4 @@
+Francisco Agustín y Grande
+Francisco Bayeu y Subías
+Antonio Carnicero
+José de Madrazo y Agudo
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/norwich_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/norwich_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b8940563429a52688d6d893d0850932a78745c1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/norwich_school.txt
@@ -0,0 +1,45 @@
+Alfred George Stannard
+Alfred Priest
+Alfred Stannard
+Anthony Sandys
+Arthur James Stark
+Charles Hodgson
+Daniel Coppin
+David Hodgson
+Edward Thomas Daniell
+Edwin Cooper
+Eloise Harriet Stannard
+{Emily Stannard|Emily Coppin}
+Frederick George Cotman
+Frederick Ladbrooke
+Frederick Sandys
+George Vincent
+Henry Bright
+Henry Ninham
+Horace Beevor Love
+James Bulwer
+James Sillett
+James Stark
+{John Berney Crome|Young Crome}
+John Berney Ladbrooke
+John Cantiloe Joy
+{John Crome|Old Crome}
+John Joseph Cotman
+John Middleton
+John Ninham
+John Sell Cotman
+John Thirtle
+Joseph Clover
+Joseph Geldart
+Joseph Stannard
+Maria Margitson
+Miles Edmund Cotman
+Obadiah Short
+Robert Dixon
+Robert Ladbrooke
+Robert Leman
+Samuel David Colkett
+Thomas Lound
+Victoria Susannah Colkett
+William Joy
+William Philip Barnes Freeman
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/pre_raphaelite_brotherhood.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/pre_raphaelite_brotherhood.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5211b96aed135f17ee15615b2247946c3f678129
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/pre_raphaelite_brotherhood.txt
@@ -0,0 +1,33 @@
+Anthony Frederick Augustus Sandys
+Arthur Hughes
+Charles Allston Collins
+Dante Gabriel Rossetti
+Edward Burne-Jones
+Edward Robert Hughes
+Elizabeth Siddal
+Emma Sandys
+Evelyn De Morgan
+Ford Madox Brown
+Frank Cadogan Cowper
+Frederic, Lord Leighton
+Frederic Shields
+Henry Holiday
+Henry Wallis
+James Collinson
+John Brett
+John Everett Millais
+John William Godward
+Louisa, Marchioness of Waterford
+Lucy Madox Brown
+Marie Spartali Stillman
+Mary Lizzie Macomber
+May Morris
+Richard Burchett
+Robert Braithwaite Martineau
+Simeon Solomon
+Thomas Seddon
+Thomas Woolner
+Walter Deverell
+William Holman Hunt
+William Lindsay Windus
+William Morris
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bb201cb93fca8b3dcaa2eae2dc36d9fef28aae65
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism.txt
@@ -0,0 +1,131 @@
+Adam Stefanović
+Adrià Pina
+Alan Shuptrine
+Aleksandr Makovsky
+Alexander Evgenievich Ponomarev
+Alexander Grigoriev
+Alexander Osmerkin
+Alex Colville
+Alfons Dunin-Borkowski
+Alton Tobey
+Álvaro Casanova Zenteno
+Ananta Mandal
+Andrew Micallef
+Ans Markus
+Antonio Guzmán Capel
+Antonio López García
+Anton Mauve
+Apollon Mokritsky
+Archibald Herman Müller
+Archibald Kay
+August Schneider
+Bikash Bhattacharjee
+Bo Bartlett
+Bruno Civitico
+Carl Ludwig Jessen
+Clark Hulings
+Columbano Bordalo Pinheiro
+Conor Walton
+Conrad Hommel
+David Campbell (painter)
+Derek Buckner
+Dmitri Sinodi-Popov
+Dolors Vázquez Aznar
+Dragan Malešević Tapi
+Eduardo Sívori
+Ernesto de la Cárcova
+Eugenio Cruz Vargas
+Fidelia Bridges
+Franz Eisenhut
+Fyodor Vasilyev
+Geoff Williams (painter)
+George W. Maynard
+Giovanni Fattori
+Harijadi Sumodidjojo
+Harold Weston
+Harry Jackson (artist)
+Heinrich Mücke
+Henrik Weber
+Henry E McDaniel
+Henry Herbert La Thangue
+Henry Jones Thaddeus
+Herbert Badham
+Hippolyte Boulenger
+İbrahim Balaban
+Iman Afsarian
+Iman Maleki
+Isaac Soyer
+Jack Coggins
+Jacques Hnizdovsky
+Jean Carolus
+Joe Dunne (artist)
+Johann Gottfried Steffan
+Joram Rozov
+Josef Dande
+Josip Račić
+Kent Bellows
+Kitty Lange Kielland
+Konstantin Trutovsky
+Leopold Pilichowski
+Luitpold Adam
+Lyndall Bass
+Manuel Lopes Rodrigues
+Marcus Beilby
+Mathurin Janssaud
+Mauritz de Haas
+Mikhail Clodt von Jürgensburg
+Mór Than
+Naim Uludoğan
+Nasrollah Sarvari
+Nazlı Ecevit
+Neil Faulkner (painter)
+Nestor Leynes
+Nicolae Vermont
+Octav Băncilă
+Pablo Runyan
+Paja Jovanović
+Paul Meltsner
+Paul Winstanley
+Pavel Petrović
+Pedro Weingärtner
+Rackstraw Downes
+Raphael Soyer
+R. B. Sprague
+Rebecca Gabriel
+Robert C. Jackson
+Robert Kost
+Sarah Haffner
+Simon Hollósy
+Simon Kozhin
+Stan Masters
+Stephen Namara
+Svetislav Jovanović
+Takanori Kinoshita
+Tanya Davis (artist)
+Theodor Martens
+Thomas Eakins
+Tully Filmus
+Uroš Predić
+Valeri Larko
+Vasily Vereshchagin
+Veloso Salgado
+Victor Martinez Malaga
+Vidosava Kovačević
+Walter Daniel Batley
+Wilhelm Leibl
+William B. T. Trego
+William Glackens
+William Nichols (artist)
+Winslow Homer
+__artists/European Art/neoclassical/realism/american_realism__
+__artists/European Art/neoclassical/realism/british_realism__
+__artists/European Art/neoclassical/realism/bulgarian_realism__
+__artists/European Art/neoclassical/realism/finnish_realism__
+__artists/European Art/neoclassical/realism/french_realism__
+__artists/European Art/neoclassical/realism/hungarian_realism__
+__artists/European Art/neoclassical/realism/norwegian_realism__
+__artists/European Art/neoclassical/realism/peredvizhniki__
+__artists/European Art/neoclassical/realism/portuguese_realism__
+__artists/European Art/neoclassical/realism/russian_realism__
+__artists/European Art/neoclassical/realism/slovenian_realism__
+__artists/European Art/neoclassical/realism/soviet_realism__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/american_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/american_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f2fc3b3be42f4899b8a3f837b642628161cf3164
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/american_realism.txt
@@ -0,0 +1,56 @@
+Alice Dalton Brown
+Allan Gorman
+Andrew Wyeth
+Bernard Safran
+Bill Martin
+Bruno Civitico
+Camille Engel
+Catherine Murphy
+C.K. Chatterton
+David Fairrington
+Devon Rodriguez
+Edward Everett
+Edward Hopper
+Edward Leigh Chase
+Elizabeth Saltonstall
+Francis Quirk
+Frank Swift Chase
+F. Scott Hess
+Gainor Roberts
+George Bellows
+Harold Bruder
+Harry Shokler
+Henry Ossawa Tanner
+Inez Storer
+Irving Ramsey Wiles
+Jack Beal
+James N. Rosenberg
+Jim Abeita
+John Englehart
+John Mecray
+John Paul Strain
+John Register
+Juan Gonzalez
+Julia Cornelia Slaughter
+Karl Stecher
+Lawrence Beall Smith
+Leigh Behnke
+Lenore Chinn
+Manon Cleary
+Nathlie Provosty
+Paul Collins
+Robert Brackman
+Robert Jessup
+Rockwell Kent
+Ron Kleemann
+Sherrie Wolf
+Sherry Wolf
+Shirley Gorelick
+Sidney Goodman
+Stephen Cornelius Roberts
+Theodore Czebotar
+Thomas Furlong
+Wade Reynolds
+William Bliss Baker
+William Morris Hunt
+William Wolk
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/british_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/british_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2ddc4f62b52ed4bf008868def2373387946ad740
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/british_realism.txt
@@ -0,0 +1,8 @@
+William Coldstream
+Ralph Hedley
+John Frederick Herring Sr.
+Edward Middleditch
+Raoul Millais
+James Pollard
+Nicholas Charles Williams
+
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/bulgarian_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/bulgarian_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..37a433120e10a906b32bd4074247fad65975d852
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/bulgarian_realism.txt
@@ -0,0 +1,3 @@
+Dimitar Dobrovich
+Konstantin Shtarkelov
+Dechko Uzunov
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/finnish_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/finnish_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d0e984d7ba6029f1017cee3e2bfb1544486de3f9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/finnish_realism.txt
@@ -0,0 +1,2 @@
+Adolf von Becker
+Eero Järnefelt
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/french_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/french_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e016d663916ca385bd34bff72e6720777ebed67f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/french_realism.txt
@@ -0,0 +1,37 @@
+Adolphe Appian
+Albert Charpin
+Alexandre Antigna
+Antoine Guillemet
+Antoine Vollon
+Armand Laroche
+Charles-François Daubigny
+Charles Joshua Chaplin
+Édouard Manet
+Émile Friant
+Émilie Desjeux
+Félix Lionnet
+Félix Ziem
+Francis Tattegrain
+François Bonvin
+François-Louis Français
+Georges Petetin
+Gustave Courbet
+Henri Nicolas Vinet
+Jean-Baptiste-Camille Corot
+Jean-François Millet
+Jean-François Raffaëlli
+Joseph Ducreux
+Jules Breton
+Julien Dupré
+Julien Le Blant
+Louis-Frédéric Schützenberger
+Louis-Nicolas Cabat
+Paul Alexandre Protais
+Paul de Longpré
+Paul Gervais
+Paul Philippoteaux
+Rosa Bonheur
+Théodore Rousseau
+Théodule Ribot
+Théophile Poilpot
+William-Adolphe Bouguereau
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/hungarian_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/hungarian_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dd8b49288106f8b29c089b594c3db051e0ef5728
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/hungarian_realism.txt
@@ -0,0 +1,3 @@
+László Dombrovszky
+Károly Ferenczy
+Tivadar Zemplényi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/norwegian_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/norwegian_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..970f4fcb0967511f5f7cb5cd593a7f3c37c155f6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/norwegian_realism.txt
@@ -0,0 +1,2 @@
+Hans Gude
+Hans Heyerdahl
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/peredvizhniki.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/peredvizhniki.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ea474dd9e360dfa5d48e8b5c2704f8143d78952
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/peredvizhniki.txt
@@ -0,0 +1,63 @@
+Abram Arkhipov
+Afanasy Razmaritsyn
+Aleksey Afanas'ev
+Alexander Beggrov
+Alexander Litovchenko
+Alexei Savrasov
+Alexei Stepanov
+Alexey Bogolyubov
+Andrei Ryabushkin
+Antonina Rzhevskaya
+Apollinary Vasnetsov
+Arkhip Kuindzhi
+Dmitry Shcherbinovsky
+Emily Shanks
+Fyodor Bronnikov
+Grigoriy Myasoyedov
+Illarion Pryanishnikov
+Ilya Ostroukhov
+Ilya Repin
+Isaac Levitan
+Ivan Bogdanov
+Ivan Gorokhov
+Ivan Kramskoi
+Ivan Pokhitonov
+Ivan Shishkin
+Khariton Platonov
+Klavdy Lebedev
+Konstantin Makovsky
+Konstantin Pervukhin
+Konstantin Savitsky
+Konstantīns Visotskis
+Leonid Pasternak
+Lukian Popov
+Mikhail Nesterov
+Mykola Pymonenko
+Nikolai Bodarevsky
+Nikolai Dmitriyevich Kuznetsov
+Nikolai Ge
+Nikolai Orlov
+Nikolai Shulpinov
+Nikolai Yaroshenko
+Nikolai Zagorsky
+Nikolay Bogdanov-Belsky
+Nikolay Dubovskoy
+Nikolay Kasatkin
+Nikolay Makovsky
+Pavel Brullov
+Rafail Levitsky
+Sergei Korovin
+Sergei Vinogradov
+Sergey Ivanov
+Valentin Serov
+Valery Jacobi
+Vasily Pereplyotchikov
+Vasily Perov
+Vasily Polenov
+Vasily Surikov
+Vasily Volkov
+Vassily Maximov
+Viktor Vasnetsov
+Viktor Zarubin
+Vitaly Tikhov
+Vladimir Makovsky
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/portuguese_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/portuguese_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06437a19263b6c54adc6faa41ec4fb3c4e4970c8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/portuguese_realism.txt
@@ -0,0 +1,2 @@
+Carlos Bonvalot
+Miguel Ângelo Lupi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/russian_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/russian_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fc643199411340fb7751dc7b754d2a156b7adb0d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/russian_realism.txt
@@ -0,0 +1,31 @@
+Abram Arkhipov
+Alexei Korzukhin
+Alexei Savrasov
+Arkady Plastov
+Boris Sholokhov
+Gavriil Gorelov
+Grigoriy Myasoyedov
+Illarion Pryanishnikov
+Ilya Repin
+Joseph Pavlishak
+Konstantin Korovin
+Konstantin Savitsky
+Lukian Popov
+Mikhail Nesterov
+Nikolai Clodt von Jürgensburg
+Nikolai Sychov
+Nikolai Vasilievich Kuzmin
+Pavel Fedotov
+Pyotr Ivanovich Sholokhov
+Svetlana Solo
+Tatiana Badanina
+Valery Jacobi
+Vasily Perov
+Vasily Polenov
+Vassily Maximov
+Vladimir Kozlovsky
+Vladimir Orlovsky
+Yelena Zhukova
+Yury Kataev
+__peredvizhniki__
+__soviet_realism__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/slovenian_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/slovenian_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c9137e45f3ce5290a77f8aa9663a0d8aba794360
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/slovenian_realism.txt
@@ -0,0 +1,3 @@
+Anton Ažbe
+Ivana Kobilca
+Gojmir Anton Kos
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/soviet_realism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/soviet_realism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..012abfc647140d9ce29131f794eec046cba68e4b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/realism/soviet_realism.txt
@@ -0,0 +1,13 @@
+Semion Abugov
+Fedor Antonov
+Abram Arkhipov
+Tatiana Badanina
+Gavriil Gorelov
+Alexander Grigoriev
+Yury Kataev
+Stepan Mamchich
+Elena Marttila
+Mikhail Nesterov
+Arkady Plastov
+Nikolai Sychov
+Yelena Zhukova
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cf0baf1352cece8c03045d43ec2d1004b7f361b6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism.txt
@@ -0,0 +1,22 @@
+__artists/European Art/neoclassical/romanticism/american_romantic_painters__
+__artists/European Art/neoclassical/romanticism/armenian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/austrian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/belgian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/brazilian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/british_romaintic_painters__
+__artists/European Art/neoclassical/romanticism/bulgarian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/danish_romantic_painters__
+__artists/European Art/neoclassical/romanticism/dutch_romantic_painters__
+__artists/European Art/neoclassical/romanticism/french_romantic_painters__
+__artists/European Art/neoclassical/romanticism/german_romantic_painters__
+__artists/European Art/neoclassical/romanticism/hungarian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/irish_romantic_painters__
+__artists/European Art/neoclassical/romanticism/italian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/luminism__
+__artists/European Art/neoclassical/romanticism/norwegian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/polish_romantic_painters__
+__artists/European Art/neoclassical/romanticism/portuguese_romantic_painters__
+__artists/European Art/neoclassical/romanticism/romanian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/russian_romantic_painters__
+__artists/European Art/neoclassical/romanticism/spanish_romantic_painters__
+__artists/European Art/neoclassical/romanticism/swiss_romantic_painters__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/american_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/american_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..97630ef2d79e1f3b85de70570568a98efc1efb1a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/american_romantic_painters.txt
@@ -0,0 +1,7 @@
+Edwin Deakin
+Asher Brown Durand
+Daniel Charles Grose
+William Morris Hunt
+Richard T. Scott
+John Trumbull
+__artists/European Art/neoclassical/romanticism/hudson_river_school__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/armenian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/armenian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7636f0da608e74b4c6d53f4fe92e66367373fc65
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/armenian_romantic_painters.txt
@@ -0,0 +1 @@
+Ivan Aivazovsky
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/austrian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/austrian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9330c39fda7a4fce419fcfc50390cf3a3a9ba3a7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/austrian_romantic_painters.txt
@@ -0,0 +1,4 @@
+Joseph von Führich
+Franciszek Ksawery Lampi
+Moritz von Schwind
+Eduard von Steinle
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/belgian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/belgian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..990faa90940ece91b5e1e477a275dafe368fbe52
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/belgian_romantic_painters.txt
@@ -0,0 +1,6 @@
+Édouard De Bièfve
+Louis Gallait
+Nicaise de Keyser
+Adèle Kindt
+Ferdinand Pauwels
+Gustaaf Wappers
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/brazilian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/brazilian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1bcbcc71199dc21a80114f97dc1a44fd7cbaea6e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/brazilian_romantic_painters.txt
@@ -0,0 +1,4 @@
+Pedro Américo
+Victor Meirelles
+Manuel de Araújo Porto-Alegre
+Pedro Weingärtner
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/british_romaintic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/british_romaintic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..93feec63190dfc043663fdef9f272a582d8c1b58
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/british_romaintic_painters.txt
@@ -0,0 +1,3 @@
+__artists/European Art/neoclassical/romanticism/english_romantic_painters__
+__artists/European Art/neoclassical/romanticism/pre_raphaelite_painters__
+__artists/European Art/neoclassical/romanticism/scottish_romantic_painters__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/bulgarian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/bulgarian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e543e074e6d424be7816b24da28893af4ba48a31
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/bulgarian_romantic_painters.txt
@@ -0,0 +1,2 @@
+Dimitar Dobrovich
+Dechko Uzunov
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/danish_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/danish_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..05d3b38b8476b28944fe4b3136289dd501902902
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/danish_romantic_painters.txt
@@ -0,0 +1,8 @@
+Christen Dalsgaard
+Johannes Flintoe
+Vilhelm Kyhn
+Johan Ludwig Lund
+Ludvig Abelin Schou
+P. C. Skovgaard
+Ludvig August Smith
+Frederik Sødring
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dusseldorf_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dusseldorf_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2facbbe3b9d1f0e494f922048c0edfa27feca375
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dusseldorf_school.txt
@@ -0,0 +1,200 @@
+Adam Eberle
+Adolf Bierbrauer
+Adolf Mosengel
+Albert Arnz
+Albert Baur
+Albert Kindler
+Alfred Rethel
+Alice Creischer
+Alois Plum
+Anatol Herzfeld
+Andreas Achenbach
+Andreas Bloch
+Andreas Gursky
+Anna Blume
+Anna Heidenhain
+Anselm Feuerbach
+Anselm Kiefer
+Ants Laikmaa
+Arnold Böcklin
+August Cappelen
+August Neven du Mont
+Axel Hütte
+Bengt Nordenberg
+Bernard Lokai
+Bernd and Hilla Becher
+Berndt Lindholm
+Bernhard Hoetger
+Bettina Pousttchi
+Bhalchandra Dattatray Mondhe
+Blinky Palermo
+Brigitte Jurack
+Candida Höfer
+Carl Becker
+Carl Emanuel Conrad
+Carl Ernst Christoph Hess
+Carl Heinrich Hermann
+Carl Hertel
+Carlo Mense
+Carl Schmitz-Pleis
+Carl von Perbandt
+Caspar Scheuren
+Chen Ruo Bing
+Christian Ludwig Bokelmann
+Christoph Büchel
+David Edward Cronin
+David Ostrowski
+Dolly Buster
+Driss Ouadahi
+Dudley Hardy
+Eduard Frederich
+Eduard Kaempffer
+Eduard Wilhelm Pose
+Elger Esser
+Émile V. Schlesser
+Enoch Wood Perry Jr.
+Erik Johan Löfgren
+Ernst te Peerdt
+Erwin Heerich
+Eugene von Guerard
+Eugen Kampf
+Ferdinand von Rayski
+Franz Ittenbach
+Friedrich Geselschap
+Friedrich Klein-Chevalier
+Friedrich Martersteig
+Fritz Neuhaus
+Ged Quinn
+Georg Bergmann
+Georg Burmester
+George Henry Hall
+Georg Klusemann
+Georg Macco
+Georg Meistermann
+Georg Saal
+Gerhard Richter
+Gisbert Flüggen
+Gottfried Brockmann
+Gotthard Graubner
+Gregor von Bochmann the Younger
+Günter Grass
+Gustav Graef
+Hans Dahl
+Hans-Jörg Holubitschka
+Heinrich Christoph Kolbe
+Heinrich Freudweiler
+Heinrich Hermanns
+Heinrich Lauenstein
+Heinz Mack
+Helmuth Liesegang
+Hendrik Krawen
+Henry Ritter
+Hermann Fuechsel
+Hermann Ottomar Herzog
+Hermann Scherenberg
+Hermann Schmiechen
+Hilla Becher
+Horst Gläsker
+Horst Keining
+Hugo Crola
+Imi Knoebel
+Isa Genzken
+Jacob Ritsema
+Jårg Geismar
+Jems Robert Koko Bi
+Johan Fredrik Eckersberg
+Johannes Hüppi
+Johann Georg Meyer
+Johann Peter von Langer
+Johann Wilhelm Preyer
+Johann Wilhelm Schirmer
+John Whetton Ehninger
+Jörg Immendorff
+Jörg Sasse
+Josef Pallenberg
+Joseph Beuys
+Joseph Charles Cogels
+Joseph Fay
+Joseph Stanislaus Ostoja-Kotkowski
+Julian Klein von Diepold
+Karl Janssen
+Karl Kahl
+Katharina Fritsch
+Kjell Nupen
+Konrad Klapheck
+Kuno Gonschior
+Lars Hertervig
+Laurenz Berges
+Lewis Edward Herzog
+Lina von Perbandt
+Lorenz Clasen
+Lothar Hempel
+Ludger Gerdes
+Margret Rey
+Markus Lüpertz
+Martin Pfeifle
+Max Eduard Giese
+Meinrad Iten
+Michael Buthe
+Michael Reisch
+Michail Pirgelis
+Monika Baer
+Norbert Müller-Everling
+Odd Nerdrum
+Olof Jernberg
+Orlando Mohorović
+Oskar Freiwirth-Lützow
+Ottmar Hörl
+Otto Boyer
+Otto Heichert
+Otto Knille
+Otto Mengelberg
+Otto Piene
+Otto Reinhold Jacobi
+Paul Müller-Kaempff
+Peter Angermann
+Peter Janssen
+Peter Molitor
+Peter Philippi
+Philipp Franck
+Rainer Ganahl
+Rainer Maria Latzke
+Ralf Brück
+Ralf König
+Renata Jaworska
+Rissa
+Robert Cauer the Elder
+Robert Engels
+Rudolf Jordan
+Sigmar Polke
+Simone Nieweg
+Sonja Alhäuser
+Stefan Ettlinger
+Stefan Kürten
+Taco Scheltema
+Tatjana Doll
+Theobald von Oer
+Theodor Hosemann
+Thomas Demand
+Thomas Huber
+Thomas Ruff
+Thomas Theodor Heine
+Tina Juretzek
+Udo Dziersk
+Ulrich Leman
+Ulrike Arnold
+Ulrike Rosenbach
+Ursula Benser
+Ursula Reuter Christiansen
+Walter Ophey
+Werner Heuser
+Wilhelm Bernatzik
+Wilhelm Camphausen
+Wilhelm Degode
+William Hahn
+Willy Hamacher
+Willy Reetz
+Willy von Beckerath
+Wolfgang Binding
+Yoshitomo Nara
+Yury Kharchenko
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dutch_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dutch_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c209ea5bcce4d392d3d96f24cec9287b3a4b84c1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/dutch_romantic_painters.txt
@@ -0,0 +1,5 @@
+Carel Jacobus Behr
+Louis Meijer
+Wijnand Nuijen
+Ary Scheffer
+Salomon Verveer
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/english_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/english_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3f5bd638adb7e04ebe21570b77f743f05d0ac58c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/english_romantic_painters.txt
@@ -0,0 +1,22 @@
+Alfred East
+Arthur Elsley
+Charles Gough
+Edward Calvert
+Edward Villiers Rippingille
+Edwin Long
+Frederick Richard Lee
+George Dawe
+George Shalders
+James Baker Pyne
+James Johnson
+J. M. W. Turner
+John Constable
+John Lee
+John Martin
+John Robert Cozens
+Richard Parkes Bonington
+Samuel Palmer
+Thomas Lawrence
+William Blake
+William Lee Hankey
+William West
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/french_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/french_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..45fef38fa20e73bcf30eb53b1c3dbb1eee9e9e64
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/french_romantic_painters.txt
@@ -0,0 +1,28 @@
+Louis Boulanger
+Louis René Boulanger
+Alexandre Cabanel
+Madame Cavé
+Théodore Chassériau
+Léon Cogniet
+Alexandre-Marie Colin
+Alfred Dehodencq
+Eugène Delacroix
+Paul Delaroche
+Eugène Devéria
+Adèle Ferrand
+Théodore Géricault
+Anne-Louis Girodet de Roussy-Trioson
+Auguste-Barthélemy Glaize
+Joseph Latour
+Eugène de Malbos
+Charles-Raphaël Maréchal
+Auguste Migette
+Victor Nehlig
+Édouard Pingret
+Pierre-Paul Prud'hon
+Léon Riesener
+Guillaume-Joseph Roques
+Jean Rouppert
+Ary Scheffer
+Xavier Sigalon
+Joseph-Noël Sylvestre
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/german_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/german_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2865ab02783b2f3179dd560b6a934eb0b08a8741
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/german_romantic_painters.txt
@@ -0,0 +1,23 @@
+Alexander von Kotzebue
+Andreas Achenbach
+Bernhard Plockhorst
+Carl Joseph Begas
+Carl Julius von Leypold
+Carl Spitzweg
+Caspar David Friedrich
+Clemens Bewer
+Eberhard Georg Friedrich von Wächter
+Eduard Bendemann
+Franz Ittenbach
+Franz Pforr
+Franz Xaver Winterhalter
+Friedrich Lange
+Friedrich Wilhelm Schadow
+Gerhard von Kügelgen
+Heinrich Reinhold
+Johannes Veit
+Johann Friedrich Overbeck
+Konrad Eberhard
+Philipp Otto Runge
+__artists/European Art/neoclassical/romanticism/nazarene_painters__
+__artists/European Art/neoclassical/romanticism/dusseldorf_school__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hudson_river_school.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hudson_river_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b5731246e4eee6c639f274e294c98febcd17705f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hudson_river_school.txt
@@ -0,0 +1,63 @@
+Albert Bierstadt
+Albert Fitch Bellows
+Alexander Helwig Wyant
+Alfred Thompson Bricher
+Alvan Fisher
+Asher Brown Durand
+Charles Baker
+Charles Herbert Moore
+Daniel Charles Grose
+David Johnson
+Edmund Darch Lewis
+Eliza Pratt Greatorex
+Evelina Mount
+Ferdinand Richardt
+Francis Augustus Silva
+Frederic Edwin Church
+George Herbert McCord
+George Inness
+Harriet Cany Peale
+Hermann Fuechsel
+Hermann Ottomar Herzog
+Homer Dodge Martin
+James Augustus Suydam
+James McDougal Hart
+James Renwick Brevoort
+Jasper Francis Cropsey
+Jervis McEntee
+Jesse Talbot
+Johann Hermann Carmiencke
+John Dodgson Barrow
+John Frederick Kensett
+John William Casilear
+Julie Hart Beers
+Lockwood de Forest
+Martin Johnson Heade
+Mary Blood Mellen
+Mary Josephine Walters
+Paul Weber
+Ralph Albert Blakelock
+Ransome Gillett Holdridge
+Régis François Gignoux
+Robert Duncanson
+Robert G. L. Leonori
+Robert S. Duncanson
+Robert Walter Weir
+Samuel Colman
+Sanford Robinson Gifford
+Susie M. Barstow
+Thomas Cole
+Thomas Doughty
+Thomas Hill
+Thomas Moran
+Thomas Prichard Rossiter
+William Bliss Baker
+William Guy Wall
+William Hart
+William Louis Sonntag
+William Mason Brown
+William Moore Davis
+William Sidney Mount
+William Stanley Haseltine
+William Trost Richards
+Worthington Whittredge
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hungarian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hungarian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5760470403ea2b6ca64615a5ad2b418ede20bba2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/hungarian_romantic_painters.txt
@@ -0,0 +1,3 @@
+József Molnár
+Constantin Daniel Rosenthal
+Octavian Smigelschi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/irish_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/irish_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c47c4251a5c4f1117d933a5e153a0070dc948200
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/irish_romantic_painters.txt
@@ -0,0 +1,2 @@
+James Barry
+Francis Danby
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/italian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/italian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a3351fed4c605978f6e5c99e48dcd2a806a14179
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/italian_romantic_painters.txt
@@ -0,0 +1,10 @@
+Alfonso Simonetti
+Andrea Gastaldi
+Francesco Hayez
+Giovanni Servi
+Giuseppe Molteni
+Letterio Subba
+Pietro Aldi
+Scipione Vannutelli
+Tranquillo Cremona
+__artists/European Art/neoclassical/romanticism/purismo__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/luminism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/luminism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c6de204df43f49ad8a320b8510a176373802cd0c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/luminism.txt
@@ -0,0 +1,18 @@
+Albert Bierstadt
+Alfred Thompson Bricher
+April Gornik
+David Johnson
+Fitz Hugh Lane
+Frederic Edwin Church
+George Harvey
+James Augustus Suydam
+James Doolin
+Jasper Cropsey
+John F. Kensett
+John Frederick Kensett
+Martin Johnson Heade
+Raymond Dabb Yelland
+Robert Salmon
+Sanford Gifford
+Steven DaLuz
+Worthington Whittredge
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/nazarene_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/nazarene_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc20369c6883ed20104877673ed0ef6f82375b49
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/nazarene_painters.txt
@@ -0,0 +1,49 @@
+Amalie Bensinger
+Carl Eggers
+Carl Georg Christian Schumacher
+Carl Gottlieb Peschel
+Carl Joseph Begas
+Claudius Schraudolph the Elder
+Eberhard Georg Friedrich von Wächter
+Eduard Jakob von Steinle
+Eduard von Steinle
+Ernst Deger
+Eugene von Guerard
+Ferdinand Olivier
+Franz Ittenbach
+Franz Pforr
+Franz Theobald Horny
+Friedrich Lange
+Friedrich Olivier
+Friedrich Wilhelm Schadow
+Gebhard Flatz
+Giuseppe Hyzler
+Gustav Jäger
+Johann Anton Ramboux
+Johann David Passavant
+Johannes Veit
+Johann Friedrich Overbeck
+Johann Jakob Jung
+Johann Michael Wittmer
+Johann Scheffer von Leonhardshoff
+Johann von Schraudolph
+Josef Führich
+Josef von Hempel
+Joseph Anton Fischer
+Joseph Anton Settegast
+Joseph von Führich
+Jovan Isailović Jr.
+Julius Schnorr von Carolsfeld
+Karl Müller
+Karl von Blaas
+Konrad Eberhard
+Leopold Kupelwieser
+Ludwig Schnorr von Carolsfeld
+Ludwig Vogel
+Marie Ellenrieder
+Matthias Goebbels
+Matthias Schraudolph
+Peter von Cornelius
+Philipp Veit
+Theodor Rehbenitz
+Vincenzo Hyzler
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/norwegian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/norwegian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9bce1108361eabcc5f04b61251508d02747e88f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/norwegian_romantic_painters.txt
@@ -0,0 +1,4 @@
+Peder Balke
+Johan Christian Dahl
+Thomas Fearnley
+Hans Gude
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/polish_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/polish_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e2349912e4618d9b8e01f848e931dbca3c8883ab
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/polish_romantic_painters.txt
@@ -0,0 +1 @@
+Franciszek Ksawery Lampi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/portuguese_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/portuguese_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..060c2e6c1ef2a45ae6510e11598e111a4580eda3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/portuguese_romantic_painters.txt
@@ -0,0 +1,2 @@
+Miguel Ângelo Lupi
+Luís de Meneses, 2nd Viscount of Meneses
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/pre_raphaelite_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/pre_raphaelite_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..714a4f088fd5296a2cb14a82a452f175db10e5a3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/pre_raphaelite_painters.txt
@@ -0,0 +1,74 @@
+Alice Boyd
+Arthur Hughes
+Cave Thomas
+Charles Allston Collins
+Charles Edward Hallé
+Charles Herbert Moore
+Charles William Mitchell
+Daniel Alexander Williamson
+Daniel Maclise
+Dante Gabriel Rossetti
+Edward Arthur Fellowes Prynne
+Edward Burne-Jones
+Edward La Trobe Bateman
+Edward Robert Hughes
+Elihu Vedder
+Élisabeth Sonrel
+Elizabeth Siddal
+Emma Sandys
+Evelyn De Morgan
+Ford Madox Brown
+Frank Cadogan Cowper
+Frederick Sandys
+Frederick Smallfield
+Frederic Leighton
+Frederic Shields
+Frederic William Burton
+George Price Boyce
+Georgiana Burne-Jones
+Gustav Pope
+Henry Holiday
+Henry Meynell Rheam
+Henry Treffry Dunn
+Henry Wallis
+Isobel Lilian Gloag
+James Abbott McNeill Whistler
+James Campbell
+James Collinson
+Jane Benham Hay
+Joanna Mary Boyce
+John Brett
+John Collier
+John Duncan
+John Everett Millais
+John Jewell Penstone
+John Lee
+John Melhuish Strudwick
+John Mulcaster Carrick
+John Roddam Spencer Stanhope
+John William Waterhouse
+Kate Bunce
+Louisa Beresford
+Lucy Madox Brown
+Marian Collier
+Maria Zambaco
+Marie Spartali Stillman
+Mary Lizzie Macomber
+Michael Frederick Halliday
+Pauline, Lady Trevelyan
+Richard Burchett
+Robert Braithwaite Martineau
+Rosa Brett
+Simeon Solomon
+Sophie Gengembre Anderson
+Thomas Cooper Gotch
+Thomas Seddon
+Valentine Cameron Prinsep
+Walter Deverell
+William Davis
+William Gale
+William Hole
+William Holman Hunt
+William James Webbe
+William Lindsay Windus
+Wyke Bayliss
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/purismo.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/purismo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a433979e74d3ffd4f7a7b3d0e62a0208185048bb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/purismo.txt
@@ -0,0 +1,13 @@
+Alessandro Franchi
+Amos Cassioli
+Antonio Bianchini
+Antonio Ciseri
+Bartolomeo Pinelli
+Cesare Maccari
+Costantino Brumidi
+Friedrich Overbeck
+Giambattistia Gigola
+Giovanni De Min
+Luigi Mussini
+Pietro Tenerani
+Tommaso Minardi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/romanian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/romanian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a4693da096822d1ea308ee558eaf56718e1e9192
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/romanian_romantic_painters.txt
@@ -0,0 +1,4 @@
+Constantin Daniel Rosenthal
+Octavian Smigelschi
+Gheorghe Tattarescu
+Henric Trenk
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/russian_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/russian_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d50e547ce4a1f7d45f9dbede261f1df92885becc
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/russian_romantic_painters.txt
@@ -0,0 +1,8 @@
+Ivan Aivazovsky
+Karl Bryullov
+Orest Kiprensky
+Karl von Kügelgen
+Nikolai Vasilievich Kuzmin
+Ernst Lissner
+Vasily Tropinin
+
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/scottish_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/scottish_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2846739f996b6c71478ef052128a4c18255cfc8d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/scottish_romantic_painters.txt
@@ -0,0 +1 @@
+R. R. McIan
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/spanish_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/spanish_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7fa81105e3125ea2beb8874f22d6b379006dd1d9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/spanish_romantic_painters.txt
@@ -0,0 +1,9 @@
+Jorge Aguilar-Agon
+Antonio Brugada
+Antonio Cabral Bejarano
+Antonio María Esquivel
+Francisco Goya
+Asensio Julià
+Eugenio Lucas Velázquez
+Federico de Madrazo y Kuntz
+La maja vestida
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/swiss_romantic_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/swiss_romantic_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b1e44868025c69db2876166285f31c00e7f88b77
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism/swiss_romantic_painters.txt
@@ -0,0 +1 @@
+Henric Trenk
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism_to_modern_art.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism_to_modern_art.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6649fc83f19f48b6695dd1d0e97e003c9b281495
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/romanticism_to_modern_art.txt
@@ -0,0 +1,9 @@
+__artists/European Art/neoclassical/norwich_school__
+__artists/European Art/neoclassical/biedermeier__
+__artists/European Art/neoclassical/realism__
+__artists/European Art/neoclassical/realism__
+__artists/European Art/neoclassical/hague_school__
+__artists/European Art/neoclassical/american_barbizon_school__
+__artists/European Art/neoclassical/spanish_electicism__
+__artists/European Art/neoclassical/macchiaioli__
+__artists/European Art/neoclassical/pre_raphaelite_brotherhood__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/European Art/neoclassical/spanish_electicism.txt b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/spanish_electicism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b21420d8b159992854362aad71dcd7116c06d6a2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/neoclassical/spanish_electicism.txt
@@ -0,0 +1,4 @@
+Antonio Gisbert
+Cano de la Peña
+Francisco Pradilla Ortiz
+José Casado del Alisal
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/cusco_school.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/cusco_school.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eb5f9683c5bd9c9f055bd50539afa6eb031f35f7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/cusco_school.txt
@@ -0,0 +1,9 @@
+Ángel arcabucero
+Antonio Sinchi Roca Inka
+Basilio Santa Cruz Pumacallao
+Bernardo Bitti
+Diego Quispe Tito
+Luis de Riaño
+Marcos Zapata
+Master of Calamarca
+Palacio de San Carlos, Bogotá
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/dutch_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/dutch_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dd654da55c034c36eaa077f9da01fde82b485c52
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/dutch_mannerist_painters.txt
@@ -0,0 +1,8 @@
+Abraham Bloemaert
+Anthonie Blocklandt van Montfoort
+Cornelis van Haarlem
+Dirck Hendricksz
+Hendrick Goltzius
+Karel van Mander
+Marinus van Reymerswaele
+Pieter Bruegel the Elder
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/early_netherlandish_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/early_netherlandish_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3796b281e246f11700b023c72ce5e3da7b9b8905
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/early_netherlandish_painters.txt
@@ -0,0 +1,118 @@
+Adriaen Isenbrandt
+Adriaen van Overbeke
+Aelbrecht Bouts
+Aert van den Bossche
+Agnes van den Bossche
+Albert van Ouwater
+Ambrosius Benson
+André Beauneveu
+Antwerp Mannerism
+Barend Dircksz
+Barthélemy d'Eyck
+Colijn de Coter
+Cornelis Engebrechtsz.
+Dieric Bouts
+Dieric Bouts the Younger
+Dirck Barendsz
+Dirck Jacobsz.
+Geertgen tot Sint Jans
+Gerard David
+Hans Clemer
+Hans Memling
+Henri Bellechose
+Hieronymus Bosch
+Hubert van Eyck
+Hugo van der Goes
+Jacob Bellaert
+Jacob Cornelisz van Oostsanen
+Jacob van Laethem
+Jacob van Utrecht
+Jacques Coene
+Jacques Daret
+Jan Crans
+Jan de Beer
+Jan Mertens the Younger
+Jan Mostaert
+Jan Provoost
+Jan van Amstel
+Jan van Coninxloo
+Jan van der Asselt
+Jan van der Elburcht
+Jan van Dornicke
+Jan van Eeckele
+Jan van Eyck
+Jean Bondol
+Jean Clouet
+Jean de Looz
+Jean Hey
+Jean Malouel
+Joachim Patinir
+Joos de Beer
+Josse Lieferinxe
+Juan de Flandes
+Justus van Gent
+Lambert Lombard
+Lieven de Witte
+Lieven van Lathem
+Limbourg brothers
+Lucas Adriaens
+Luís Alimbrot
+Marcellus Coffermans
+Master of 1499
+Master of 1518
+Master of Affligem
+Master of Alkmaar
+Master of Anthony of Burgundy
+Master of Delft
+Master of Jannecke Bollengier
+Master of Margaret of York
+Master of Mary of Burgundy
+Master of Saint Giles
+Master of the 1540s
+Master of the Amsterdam Death of the Virgin
+Master of the André Virgin
+Master of the Antwerp Adoration
+Master of the Baroncelli Portraits
+Master of the Brandon Portrait
+Master of the Brunswick Diptych
+Master of the Dresden Prayerbook
+Master of the Embroidered Foliage
+Master of the Female Half-Lengths
+Master of the Figdor Deposition
+Master of the Holy Blood
+Master of the Jardin de vertueuse consolation
+Master of the Khanenko Adoration
+Master of the Legend of Saint Barbara
+Master of the Legend of Saint Catherine
+Master of the Legend of Saint Lucy
+Master of the Legend of Saint Ursula (Bruges)
+Master of the Legend of the Magdalen
+Master of the Lille Adoration
+Master of the Llangattock Epiphany
+Master of the Llangattock Hours
+Master of the Lübeck Bible
+Master of the Mansi Magdalen
+Master of the Morrison Triptych
+Master of the Plump-Cheeked Madonnas
+Master of the Prado Adoration of the Magi
+Master of the Prayer Books of around 1500
+Master of the Saint Bartholomew Altarpiece
+Master of the Tiburtine Sibyl
+Master of the Vienna Chroniques d'Angleterre
+Master of the View of Saint Gudula
+Master of the Von Groote Adoration
+Master of Zweder van Culemborg
+Masters of Dirc van Delf
+Melchior Broederlam
+Michael Sittow
+Petrus Christus
+Pierre Coustain
+Pieter Claeissens the Elder
+Pieter van Coninxloo
+Quentin Matsys
+Robert Campin
+Rogier van der Weyden
+Simon Marmion
+Van Eyck
+Vrancke van der Stockt
+Willem Vrelant
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/english_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/english_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..973952d0198832b44b4beeda0af7fb91aedf96fb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/english_mannerist_painters.txt
@@ -0,0 +1,4 @@
+Hans Eworth
+Bartolommeo Penni
+Luca Penni
+William Scrots
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/flemish_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/flemish_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35c2e5a882f267767d9a9bf54d5a080a8dfa326c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/flemish_mannerist_painters.txt
@@ -0,0 +1,26 @@
+Adam van Noort
+Ambroise Dubois
+Ambrosius Benson
+Bartholomeus Spranger
+Denis Calvaert
+Frans Floris
+Gillis van Coninxloo
+Hans Bol
+Hans Eworth
+Hendrick de Clerck
+Hendrick van den Broeck
+Isaak van den Blocke
+Jacob de Backer
+Jan Matsys
+Jan Sanders van Hemessen
+Joos de Momper
+Joos van Cleve
+Joris Hoefnagel
+Karel van Mander
+Maerten de Vos
+Otto van Veen
+Peter Candid
+Pieter Bruegel the Elder
+Pieter Coecke van Aelst
+Stradanus
+William Scrots
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/french_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/french_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..28f50463d7e7a2834b29e77811cbcb00bad31cfd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/french_mannerist_painters.txt
@@ -0,0 +1,9 @@
+Ambroise Dubois
+Antoine Caron
+Francesco Primaticcio
+François Quesnel
+Luca Penni
+Marc Duval
+Martin Fréminet
+Master of Flora
+Toussaint Dubreuil
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..685f41d82027241232d53dacfc28a8a46e225a8d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_mannerist_painters.txt
@@ -0,0 +1,4 @@
+Hans von Aachen
+Wendel Dietterlin
+Adam Elsheimer
+Hans Rottenhammer
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_renaissance.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_renaissance.txt
new file mode 100644
index 0000000000000000000000000000000000000000..365f7125ea2f089b45804104ec1d64478151fd1e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/german_renaissance.txt
@@ -0,0 +1,90 @@
+Absolon Stumme
+Albrecht Dürer
+Bartholomäus Zeitblom
+Bernhard Strigel
+Bernt Notke
+Berthold Landauer
+Caspar Isenmann
+Conrad Fyoll
+Conrad von Soest
+Derick Baegert
+Friedrich Herlin
+Fritz Herlen
+Gabriel Mälesskircher
+Georg Glockendon
+Giovanni d'Alemagna
+Hans Abel
+Hans Bornemann
+Hans Burgkmair
+Hans Döring
+Hans Hirtz
+Hans Holbein the Elder
+Hans Multscher
+Hans Pleydenwurff
+Hermen Rode
+Hinrik Bornemann
+Hinrik Funhof
+Jacob Acker
+Jakob Beinhart
+Jan Polack
+Jerg Ratgeb
+Johannes Stenrat
+Johann Koerbecke
+Johann von Soest (painter)
+Jörg Breu the Elder
+Jörg Stocker
+Jost Haller
+Konrad Witz
+Lucas Moser
+Ludwig Schongauer
+Mair von Landshut
+Martin Schaffner
+Martin Schongauer
+Master Bertram
+Master Francke
+Master of Kirchdrauf
+Master of Liesborn
+Master of Saint Veronica
+Master of the Aachen Altar
+Master of the Altarpiece of the Ten Commandments
+Master of the Bamberg Altar
+Master of the Berswordt Altar
+Master of the Bützow Altarpiece
+Master of the Darup Altarpiece
+Master of the Drapery Studies
+Master of the Fröndenberger Altarpiece
+Master of the Golden Altar
+Master of the Heisterbach Altarpiece
+Master of the Imhoff Altar
+Master of the Iserlohn Altarpiece
+Master of the Karlsruhe Passion
+Master of the Legend of Saint Bruno
+Master of the Life of the Virgin
+Master of the Lippborg Passion
+Master of the Malchin Altar
+Master of the Mornauer Portrait
+Master of the Ortenberg Altarpiece
+Master of the Pähl Altarpiece
+Master of the Pallant Altarpiece
+Master of the Regular Canons' Altarpiece
+Master of the Saint Augustine Altarpiece
+Master of the Saint Bartholomew Altarpiece
+Master of the Schöppingen Altarpiece
+Master of the Schotten Altarpiece
+Master of the Tennenbach Altar
+Master of the Tucher Altarpiece
+Master of the Wasservass Calvary
+Master of the Worcester Panel
+Master W. B.
+Matthias Grünewald
+Michael Wolgemut
+Paul Lautensack
+Roger de Piles'
+Rueland Frueauf the Younger
+Sebald Bopp
+Stefan Lochner
+Thoman Burgkmair
+Ulrich Apt the Elder
+Ulrich Füetrer
+Wilm Dedeke
+Wolfgang Katzheimer
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..866a1c4eb6e681b05e7326807f389b2f2c123c69
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_mannerist_painters.txt
@@ -0,0 +1,157 @@
+Agostino Tassi
+Alessandro Allori
+Alessandro Ardente
+Alfonso Aldiverti
+Andrea Boscoli
+Andrea Schiavone
+Andrea Semini
+Antonino Spatafora
+Antonio Badile
+Antonio Bernieri
+Antonio Semini
+Antonio Vassilacchi
+Antonio Viviani
+Arcangelo Salimbeni
+Ascensidonio Spacca
+Baldassare Aloisi
+Bartolommeo Penni
+Benedetto Pagni
+Benvenuto Tisi
+Bernardino Campi
+Bernardino Cesari
+Bernardino India
+Bernardo Bitti
+Biagio Pupini
+Bonifazio Veronese
+Bronzino
+Camillo Ballini
+Camillo Procaccini
+Carlo Caliari
+Carlo Portelli
+Carlo Urbino
+Cesare Arbasia
+Cesare Aretusi
+Cesare Nebbia
+Cigoli
+Cristofano Allori
+Cristofano Gherardi
+Cristoforo Agosta
+Cristoforo Ambrogini
+Cristoforo Casolani
+Cristoforo Roncalli
+Daniele Crespi
+Decio Termisani
+Denis Calvaert
+Domenico Beccafumi
+Domenico Riccio
+Domenico Tintoretto
+Ercole dell'Abate
+Fabrizio Santafede
+Federico Barocci
+Federico Zuccari
+Felice Damiani
+Felice Riccio
+Fermo Guisoni
+Francesco Bacchiacca
+Francesco Bassano the Younger
+Francesco Brenti
+Francesco Brina
+Francesco Cavazzoni
+Francesco Imparato
+Francesco Menzocchi
+Francesco Primaticcio
+Francesco Ragusa
+Francesco Torbido
+Francesco Xanto Avelli
+Giacomo Alboresi
+Giacomo Barucco
+Giacomo Rocca
+Gian Paolo Lomazzo
+Giorgio Picchi
+Giorgio Vasari
+Giovanni Antonio di Amato the younger
+Giovanni Baglione
+Giovanni Balducci
+Giovanni Battista Castello
+Giovanni Battista Crespi
+Giovanni Battista da Ponte
+Giovanni Battista Naldini
+Giovanni Battista Ricci
+Giovanni Battista Trotti
+Giovanni Biliverti
+Giovanni Bizzelli
+Giovanni Bonagrazia
+Giovanni de' Vecchi
+Giovanni Giacomo Pandolfi
+Giovanni Maria Butteri
+Giovanni Pietro de Pomis
+Giovita Brescianino
+Girolamo da Ponte
+Girolamo Genga
+Girolamo Imparato
+Girolamo Macchietti
+Girolamo Siciolante da Sermoneta
+Giuliano Bugiardini
+Giulio Bruni
+Giulio Romano
+Giuseppe Arcimboldo
+Giuseppe Bramieri
+Giuseppe Cesari
+Giuseppe Porta
+Giuseppe Salerno
+Giuseppe Valeriano
+Gregorio Pagani
+Guglielmo Caccia
+Il Sodoma
+Ippolito Andreasi
+Ippolito Borghese
+Jacopo Bassano
+Jacopo Bertoia
+Jacopo Borbone
+Jacopo da Empoli
+Jacopo Zucchi
+Lattanzio Gambara
+Lazzaro Tavarone
+Leandro Bassano
+Lelio Orsi
+Livio Agresti
+Lorenzo Sabbatini
+Luca Cambiaso
+Luca Penni
+Lucia Anguissola
+Ludovico Buti
+Ludovico Carracci
+Luzio Dolci
+Marcello Venusti
+Marco Pino
+Matteo Balducci
+Michelangelo Anselmi
+Michele Tosini
+Mirabello Cavalori
+Niccolò Circignani
+Niccolò dell'Abbate
+Orazio Samacchini
+Ottavio Semini
+Palma il Giovane
+Panfilo Nuvolone
+Paolo Camillo Landriani
+Paolo Farinati
+Pier Francesco Mazzucchelli
+Pietro Faccini
+Pietro Negroni
+Pirro Ligorio
+Pontormo
+Prospero Fontana
+Raffaellino da Reggio
+Raffaellino del Colle
+Rosso Fiorentino
+Scarsellino
+Scipione Pulzone
+Simone Peterzano
+Sofonisba Anguissola
+Taddeo Zuccari
+Teodoro Ghisi
+Tintoretto
+Vespasiano Strada
+Vincenzo Campi
+Vincenzo La Barbera
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance.txt
new file mode 100644
index 0000000000000000000000000000000000000000..53815034a2745591969dcb8c80b5d65bb6cee7e9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance.txt
@@ -0,0 +1,2 @@
+__artists/European Art/renaissance/italian_renaissance_painters__
+__artists/European Art/renaissance/italian_renaissance_sculptors__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cf72db5e094e7d0e08e05689d4172bb3e5580e9e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_painters.txt
@@ -0,0 +1,199 @@
+Agostino Cottolengo
+Alessandro Alberti
+Alessandro Bernabei
+Alessandro Casolano
+Alessandro Mazzola
+Alesso Baldovinetti
+Alesso di Benozzo
+Andrea Busati
+Andrea del Brescianino
+Andrea del Castagno
+Andrea di Aloigi
+Andrea di Bartolo
+Anselmo Canera
+Ansuino da Forlì
+Antonello Crescenzio
+Antonello da Messina
+Antonio Aleotti
+Antonio Beduschi
+Antonio Boselli
+Antonio Bruno
+Antonio Capulongo
+Antonio Circignani
+Antonio Crescenzio
+Antonio da Faenza
+Antonio Foler
+Apollonio di Giovanni di Tommaso
+Aurelio Buso
+Baldassare Carrari
+Baldassare d'Anna
+Baldassarre di Biagio
+Bartolomeo Bonascia
+Bartolomeo Caporali
+Bartolomeo di Cassino
+Bartolomeo di Giovanni
+Battista Dossi
+Benedetto Bonfigli
+Benedetto Caliari
+Benedetto Rusconi
+Bernardino Brozzi
+Bernardino Butinone
+Bernardino de' Conti
+Bernardino Ferrari
+Biagio Betti
+Biagio d'Antonio
+Boccaccio Boccaccino
+Bonifacio Bembo
+Buonamico Buffalmacco
+Camillo Capelli
+Camillo Filippi
+Carlo Crivelli
+Cennino Cennini
+Cesare Bernazano
+Cosimo Daddi
+Cristoforo Ciocca
+Cristoforo Diana
+Denis Calvaert
+Domenico Alfani
+Domenico Balestrieri
+Domenico Beccafumi
+Domenico Beceri
+Domenico Caprioli
+Domenico del Barbieri
+Domenico Falcini
+Domenico Mancini
+Domenico Veneziano
+Domiziano Domiziani
+Donato da Formello
+Dono Doni
+Dosso Dossi
+Durante Alberti
+Elena Anguissola
+Filippo Bellini
+Filippo di Antonio Filippelli
+Floriano Ferramola
+Forlivese school of art
+Fra Bartolomeo
+Fra Diamante
+Francesco Bacchiacca
+Francesco Beccaruzzi
+Francesco Bianchi
+Francesco Bonsignori
+Francesco Curradi
+Francesco da Cotignola
+Francesco del Cossa
+Francesco Dominici
+Gabriele Caliari
+Gandolfino d'Asti
+Gentile Bellini
+Giacomo Coltrini
+Gianetto Cordegliaghi
+Gian Gheramo Dalle Catene
+Gioseffo Danedi
+Giovanni Agostino da Lodi
+Giovanni Alberti
+Giovanni Ambrogio Bevilacqua
+Giovanni Angelo Criscuolo
+Giovanni Angelo d'Antonio
+Giovanni Antonio Bazzi
+Giovanni Antonio Boltraffio
+Giovanni Battista Averara
+Giovanni Battista Bertani
+Giovanni Battista Caporali
+Giovanni Battista Cremonini
+Giovanni Battista Cungi
+Giovanni Bellini
+Giovanni Buonconsiglio
+Giovanni Cariani
+Giovanni Cianfanini
+Giovanni Contarini
+Giovanni Filippo Criscuolo
+Giovanni Francesco Caroto
+Giovanni Maria Baldassini
+Giovanni Maria Falconetto
+Giovanni Paolo Cavagna
+Giovanni Stefano Danedi
+Girolamo Bonsignori
+Girolamo Buratti
+Girolamo Colleoni
+Girolamo Comi
+Girolamo Danti
+Giuliano Bugiardini
+Giulio Angolo del Moro
+Giulio Caporali
+Giustino Episcopio
+Ippolito Costa
+Jacopo Bellini
+Jacopo Bertucci
+Jacopo Coppi
+Lavinia Fontana
+Lazzaro Bastiani
+Lazzaro Calvi
+Leonardo Corona
+Leonardo di Bisuccio
+Leon Battista Alberti
+Lorenzo Canozzi
+Lorenzo Costa
+Lorenzo Costa the Younger
+Lorenzo d'Alessandro
+Luca Cattapane
+Ludovico Brea
+Luigi Benfatto
+Luigi Carboni
+Luigi Donato
+Marcello Figolino
+Marcello Fogolino
+Marco Angolo del Moro
+Marco Bigio
+Marco Dente
+Mariangiola Criscuolo
+Mariotto Albertinelli
+Maturino da Firenze
+Melozzo da Forlì
+Michelangelo Aliprandi
+Michele Alberti
+Niccolò Appiani
+Nicola Filotesio
+Odoardo Fialetti
+Organtino di Mariano
+Orlando Flacco
+Orsino Carota
+Paolo Caylina the Younger
+Paolo Moranda Cavazzola
+Pellegrino Aretusi
+Pier Angelo Basili
+Pier Antonio Bernabei
+Piero di Cosimo
+Pietro Damini
+Pietro di Bagnara
+Pietro Facchetti
+Pietro Paolo Agabito
+Pietro Paolo Baldinacci
+Polidoro da Caravaggio
+Pompeo Cesura
+Pompeo Cocchi
+Raffaello Botticini
+Raffaello del Brescianino
+Raimondo Epifanio
+Salvatore Fontana
+Sandro Botticelli
+Sebastiano Florigerio
+Sigismondo Benini
+Sigismondo Foschi
+Silvestro de Buoni
+Sofonisba Anguissola
+Sollecito Arisi
+Spinello Aretino
+Stefano Falzagalloni
+Tommaso Barnabei
+Tommaso de Aleni
+Vincenzo Ansaloni
+Vincenzo degli Azani
+Vincenzo Foppa
+Vitale da Bologna
+Vittore Belliniano
+Vittore Carpaccio
+Zanetto Bugatto
+__artists/European Art/renaissance/quattrocento_painters__
+__artists/European Art/renaissance/italian_mannerist_painters__
+{Raffaello Santini|Raphael}
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_sculptors.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_sculptors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..12dd2453836dfbf28fcb1c6e123b10e8e219870d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/italian_renaissance_sculptors.txt
@@ -0,0 +1,109 @@
+Adriano Fiorentino
+Agnolo Aniello Fiore
+Agostino di Duccio
+Alessandro Leopardi
+Andrea Bregno
+Andrea Ciccione
+Andrea della Robbia
+Andrea del Verrocchio
+Andrea Ferrucci
+Andrea Riccio
+Andrea Sansovino
+Angelo Aniello Fiore
+Anichini family
+Antonello Gagini
+Antonio Bamboccio
+Antonio del Pollaiuolo
+Antonio Federighi
+Antonio Lombardo
+Antonio Mangiacavalli
+Antonio Rizzo
+Antonio Rossellino
+Baccio Bandinelli
+Baccio d'Agnolo
+Baccio da Montelupo
+Bartolomeo Bellano
+Benedetto Buglioni
+Benedetto da Maiano
+Benedetto da Rovezzano
+Bernardino delle Croci
+Bernardo Rossellino
+Bertoldo di Giovanni
+Cinquecento
+Cristoforo di Geremia
+Cristoforo Foppa
+Cristoforo Mantegazza
+Cristoforo Solari
+Dello di Niccolò Delli
+Desiderio da Settignano
+Domenico Fancelli
+Domenico Gagini
+Donatello
+Filippo Brunelleschi
+Fra Giovanni da Verona
+Francesco da Sangallo
+Francesco di Valdambrino
+Francesco Laurana
+Francesco Paciotto
+Francesco Solari
+Gasparo Cairano
+Gaudenzio Ferrari
+Gian Giacomo Dolcebuono
+Giovanni Alberghetti
+Giovanni Antonio Amadeo
+Giovanni Battagio
+Giovanni Boscoli
+Giovanni Cristoforo Romano
+Giovanni Dalmata
+Giovanni da Maiano
+Giovanni della Robbia
+Giovanni di Stefano (sculptor)
+Giovanni Francesco Rustici
+Giovanni Maria Mosca
+Girolamo della Robbia
+Giuliano da Maiano
+Giuliano da Sangallo
+Guido Mazzoni (sculptor)
+Guiniforte Solari
+Isabella Discalzi Mazzoni
+Jacopo da Trezzo
+Jacopo della Quercia
+Jacopo Sansovino
+Leonardo da Vinci
+Leon Battista Alberti
+Lorenzetto
+Lorenzo di Credi
+Lorenzo Ghiberti
+Luca della Robbia
+Master of the Barbarigo Reliefs
+Master of the Marble Madonnas
+Matteo Civitali
+Michelangelo
+Michelozzo
+Mino da Fiesole
+Mino del Reame
+Nanni di Banco
+Donatello
+Niccolò dell'Arca
+Niccolò di Giovanni Fiorentino
+Nicolao Civitali
+Pagno di Lapo Portigiani
+Paolo Romano
+Pier Jacopo Alari Bonacolsi
+Pietro Antonio Solari
+Pietro Lombardo
+Pietro Paolo Agabito
+Pietro Torrigiano
+Quattrocento
+Silvestro dell'Aquila
+Simone di Nanni Ferrucci
+Simone Ferrucci
+Simone Ghini
+Simone Moschino
+Tamagnino
+Tomasso Amici
+Tommaso Malvito
+Trecento
+Tullio Lombardo
+Vincenzo Onofri
+Vittore Gambello
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/mannerism.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/mannerism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f5c8530832e65c3d4a158dcddaf52c3b8d84b55d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/mannerism.txt
@@ -0,0 +1,9 @@
+__artists/European Art/renaissance/italian_mannerist_painters__
+__artists/European Art/renaissance/dutch_mannerist_painters__
+__artists/European Art/renaissance/perivian_mannerist_painters__
+__artists/European Art/renaissance/english_mannerist_painters__
+__artists/European Art/renaissance/flemish_mannerist_painters__
+__artists/European Art/renaissance/french_mannerist_painters__
+__artists/European Art/renaissance/german_mannerist_painters__
+__artists/European Art/renaissance/polish_mannerist_painters__
+__artists/European Art/renaissance/cusco_school__
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/peruvian_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/peruvian_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b502d90dab1acf8cc3c1bb7bb41d12f4c445d020
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/peruvian_mannerist_painters.txt
@@ -0,0 +1,8 @@
+Angelino Medoro
+Antonio Sinchi Roca Inka
+Basilio Santa Cruz Pumacallao
+Bernardo Bitti
+Diego Quispe Tito
+Leonardo Jaramillo
+Marcos Zapata
+Matteo Pérez
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/polish_mannerist_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/polish_mannerist_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..aaa5dc6e2b3c2c378568718a693e43236f22578b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/polish_mannerist_painters.txt
@@ -0,0 +1,2 @@
+Isaak van den Blocke
+Martin Kober
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/quattrocento_painters.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/quattrocento_painters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a0276d05f26c76ae571b7993c81832814c693987
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/quattrocento_painters.txt
@@ -0,0 +1,91 @@
+Alesso Baldovinetti
+Aliguccio Ciccarelli
+Alvise Vivarini
+Andrea del Castagno
+Andrea Mantegna
+Angelo Puccinelli
+Antonello da Messina
+Antonio Alberti
+Antonio da Fabriano
+Antonio del Massaro
+Antonio del Pollaiuolo
+Baldassare Estense
+Bartolomeo Caylina
+Bartolomeo di Tommaso
+Bartolomeo Vivarini
+Benedetto Bonfigli
+Benedetto da Fiesole
+Benozzo Gozzoli
+Bittino da Faenza
+Bonifacio Bembo
+Bono da Ferrara
+Buono de' Buoni
+Carlo Crivelli
+Cosimo Rosselli
+Cosmè Tura
+Cristoforo Moretti
+Dello di Niccolò Delli
+Domenico di Cecco
+Domenico di Michelino
+Domenico Ghirlandaio
+Domenico Veneziano
+Felice Scotto
+Filippo di Matteo Torelli
+Filippo Lippi
+Fra Angelico
+Fra Carnevale
+Fra Diamante
+Francesco Botticini
+Francesco dai Libri
+Francesco d'Antonio
+Francesco del Cossa
+Francesco di Giorgio Martini
+Francesco Pesellino
+Galasso Galassi
+Gentile Bellini
+Gherardo Starnina
+Giovanni Bellini
+Giovanni Boccati
+Giovanni da Oriolo
+Giovanni di Paolo
+Giovanni di Piamonte
+Giovanni Francesco Toscani
+Girolamo Bonsignori
+Girolamo di Benvenuto
+Gregorio di Cecco
+Ippolito del Donzello
+Jacobello del Fiore
+Jacopo Bedi
+Jacopo Bellini
+Jacopo da Montagnana
+Jacopo d'Avanzi
+Jacopo Zabolino
+Lippo d'Andrea
+Lorenzo da Viterbo
+Lorenzo di Niccolò
+Marco Zoppo
+Mariotto di Nardo
+Masaccio
+Matteo di Giovanni
+Michele Ciampanti
+Neri di Bicci
+Niccolò Antonio Colantonio
+Ottaviano Nelli
+Paolo Schiavo
+Paolo Uccello
+Pier Antonio Mezzastris
+Pier Francesco Fiorentino
+Piero della Francesca
+Piero del Pollaiuolo
+Pietro Perugino
+Prospero da Piazzola
+Rocco Zoppo
+Rossello di Jacopo Franchi
+Sandro Botticelli
+Sano di Pietro
+Silvestro de Buoni
+Taddeo Crivelli
+Troso da Monza
+Tuccio d'Andria
+Vincenzo Foppa
+Zanobi Strozzi
diff --git a/ex/dynamic-prompts/collections/artists/European Art/renaissance/renaissance.txt b/ex/dynamic-prompts/collections/artists/European Art/renaissance/renaissance.txt
new file mode 100644
index 0000000000000000000000000000000000000000..756e43fdc64025667fe0d2a6bd1da77b73ff974f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/European Art/renaissance/renaissance.txt
@@ -0,0 +1,3 @@
+__artists/European Art/renaissance/italian_renaissance__
+__artists/European Art/renaissance/early_netherlandish_painters__
+__artists/European Art/renaissance/german_renaissance__
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/heisei_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/heisei_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d06a2fd3f4300cb6d21437253d8c2f0b1e97b248
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/heisei_era.txt
@@ -0,0 +1,4 @@
+Matsui Fuyuko
+Nishida Shun'ei
+Gotō Jin
+Noguchi Tetsuya
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/meiji_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/meiji_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eddca469536e8d91a939ff6b0945d99a3b70c17f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/meiji_era.txt
@@ -0,0 +1,11 @@
+Hishida Shunsō
+Kawai Gyokudō
+Maeda Seison
+Hirata Shōdō
+Otake Chikuha
+Shimomura Kanzan
+Takeuchi Seihō
+Tomioka Tessai
+Uemura Shōen
+Yasuda Yukihiko
+Yokoyama Taikan
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/nihonga.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/nihonga.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b64f6a9ea63edf4b8ac6aa3a0b032ce63be8f3ea
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/nihonga.txt
@@ -0,0 +1,4 @@
+__artists/Japanese Art/nihonga/meiji_era__
+__artists/Japanese Art/nihonga/taisho_era__
+__artists/Japanese Art/nihonga/showa_era__
+__artists/Japanese Art/nihonga/heisei_era__
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/showa_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/showa_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a85ae2bd4f530283bb001dc24e43b670d5740529
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/showa_era.txt
@@ -0,0 +1,22 @@
+Fuku Akino
+Dōmoto Inshō
+Higashiyama Kaii
+Hirayama Ikuo
+Fumiko Hori
+Kataoka Tamako
+Katō Eizō
+Katō Tōichi
+Kitazawa Rakuten
+Koizumi Junsaku
+Kobayashi Kokei
+Katayama Bokuyō
+Gakuryō Nakamura
+Ogura Yuki
+Okuda Gensō
+Okumura Togyū
+Sugiyama Yasushi
+Tanaka Isson
+Uchida Aguri
+Yamaguchi Kayō
+Tomohide Dote
+Reiji Hiramatsu
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/taisho_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/taisho_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..09053a3a2172149bd0e7da963a679a6e01589a73
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/nihonga/taisho_era.txt
@@ -0,0 +1,7 @@
+Hayami Gyoshū
+Itō Shinsui
+Kaburaki Kiyokata
+Kawabata Ryūshi
+Murakami Kagaku
+Takehisa Yumeji
+Tsuchida Bakusen
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/ukiyoe.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/ukiyoe.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c7f81e14f97a20b4163d8e9bdb1fbb787be611b4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/ukiyoe.txt
@@ -0,0 +1,105 @@
+Adachi Ginkō
+Bertha Lum
+Bunchō
+Chōkōsai Eishō
+Eiichi Kotozuka
+Eishi
+Eishōsai Chōki
+Furuyama Moromasa
+Gatōken Shunshi
+Gigadō Ashiyuki
+Gihachiro Okuyama
+Hanabusa Itchō
+Harukawa Eizan
+Hasegawa Chikuyō
+Hirosada II
+Hiroshige
+Hiroshige II
+Hiroshige III
+Hiroshi Yoshida
+Hishikawa Moronobu
+Hokkei
+Ishikawa Toyonobu
+Iwasa Matabei
+Kabukidō Enkyō
+Kaigetsudō Ando
+Kanbun Master
+Kanō Hideyori
+Katsukawa Shunchō
+Katsukawa Shun'ei
+Katsukawa Shunkō I
+Katsukawa Shunshō
+Katsushika Ōi
+Kawamata Tsunemasa
+Kawamata Tsuneyuki
+Kawanabe Kyōsai
+Keisai Eisen
+Kikukawa Eizan
+Kitao Shigemasa
+Kobayashi Eitaku
+Kobayashi Kiyochika
+Kōgyo Tsukioka
+Konishi Hirosada
+Koryūsai
+Kunisada
+Kuniyasu
+Miyagawa Chōki
+Miyagawa Chōshun
+Miyagawa Isshō
+Natori Shunsen
+Nishikawa Sukenobu
+Nishimura Shigenaga
+Ogata Gekkō
+Okumura Masanobu
+Okumura Toshinobu
+Ōoka Shunboku
+Roy Ragle
+Ryūkōsai Jokei
+Ryusai Shigeharu
+Sadahide
+Santō Kyōden
+Sawa Sekkyō
+Sharaku
+Shiba Kōkan
+Shunbaisai Hokuei
+Shunkōsai Hokushū
+Shunman
+Shunshosai Hokucho
+Sugimura Jihei
+Suzuki Harunobu
+Torii Kiyohiro
+Torii Kiyomasu
+Torii Kiyomasu II
+Torii Kiyomitsu
+Torii Kiyomoto
+Torii Kiyonaga
+Torii Kiyonobu I
+Torii Kiyonobu II
+Torii Kiyotsune
+Toriyama Sekien
+Toshihide Migita
+Toyohara Kunichika
+Toyohiro
+Tsukimaro
+Tsukioka Settei
+Tsukioka Yoshitoshi
+Urakusai Nagahide
+Utagawa Kunimasa
+Utagawa Kunimasu
+Utagawa Kunisada II
+Utagawa Kunisada III
+Utagawa Kuniyoshi
+Utagawa Sadafusa
+Utagawa Shigenobu
+Utagawa Toyoharu
+Utagawa Toyokuni
+Utagawa Toyokuni II
+Utagawa Yoshiiku
+Utagawa Yoshitora
+Utamaro
+Yamamoto Shōun
+Yanagawa Nobusada
+Yanagawa Shigenobu
+Yanagawa Yukinobu
+Yashima Gakutei
+Yoshida Hanbei
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/meiji_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/meiji_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..81fb7995a4b8e45f7f6fe96351fee1c5f92f6ac4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/meiji_era.txt
@@ -0,0 +1,7 @@
+Asai Chū
+Fujishima Takeji
+Kawamura Kiyoo
+Kenkichi Sugimoto
+Kuroda Seiki
+Takahashi Yuichi
+Yamamoto Hōsui
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/taisho_era.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/taisho_era.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9b6829cd6bb4e51b839d90312bb756b24f454623
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/taisho_era.txt
@@ -0,0 +1,2 @@
+Kuwashige Giichi
+Ryūsei Kishida
diff --git a/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/yoga.txt b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/yoga.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8acfc291b78496310a9d64ecbdf697148b12129a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Japanese Art/yoga/yoga.txt
@@ -0,0 +1,2 @@
+__artists/Japanese Art/yoga/meiji_era__
+__artists/Japanese Art/yoga/taisho_era__
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/albania.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/albania.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5a85eb4c4412c593864330618e44b52b6b1db971
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/albania.txt
@@ -0,0 +1,15 @@
+Jani Zengo
+Kristo Sulidhi
+Kolë Idromeno
+Mati Kodheli
+Kel Marubi
+Gegë Marubi
+Refik Veseli
+Rifo Dobra
+Burim Myftiu
+Fadil Berisha
+Bajazid Doda
+Mimoza Veliu
+Gjon Mili
+George Tames
+Emin Kadi
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/algeria.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/algeria.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2e2da5edd044831b49f48f8f3a9419bbe6b1e13e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/algeria.txt
@@ -0,0 +1 @@
+Hocine Zaourar
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/argentina.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/argentina.txt
new file mode 100644
index 0000000000000000000000000000000000000000..67d9ccc832c24f4edd7cf9adee4ece269b731aee
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/argentina.txt
@@ -0,0 +1,24 @@
+Gustavo Aguerre
+Horacio Coppola
+Sara Facio
+Esteban Gonnet
+Annemarie Heinrich
+Alejandro Kuropatwa
+Adriana Lestido
+Grete Stern
+Nora Aslan
+Delfina Blaquier
+Alicia D'Amico
+Sara Facio
+Annemarie Heinrich
+Gaby Herbstein
+Adriana Lestido
+Matilde Marín
+Ana Portnoy
+Constanza Portnoy
+Romina Ressia
+Grete Stern
+Susana Thénon
+Luciana Val
+Agustina Vivero
+Helen Zout
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/armenia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/armenia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5f241ae3f3eaddcf58d101d29648917fbac01e20
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/armenia.txt
@@ -0,0 +1,7 @@
+Ida Kar
+Ohannes Kurkdjian
+Gabriel Lekegian
+Jean Pascal Sébah
+Pascal Sébah
+Van Leo
+Samvel Sevada
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/australia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/australia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c29d240bc7104612156deeba78761e0fac6e8a80
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/australia.txt
@@ -0,0 +1,120 @@
+Adam Ferguson
+Alex Cearns
+Alexia Sinclair
+Alice Mills
+Andrew Rovenko
+Andrew Stark
+Anne Ferran
+Anne Geddes
+Anne Zahalka
+Ashley Gilbertson
+Barbara McGrady
+Barcroft Capel Boake
+Barry Kay
+Beverley Clifford
+Bill Gekas
+Bill Henson
+Brenda L Croft
+Bronwyn Kidd
+Carol Jerrems
+Chantal Dunbar
+Charles Kerry
+Charles Page
+Charles Woolley
+Cillín Perera
+C. Moore Hardy
+Damien Parer
+Daniel Berehulak
+Daniel Marquis
+Darryn Lyons
+David Adams
+Destiny Deacon
+Elsie Rosaline Masson
+Emily Florence Cazneau
+Ernest Gustav Brandon-Cremer
+Euphemia Eleanor Baker
+Francis Reiss
+Frank Hurley
+Frederick Frith
+Graham Howe
+Hans Hasenpflug
+Harold Cazneaux
+Harriet Brims
+Heather George
+Hedda Morrison
+H. H. Tilbrook
+Ian Wallace
+Inger Vandyke
+Izzy Orloff
+Jack Atley
+Jacky Redgate
+Jacqueline Mitelman
+Jane Burton
+Jarrod Castaing
+Jeff Carter
+Jim Fenwick
+John Englart
+John Everingham
+John Raymond Garrett
+Joyce Evans
+June Newton
+Juno Gemes
+Kate Breakey
+Kate Geraghty
+Katrin Koenning
+Ken Duncan
+Leah King-Smith
+Leonie Reisberg
+Lillian Dean
+Lillian Louisa Pitts
+Liz Ham
+Louisa Anne Meredith
+Louisa Elizabeth How
+Lyn Hancock
+Maggie Diaz
+Margaret Michaelis-Sachs
+Mark Gray
+Max Dupain
+May and Mina Moore
+Merris Hillard
+Mireille Eid
+Narelle Autio
+Neil Davis
+Neville Coleman
+Odette England
+Olegas Truchanas
+Olive Cotton
+Pamela Lofts
+Pat Brassington
+Patrick Brown
+Paul B. Kidd
+Pegg Clarke
+Peter Bainbridge
+Peter Dombrovskis
+Peter Lik
+Peter Milne
+Polixeni Papapetrou
+Polly Borland
+Ponch Hawkes
+Rebecca Shanahan
+Robert Rosen
+Robyn Stacey
+Rose Simmonds
+Rozalind Drummond
+Ruby Spowart
+Russell James
+Ruth Hollick
+Ruth Maddison
+Sam Hood
+Sandy Edwards
+Sarah Bahbah
+Sarah Chinnery
+Steven Siewert
+Sue Ford
+Suzanna Clarke
+Tracey Moffatt
+Tracey Shelton
+Trent Parke
+Virginia Coventry
+Willie Phua
+Wolfgang Sievers
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/austria.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/austria.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9e505c3a3dff0f806efeab630b678d4cc99bb10b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/austria.txt
@@ -0,0 +1,31 @@
+Andreas Bitesnich
+Anna Koppitz
+Baron Raimund von Stillfried
+Birgit Jürgenssen
+Claire Beck
+David Uzochukwu
+Dora Kallmus
+Ernst Haas
+Friedl Kubelka
+Gerti Deutsch
+Gottfried Helnwein
+Gustl French
+Hanna Putz
+Hella Katz
+Herbert Bayer
+Inge Morath
+Josef Hoflehner
+Julia Spicker
+Karin Mack
+Lisette Model
+Lotte Meitner-Graf
+Lukas Beck
+Manfred Baumann
+Margaret Michaelis-Sachs
+Margherita Spiluttini
+Marina Faust
+Stillfried & Andersen
+Susanne Stemmer
+Trude Fleischmann
+Wilhelm J. Burger
+Willy Puchner
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/azerbijan.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/azerbijan.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fa3cbac33afe2da4ec1af5c3485a91628ec55211
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/azerbijan.txt
@@ -0,0 +1 @@
+Rena Effendi
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/bangladesh.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/bangladesh.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6d659155a3cece7d3459c90ece66b0c7be52d4f7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/bangladesh.txt
@@ -0,0 +1,23 @@
+Aftab Ahmed
+Gazi Nafis Ahmed
+Naib Uddin Ahmed
+GMB Akash
+Taslima Akhter
+Shahidul Alam[1]
+K M Asad
+Manzoor Alam Beg
+Andrew Biraj
+Hasan Saifuddin Chandan
+Amanul Haque
+Mohammad Rakibul Hasan
+Anwar Hossain
+Mohammad Ponir Hossain
+Sayeeda Khanam
+Nasir Ali Mamun
+Sarker Protick
+Probal Rashid
+Jashim Salam
+Bijon Sarkar
+Rashid Talukder
+Munem Wasif
+Munir Uz Zaman
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/belgium.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/belgium.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b83d5026508162d99f34fabeb933db1aa52e1a37
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/belgium.txt
@@ -0,0 +1,15 @@
+Anthony Asael
+Jean-Marie Bottequin
+Isidore Jacques Eggermont
+Martine Franck
+Harry Gruyaert
+Victor Guidalevitch
+Carl de Keyzer
+Eugene Lemaire
+Marcel Mariën
+Filip Naudts
+Herman van den Boom
+Germaine Van Parys
+Max Pinckers
+Wim Tellier
+Stephan Vanfleteren
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/benin.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/benin.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9b87f89dd182adb3d27d0bba629cdf46aeef29ad
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/benin.txt
@@ -0,0 +1 @@
+Mayeul Akpovi
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/brazil.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/brazil.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5dc4236c4dad56001dd62bccf139837b7c0d5027
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/brazil.txt
@@ -0,0 +1,9 @@
+Miguel Rio Branco
+Marc Ferrez
+Vik Muniz
+Arthur Omar
+Sebastião Salgado
+Sérgio Valle Duarte
+Cássio Vasconcellos
+Guy Veloso
+Gustavo Chams
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/cambodia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/cambodia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4a9fe47d2ada9b60a9de7a64d7a24a631d35ff82
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/cambodia.txt
@@ -0,0 +1 @@
+Dith Pran
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/cameroon.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/cameroon.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4524e6e1d7d4a052d93c368910a6afb5bcc92578
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/cameroon.txt
@@ -0,0 +1,4 @@
+Joseph Chila
+Angèle Etoundi Essamba
+Samuel Fosso
+Jacques Toussele
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/canada.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/canada.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0731599bae9caa21c452cc033c7a4705a3c6df3b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/canada.txt
@@ -0,0 +1,171 @@
+Adriene K. Veninger
+Alexandra Morrison
+Aline Gubbay
+Alix Cléo Roubaud
+Althea Thauberger
+Amber Bracken
+Angela Grauerholz
+April Hickox
+Arnaud Maggs
+Arwa Abouon
+Barbara Astman
+Barbara Spohr
+Bill Cunningham
+Blossom Caron
+BMarian Penner Bancroft
+Bob Peterson
+Brian Wood
+Bryan Adams
+Byron Harmon
+Caitlin Cronenberg
+Carol Dunlop
+Chantal duPont
+Charlotte Rosshandler
+Chrystal Callahan
+Claire Beaugrand Champagne
+Clara Dennis
+Clara Gutsche
+Clara Sipprell
+Cynthia Chalk
+Dana Claxton
+Deanna Bowen
+Diane Borsato
+Dianne Bos
+Dominique Rey
+Donald Weber
+Donna Laframboise
+Dorothy Benson
+Edith Hallett Bethune
+Edith Maybin
+Edith Watson
+Edward Burtynsky
+Elaine Ling
+Elaine Stocki
+Élise L'Heureux
+Elsie Holloway
+Erin Combs
+Erin Shirreff
+Evelyn Andrus
+Farah Nosh
+Faye Schulman
+Fiona Bowie
+Floria Sigismondi
+Frederick Dally
+Fred Herzog
+Freeman Patterson
+Geneviève Cadieux
+George Barker
+Geraldine Moodie
+Gisèle Lamoureux
+Gladys Reeves
+Hannah Maynard
+Heidi Hollinger
+Helen McCall
+Henrietta Constantine
+Henrietta Gilmour
+Holly King
+Ian Lloyd
+Indrani Pal-Chaudhuri
+Isabelle Hayeur
+Jane Eaton Hamilton
+Janieta Eyre
+Jean Gainfort Merrill
+Jeff Wall
+Jennifer Alleyn
+Jenny Pike
+Jessica Eaton
+Jessie Tarbox Beals
+Jill Culiner
+Jill Greenberg
+Jin-me Yoon
+Joanne Jackson Johnson
+Jo-Anne McArthur
+John Hryniuk
+Joi Arcand
+Judith Lodge
+Julie Doiron
+Julie Enfield
+Julie Moos
+June Clark
+June Sauer
+Karin Bubaš
+Kay Burns
+Lana Šlezić
+Larry Towell
+Laura Letinsky
+Leah Singer
+Léna Mill-Reuillard
+Leonard Frank
+Lesia Maruschak
+Lillian B. Allen
+Lori Blondeau
+Lorraine Gilbert
+Lorraine Monk
+Lynne Cohen
+Madame Gagné
+Margaret Malandruccolo
+Margaret Watkins
+Marianna Knottenbelt
+Marie-Alice Dumont
+Marie-Jeanne Musiol
+Marlene Creates
+Mary Spencer
+Mattie Gunterman
+Melissa Auf der Maur
+Meryl McMaster
+Mia Matthes
+Michael Ernest Sweet
+Michelle Groskopf
+Millie Gamble
+Minna Keene
+Moyra Davey
+Nadia Myre
+Nancy Davenport
+Nancy Petry
+Naomi Harris
+Nathalie Daoust
+Nicholas Morant
+Nina Raginsky
+Peter Pitseolak
+Petra Collins
+Raphael Mazzucco
+Raymonde April
+Raymond Henry St. Arnaud
+Reva Brooks
+Richard Maynard
+Rita Leistner
+Roberta Bondar
+Robert Bourdeau[1]
+Robert Burley
+Robert Polidori
+Roloff Beny
+Rosalie Favell
+Rosetta Ernestine Carr
+Roy Arden
+Ruth Kaplan
+Sally Davies
+Sally Elizabeth Wood
+Samra Habib
+Sam Tata
+Sandra Semchuk
+Sara Angelucci
+Sheila McKinnon
+Shelagh Alexander
+Shelley Niro
+Sorel Cohen
+Stéphanie Colvey
+Sunil Gupta
+Susan Dobson
+Susan McEachern
+Sylvie Bélanger
+Sylvie Readman
+Tenille Campbell
+Tess Boudreau
+Thelma Pepper
+Theodosia Bond
+Valerie Jodoin Keaton
+Vikky Alexander
+Violet Keene
+Yousuf Karsh
+Yucho Chow
+Zahra Kazemi
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/chile.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/chile.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2753fcb006175715bd6b8e8c5329e6ea162fa330
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/chile.txt
@@ -0,0 +1,4 @@
+Ricardo Carrasco
+Jesús Inostroza
+Carlos Reyes-Manzo
+Valeria Zalaquett
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/china.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/china.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d83b1257e91a88dcd92c1d62904c549050ade4b4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/china.txt
@@ -0,0 +1,52 @@
+Cang Xin
+Chen Man
+Chen Wei
+Cui Xiuwen
+Feng Li
+Feng Xuemin
+Fu Bingchang
+Guo Yingguang
+He Chengyao
+Hong Cheong
+Hou Bo
+Joey Pang
+John Yu Shuinling
+Lai Afong
+Lang Jingshan
+Liu Xia
+Liu Xucang
+Li Zhensheng
+Lu Guang
+Lu Houmin
+Luo Yang
+Ma Liuming
+Miao Xiaochun
+Mu Qing
+O Zhang
+Ren Hang
+Sam Tata
+Sha Fei
+Shao Hua
+Shen Wei
+Stephen Chow
+Sun-chang Lo
+Tang Ying Chi
+Tchan Fou-li
+Tian Yuan
+Tong Cheong
+Wang Fuchun
+Wang Qingsong
+Wong Wo Bik
+Wu Shanzhuan
+Xiao Hui Wang
+Xiao Zhuang
+Xing Danwen
+Xu Xiaobing
+Yang Fudong
+Yijun Liao
+Yushi Li
+Zhang Jingna
+Zhao Xiaoding
+Zheng Guogu
+Zhuang Xueben
+Zhu Lan Qing
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/colombia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/colombia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..34766eeecac68bfbabf18689581802702bea1eec
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/colombia.txt
@@ -0,0 +1,5 @@
+Ricardo Acevedo Bernal
+Jesús Abad Colorado
+Miguel Gómez
+Nereo López
+Leo Matiz
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/croatia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/croatia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..55dc3b8aede3d2fdecf60907fd2f7d7e2447f435
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/croatia.txt
@@ -0,0 +1,3 @@
+Tošo Dabac
+Damir Hoyka
+Viktor Đerek
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/cuba.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/cuba.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bc75d7eae9cabb251e4b081fe8fe06cb60ef7393
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/cuba.txt
@@ -0,0 +1,2 @@
+Luis Castaneda
+Alberto Korda
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/czech_republic.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/czech_republic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..93cbc6c930d6e2b2831d63f78df686351c63bdd5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/czech_republic.txt
@@ -0,0 +1,18 @@
+Karel Cudlín
+František Drtikol
+Libuše Jarcovjáková
+Viktor Kolář
+Rudolf Koppitz
+Josef Koudelka
+Antonín Kratochvíl
+Rudolf Franz Lehnert
+Markéta Luskačová
+Frank Plicka
+Karel Plicka
+Jan Saudek
+Ignác Šechtl
+Josef Jindřich Šechtl
+Marie Šechtlová
+Jindřich Štreit
+Josef Sudek
+Miroslav Tichý
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/denmark.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/denmark.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1d84b86ccb400c645f1c845191875667b6f102df
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/denmark.txt
@@ -0,0 +1,50 @@
+Amalie Claussen
+Anton Melbye
+Astrid Kruse Jensen
+Benedicte Wrensted
+Bodil Hauschildt
+Caroline Hammer
+Charlotte Hanmann
+Claus Bjørn Larsen
+Erling Mandelmann
+Frederikke Federspiel
+Georg Emil Hansen
+Helena Christensen
+Jacob Aue Sobol
+Jacob Holdt
+Jacob Riis
+Jan Grarup
+Jens Fink-Jensen
+Jesper Høm
+Jette Bang
+Joakim Eskildsen
+Johanne Hesbeck
+Julie Edel Hardenberg
+Julie Laurberg
+Keld Helmer-Petersen
+Ken Hermann
+Kirsten Klein
+Klaus Thymann
+Krass Clement
+Kristen Feilberg
+Lars Schwander
+Leif Schiller
+Louise Thomsen
+Ludvig Grundtvig
+Mads Alstrup
+Marianne Grøndahl
+Mari Bastashevski
+Mary Steen
+Mary Willumsen
+Morten Bo
+Per Bak Jensen
+Pia Arke
+Reg Balch
+Rigmor Mydtskov
+Rudolph Striegler
+Sigvart Werner
+Sisse Brimberg
+Sophia Kalkau
+Thora Hallager
+Tina Enghoff
+Viggo Rivad
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/drc.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/drc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4902d95c7a5c4f6f5533f4280844b9875cdac7d1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/drc.txt
@@ -0,0 +1,2 @@
+Gosette Lubondo
+Joseph Makula
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/ecuador.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/ecuador.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9804b3ca554afcf7b1a16ec2a9025baaa1271a94
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/ecuador.txt
@@ -0,0 +1,2 @@
+Hugo Cifuentes
+Isadora Romero
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/egypt.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/egypt.txt
new file mode 100644
index 0000000000000000000000000000000000000000..52513492e5613f896346517f97fd9d4ebbe2fd2b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/egypt.txt
@@ -0,0 +1,7 @@
+W. Hanselman
+Sherif Sonbol
+Ayman Lotfy
+Lara Baladi
+Laura El-Tantawy
+Nermine Hammam
+Huda Lutfi
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/eritrea.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/eritrea.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c37afcbb9d5796c1e466d6d61d822190818c9dfa
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/eritrea.txt
@@ -0,0 +1 @@
+Senayt Samuel
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/estonia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/estonia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71890735815ffc12381f1ce7b6b1c584562808b4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/estonia.txt
@@ -0,0 +1,4 @@
+Kaupo Kikkas
+Jaan Künnap
+Johannes Pääsuke
+Urmas Tartes
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/ethiopia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/ethiopia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc162aaf027f59054d3ae5f94888fff9f7e97514
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/ethiopia.txt
@@ -0,0 +1 @@
+Aïda Muluneh
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/finland.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/finland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0a9cf1a8eadee4908a5f6f3a2eb71f05ec429a76
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/finland.txt
@@ -0,0 +1,10 @@
+Elina Brotherus
+Joakim Eskildsen
+Ismo Hölttö
+Aino Kannisto
+Marjaana Kella
+Ola Kolehmainen
+Sirkka-Liisa Konttinen
+Santeri Levas
+Susanna Majuri
+Arno Rafael Minkkinen
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/france.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/france.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7ca7407710536f26cd91c3f18a0651ab1f8330d5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/france.txt
@@ -0,0 +1,189 @@
+Adeline Boutain
+Adolphe Braun
+Agnès Varda
+Alan Aubry
+Albert Spaggiari
+Albert Willecomme
+Alexandra Boulat
+Alex Strohl
+Alfred Beau
+Alix Marie
+Anaïs Napoleón
+André-Adolphe-Eugène Disdéri
+André Giroux
+André Ostier
+Ange Leccia
+Ann Ray
+Antoine Claudet
+Antoine Fauchery
+Antoine Tempé
+Ariane Lopez-Huici
+Auguste and Louis Lumière
+Auguste François
+Auguste-Rosalie Bisson
+Bénédicte Kurzen
+Benedicte Van der Maar
+Bernard Cahier
+Bernard Faucon
+Bettina Rheims
+Brassaï
+Brigitte Lacombe
+Bruno Barbey
+Bruno Braquehais
+Bruno de Monès
+Camille Lepage
+Camille Silvy
+Catherine Leroy
+Charles Marville
+Chloé Tallot
+Christine Spengler
+Christophe Beauregard
+Clark and Pougnaud
+Claude Batho
+Claude Cahun
+Claudine Doury
+Constant Puyo
+Dani Olivier
+Delphine Diallo
+Denise Bellon
+Désiré Charnay
+Dominique Darbois
+Dominique Issermann
+Dominique Roman
+Dora Maar
+Edouard Baldus
+Edouard Boubat
+Édouard Delessert
+Emile Gsell
+Emmanuelle Riva
+Eric Lafforgue
+Étienne-Jules Marey
+Eugène Atget
+Evrard Wendenbaum
+Félix Bonfils
+Fernand Fonssagrives
+Flore
+Florence Henri
+Franck Vogel
+Françoise Demulder
+Françoise Huguier
+Françoise Nuñez
+Frédéric Lagrange
+Gaëlle Ghesquière
+Gaspard-Pierre-Gustave Joly de Lotbinière
+Geneviève Élisabeth Disdéri
+Genevieve Hafner
+Georges-Louis Arlaud
+Georges Rousse
+Georgette Chadourne
+Gérard Rancinan
+Germaine Chaumel
+Germaine Krull
+Gilles Peress
+Gisèle Freund
+Gustave Le Gray
+Guy Bourdin
+Hedi Slimane
+Henri Cartier-Bresson
+Henri Huet
+Henri Le Secq
+Henri-Victor Regnault
+Hércules Florence
+Herman Puig
+Hippolyte Arnoux
+Hippolyte Bayard
+Irina Ionesco
+Isabelle Massieu
+Jacques Alexandre
+Jacques Bourboulon
+Jacques Henri Lartigue
+Janine Niépce
+Jean-Baptiste Frénet
+Jean-Baptiste Mondino
+Jean-Baptiste Tournassoud
+Jean Baudrillard
+Jean Chamoux
+Jean-Christian Bourcart
+Jean-François Jonvelle
+Jean-François Lepage
+Jean Louis Marie Eugène Durieu
+Jean-Louis Schoellkopf
+Jeanloup Sieff
+Jean-Marc Bustamante
+Jean-Marie Villard
+Jean-Michel Voge
+Jean-Philippe Charbonnier
+Jean Philippe Piter
+Jenny de Vasson
+John Launois
+Joseph Nicéphore Niépce
+Joseph-Philibert Girault de Prangey
+Jules Gervais-Courtellemont
+Jules Itier
+Kate Polin
+Laure Albin Guillot
+Laurent Benaïm
+Laurent Biancani
+Leila Alaoui
+Léon Gimpel
+Lise Sarfati
+Louis Arthur Ducos du Hauron
+Louis-Camille d'Olivier
+Louis Désiré Blanquart-Evrard
+Louise Laffon
+Louis-Jacques Daguerre
+Louis Legrand
+Luc Delahaye
+Lucien Hervé
+Marc Riboud
+Marguerite Bornhauser
+Marie-Lydie Cabanis Bonfils
+Martine Barrat
+Maxime Du Camp
+Mayotte Magnus
+Michel Poivert
+Mohamed Bourouissa
+Muammer Yilmaz
+Nadar
+Natacha Lesueur
+Natalia Turine
+Olivier Grunewald
+Olivier Roller
+Olympe Aguado
+Pascal Meunier
+Patrick Demarchelier
+Paul de Cordon
+Philippe Echaroux
+Pierre de Vallombreuse
+Pierre Dubreuil
+Pierre et Gilles
+Pierre Toutain-Dorbec
+Réhahn
+Robert Doisneau
+Sabine Pigalle
+Sarah Moon
+Serge Brunier
+Serge Lutens
+Sophie Calle
+Sophie Delaporte
+Sophie Ristelhueber
+Stéphane Sednaoui
+Stéphanie Di Giusto
+Suzanne Doppelt
+Suzanne Lafont
+Thomas Devaux
+Valérie Belin
+Valérie Jouve
+Véronique de Viguerie
+Vincent Fournier
+Vincent Goutal
+Vincent Munier
+Vivienne Chandler
+Wilfrid Esteve
+Willy Ronis
+Wols
+Xavier Veilhan
+Yann Arthus-Bertrand
+Yohann Gozard
+Yvette Troispoux
+Yvonne Chevalier
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/gambia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/gambia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0466b530a79e46e5320b86ba83163bef8ed6cfd8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/gambia.txt
@@ -0,0 +1 @@
+Khadija Saye
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/georgia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/georgia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1bbc8fe2c194a5d8e7614e285a2eb650e9b6588c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/georgia.txt
@@ -0,0 +1 @@
+Irakly Shanidze
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/germany.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/germany.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b944cb3893f8e205b7e21cc0a095101c3001807a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/germany.txt
@@ -0,0 +1,201 @@
+Abisag Tüllmann
+Adolf de Meyer
+Aenne Biermann
+Albert Renger-Patzsch
+Alex Kempkens
+Alice Lex-Nerlinger
+Andreas Bohnenstengel
+Andreas Gursky
+Angelika Platen
+Anja Niedringhaus
+Anna and Bernhard Blume
+Anna Blume
+Anna Werner
+Annegret Soltau
+Anne-Katrin Purkiss
+Annelise Löffler
+Annemarie Heinrich
+Anne Menke
+Annette Kelm
+Anne Winterer
+Arwed Messmer
+Astrid Kirchherr
+August Sander
+Barbara Klemm
+Barbara Luisi
+Barbara Probst
+Bernd and Hilla Becher
+Bertha Beckmann
+Bertha Wehnert-Beckmann
+Bertha Zillessen
+Bettina Pousttchi
+Bettina von Zwehl
+Burkhard Schittny
+Candida Höfer
+Carla Bartheel
+Cathleen Naundorf
+Charles Paul Wilp
+Charlotte Joël
+Christa Frieda Vogel
+Christian von Alvensleben
+Chris von Wangenheim
+Claudia Fährenkemper
+Claudia Reinhardt
+Clemens Kalischer
+Dieter Appelt
+Dorothy Bohm
+Edmund Collein
+Elfriede Reichelt
+Elger Esser
+Elisabeth Hase
+Ella Bergmann-Michel
+Ellen Auerbach
+Ellen von Unwerth
+Elsa Thiemann
+Else Seifert
+Emilie Bieber
+Erich Consemüller
+Erich Salomon
+Erna Lendvai-Dircksen
+Ernst Heinrich Landrock
+Esther Haase
+Esther Levine
+Eva Sandberg-Xiao
+Evelyn Richter
+Felix H. Man
+Franz Fiedler
+Franz Grainer
+Frauke Eigen
+Frieda Riess
+Fritz Henle
+Gerda Taro
+Germaine Krull
+Gertrud Arndt
+Gertrude Fehr
+Giorgio Sommer
+Gisèle Freund
+Gladys Chai von der Laage
+Gottfried Jäger
+Grete Stern
+Guglielmo Plüschow
+Gundula Schulze Eldowy
+Hannah Höch
+Hanni Schwarz
+Hans Bellmer
+Hansel Mieth
+Hans G. Lehmann
+Hans Namuth
+Harald Hauswald
+Hedda Morrison
+Heinrich Brocksieper
+Heinrich Hoffmann
+Heinrich Kühn
+Heinrich Tønnies
+Heji Shin
+Helga Paris
+Helmut Gernsheim
+Helmut Newton
+Henning von Berg
+Herbert List
+Herbert Tobias
+Hildegard Ochse
+Hildegard Ochse (1935-1997]
+Hildegard Rosenthal
+Hilla Becher
+Ilse Bing
+Ingeborg Kahlenberg
+Jeanne Mandello
+Jenny Bossard-Biow
+Johanna Keimeyer
+John Gutmann
+John Heartfield
+Jörg Sasse
+Josef H. Neumann
+Juergen Teller
+Julia Gunther
+Juliane Herrmann
+Jutta Vialon
+Karl Blossfeldt
+Karl Lagerfeld
+Karsten Mosebach
+Karsten Thormaehlen
+Katharina Behrend
+Katharina Sieverding
+Käthe Buchler
+Katja Rahlwes
+Katrin Korfmann
+Kristian Liebrand
+Laurenz Berges
+Leni Riefenstahl
+Li Osborne
+Lisa Larsen
+Lisel Haas
+Liselotte Grschebina
+Liselotte Strelow
+Loretta Lux
+Lotte Herrlich
+Lotte Jacobi
+Louise Abel
+Lucia Moholy
+Madeline Winkler-Betzendahl
+Margret Nissen
+Marianne Breslauer
+Marianne Wex
+Marie Goslich
+Marie Kundt
+Marta Hoepffner
+Max Burchartz
+Melanie Manchot
+Michael Poliza
+Michael Ruetz
+Michael Schmidt
+Michael Wolf
+Minya Diez-Dührkoop
+Monika Kropshofer
+Nanna Heitmann
+Oliver Mark
+Otto Steinert
+Otto Wunderlich
+Patrick Bienert
+Peter Bialobrzeski
+Peter Cornelius
+Peter Guttman
+Peter Leibing
+Peter Lindbergh
+Peter Thomann
+Regina Relang
+Rosemarie Clausen
+Roswitha Hecke
+Rut Blees Luxemburg
+Ruth Bernhard
+Ruth Wilhelmi
+Sabine Hornig
+Sandra Hastenteufel
+Sibylle Bergemann
+Siegfried Hansen
+Simone Nieweg
+Sonya Noskowiak
+Sophia Goudstikker
+Stefanie Schneider
+Tata Ronkholz
+Thomas Bak
+Thomas Kellner
+Thomas Ruff
+Thomas Struth
+Thyra Schmidt
+Tina Bara
+Tobias Zielony
+Traude Bührmann
+Ursula Arnold
+Ursula Richter
+Ursula Schulz-Dornburg
+Ursula Wolff Schneider
+Uta Barth
+Walde Huth
+Walter Ballhause
+Walter Peterhans
+Wanda von Debschitz-Kunowski
+Wilhelm von Gloeden
+Willy Matheisl
+Wolfgang Tillmans
+Yva
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/greece.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/greece.txt
new file mode 100644
index 0000000000000000000000000000000000000000..02dd4a9da774dae541af1efc5b991ad089618c55
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/greece.txt
@@ -0,0 +1,14 @@
+Filippos Margaritis
+Leonidas Papazoglou
+Nelly's, Elli Souyioultzoglou-Seraïdari
+Yiorgos Depollas
+Mary Kay
+Yannis Kontos
+Vassilis Makris
+John Stathatos
+Dimitris Yeros
+Nikos Economopoulos
+Vassilis Makris
+Ianna Andreadis
+Tzeli Hadjidimitriou
+Johan Lolos
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/hong_kong.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/hong_kong.txt
new file mode 100644
index 0000000000000000000000000000000000000000..76eb3bc3aff6ce2457c440818667ae98a3dcd9b2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/hong_kong.txt
@@ -0,0 +1,2 @@
+Basil Pao
+Ho Fan
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/hungary.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/hungary.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c614db6cc0c0c238ee0a64cb64fbf8291568b499
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/hungary.txt
@@ -0,0 +1,13 @@
+Brassaï
+Cornell Capa
+Robert Capa
+Stephen Glass
+Zoltán Glass
+Lucien Hervé
+Judith Karasz
+André Kertész
+Imre Kinszki
+László Moholy-Nagy
+Martin Munkácsi
+Nickolas Muray
+Carol Szathmari
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/iceland.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/iceland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..46da44f3c98a494411da2f410b3a77322ee31d35
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/iceland.txt
@@ -0,0 +1,2 @@
+Nökkvi Elíasson
+Ragnar Axelsson
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/india.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/india.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4b913f0c93dc4cfe272436d482cbd99abe1bd803
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/india.txt
@@ -0,0 +1,20 @@
+Darogha Ubbas Alli
+Subhankar Banerjee
+Pablo Bartholomew
+Poulomi Basu
+Dimpy Bhalotia
+Sutapa Biswas
+Lala Deen Dayal
+Dhaval Dhairyawan
+Sunil Dutt
+Sohrab Hura
+Atul Kasbekar
+Yatin Patel
+Altaf Qadri
+Raghu Rai
+Dabboo Ratnani
+Vicky Roy
+Benu Sen
+Raghubir Singh
+Swarup Chatterjee
+Kamran Yusuf
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/indonesia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/indonesia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..178a0ec85134dbe444d2b08180493e33ef6862db
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/indonesia.txt
@@ -0,0 +1 @@
+Kassian Cephas
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/iran.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/iran.txt
new file mode 100644
index 0000000000000000000000000000000000000000..851f5dc80aec7f1930f5dd710a30fb12fa9651dc
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/iran.txt
@@ -0,0 +1,15 @@
+Abbas
+Hoda Afshar
+Reza Deghati
+Manoocher Deghati
+Kaveh Golestan
+Mohammad Reza Domiri Ganji
+Bahman Jalali
+Nasrollah Kasraian
+Mohammadreza Mirzaei
+Hossein Rajabian
+Mitra Tabrizian
+Newsha Tavakolian
+Jahangir Razmi
+Ali Khan Vali
+Alfred Yaghobzadeh
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/iraq.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/iraq.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c16023b9d8e97410d40cc9ab1267262f0bd33c61
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/iraq.txt
@@ -0,0 +1 @@
+Alaa Al-Marjani
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/ireland.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/ireland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bbed6d4d8259190e5c0d0ac06ff0462ef664c698
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/ireland.txt
@@ -0,0 +1,5 @@
+Kevin Abosch
+Enda Bowe
+Bob Carlos Clarke
+Eamonn Doyle
+Tony O'Shea
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/israel.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/israel.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d1ee0128bdd27fd91ab796fd265a726d0abbcc97
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/israel.txt
@@ -0,0 +1,7 @@
+Micha Bar-Am
+Rafael Ben-Ari
+Michal Chelbin
+Nadav Kander
+Ziv Koren
+Alex Levac
+Roie Galitz
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/italy.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/italy.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f63ac5e92158bc21d35695396a9864a242408a7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/italy.txt
@@ -0,0 +1,42 @@
+Fratelli Alinari
+Olivo Barbieri
+Antonio Beato
+Felice Beato
+Gianni Berengo Gardin
+Giacomo Brogi
+Giacomo Brunelli
+Letizia Battaglia
+Romano Cagnoni
+Ilario Carposio
+Stefano Cerio
+Elio Ciol
+Nicolò Degiorgis
+Yvonne De Rosa
+Antonio Faccilongo
+Adolfo Farsari
+Franco Fontana
+Piero Gemelli
+Luigi Ghirri
+Mario Giacomelli
+Gianfranco Gorgoni
+Mimmo Jodice
+Duccio Malagamba
+Fosco Maraini
+Enrico Martino
+Tina Modotti
+Ugo Mulas
+Pino Musi
+Dianora Niccolini
+Giuseppe Palmas
+Dino Pedriali
+Paolo Pellizzari
+Secondo Pia
+Fabio Ponzio
+Felice Quinto
+Vittorio Sella
+Frederick Sommer
+Alberto Terrile
+Oliviero Toscani
+Luigi Veronesi
+Massimo Vitali
+Vincenzo Laera
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/jamaica.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/jamaica.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d8c54357ab6d78f97156e4e5db5b1402e8d01456
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/jamaica.txt
@@ -0,0 +1 @@
+Ester Anderson
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/japan.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/japan.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e12ddea91da0963cfd88d307f2796450a3bf488
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/japan.txt
@@ -0,0 +1,158 @@
+Aizō Morikawa
+Akihide Tamura
+Akira Komoto
+Akira Satō
+Akira Toriyama
+Akito Tsuda
+Ariko Inaoka
+Asahachi Kōno
+Atsushi Fujiwara
+Aya Kida
+Bishin Jumonji
+Bukō Shimizu
+Chizu Ono
+Cozue Takagi
+Daidō Moriyama
+Eiko Yamazawa
+Ei-Q
+Emi Anrakuji
+Fusako Kodama
+Fuyuki Hattori
+Genzō Kitazumi
+Genzō Maeda
+Gyokusen Ukai
+Hakuyō Fuchikami
+Hikoma Ueno
+Hiroh Kikai
+Hiromix
+Hiroshi Sugimoto
+Hiroshi Watanabe
+Hiroshi Yamazaki
+Hisae Imai
+Hisaji Hara
+Hitomi Watanabe
+Horie Kuwajirō
+Ihei Kimura
+Ikkō Narahara
+Issei Suda
+Kaietsu Takagi
+Kanbei Hanaya
+Kansuke Yamamoto
+Kaoru Usui
+Katsuji Fukuda
+Katsu Naito
+Kazumasa Ogawa
+Kei Ito
+Kei Orihara
+Ken Domon
+Kensuke Kazama
+Kenzō Tamoto
+Kineo Kuwabara
+Kishin Shinoyama
+Kiyoshi Koishi
+Kiyoshi Nishiyama
+Kohei Yoshiyuki
+Kōji Satō
+Kōshirō Onchi
+Kosuke Okahara
+Kōtarō Tanaka
+Kozaburō Tamamura
+Kuichi Uchida
+Kunié Sugiura
+Kusakabe Kimbei
+Manji Terashima
+Mari Katayama
+Masanori Ashida
+Masao Gozu
+Masao Horino
+Masataka Takayama
+Masato Seto
+Matsusaburō Yokoyama
+Meison Kobayashi
+Michiko Kon
+Michiko Matsumoto
+Mieko Shiomi
+Mika Ninagawa
+Mikiko Hara
+Minayoshi Takada
+Minoru Minami
+Mitsuaki Iwagō
+Mitsugu Ōnishi
+Mitsutarō Fuku
+Miwa Yanagi
+Miyako Ishiuchi
+Miyuki Matsuda
+Motoichi Kumagai
+Nakaji Yasui
+Naonori Kohira
+Narutoshi Furukawa
+Noboru Ueki
+Nobuyoshi Araki
+Noriyoshi Shibata
+Ōno Benkichi
+Ōri Umesaka
+Osamu Hayasaki
+Rihei Tomishige
+Rika Noguchi
+Rinko Kawauchi
+Rosō Fukuhara
+Ruiko Yoshida
+Ryoko Suzuki
+Ryūa Kojima
+Ryuichi Ishikawa
+Sakae Tamura
+Seiji Kurata
+Seiki Kayamori
+Seiryū Inoue
+Seiyo Ogawa
+Shigeichi Nagano
+Shigeru Tamura
+Shiho Fukada
+Shima Ryū
+Shinichiro Kobayashi
+Shinzō Fukuhara
+Shinzo Maeda
+Shisei Kuwabara
+Shizuka Yokomizo
+Shōji Ueda
+Shōmei Tōmatsu
+Shunkichi Kikuchi
+Susumu Matsushima
+Tadahiko Hayashi
+Tadashi Takamura
+Tadasuke Akiyama
+Taiji Arita
+Taikichi Irie
+Takanobu Hayashi
+Takashi Amano
+Takashi Kijima
+Takashi Okamura
+Takeji Iwamiya
+Taku Aramasa
+Teisuke Chiba
+T. Enami
+Terushichi Hirai
+Tetsuya Ichimura
+Tohru Nogami
+Tokihiro Satō
+Tōkoku Shimizu
+Tokujirō Kameya
+Tokuko Ushioda
+Tomio Kondō
+Tomizo Yoshikawa
+Tomoko Miyamoto
+Tomoko Sawada
+Toyoko Tokiwa
+Tōyō Miyatake
+Tsuneko Sasamoto
+Yasuko Kotani
+Yasushi Nagao
+Yasuyoshi Chiba
+Yōnosuke Natori
+Yoshihiko Itō
+Yoshino Ōishi
+Yoshiyasu Suzuka
+Yūhi Miyazaki
+Yuki Onodera
+Yurie Nagashima
+Yutaka Takanashi
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/kenya.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/kenya.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e58de725b183829fc7f62a350e2645d51764822b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/kenya.txt
@@ -0,0 +1,3 @@
+Mohamed Amin
+Mimi Cherono Ng'ok
+Priya Ramrakha
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/korea.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/korea.txt
new file mode 100644
index 0000000000000000000000000000000000000000..39f5bc7f6d090254d13ddb3d523d260578bfd486
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/korea.txt
@@ -0,0 +1,14 @@
+Jun Ahn
+Bae Bien-u
+Chan-Hyo Bae
+Bae Doona
+Ina Jang
+Atta Kim
+Kim Jung-man
+Miru Kim
+Jungjin Lee
+Nikki S. Lee
+Park Jung-geun
+Park Nohae
+Soi Park
+Yoo Byung-eun
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/latvia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/latvia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5ce91ee5455fc465700aff3d6f02ae3e5d4d0a5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/latvia.txt
@@ -0,0 +1 @@
+Philippe Halsman
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/lebanon.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/lebanon.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5f1d7e11ee432d5f3d04d1fa6702df9602daea00
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/lebanon.txt
@@ -0,0 +1,2 @@
+Nadim Asfar
+Gregory Buchakjian
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/lithuania.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/lithuania.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4b1af3245a50b4d79831a0f1710c8710ad6a6bbf
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/lithuania.txt
@@ -0,0 +1,5 @@
+Izis Bidermanas
+Vytautas Stanionis
+Kęstutis Stoškus
+Antanas Sutkus
+Stanislovas Žvirgždas
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/luxembourg b/ex/dynamic-prompts/collections/artists/Photography/by_country/luxembourg
new file mode 100644
index 0000000000000000000000000000000000000000..ab89acea8579f657550e1e45ebeecd7cd09971da
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/luxembourg
@@ -0,0 +1,2 @@
+Mark Divo
+Marianne Majerus
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/mali.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/mali.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2cd1add9e67fb8a8a01794887c7801efbadb65ed
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/mali.txt
@@ -0,0 +1,3 @@
+Alioune Bâ
+Seydou Keïta
+Malick Sidibé
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/mexico.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/mexico.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e2b19cfff4a8000f70efee1df24a8f30f59d5236
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/mexico.txt
@@ -0,0 +1,27 @@
+Alejandro Cartagena
+Ambra Polidori
+Ana Casas Broda
+Blanca Charolet
+Carmen Castilleja
+Christa Cowrie
+Colette Álvarez Urbajtel
+Cristina Goettsch Mittermeier
+Daisy Ascher
+Daniela Rossell
+Dulce Pinzon
+Edgar de Evia
+Enrique Metinides
+Graciela Iturbide
+J. Michael Seyfert
+Lola Álvarez Bravo
+Lourdes Grobet
+Manuel Álvarez Bravo
+María García
+Mariana Yampolsky
+Maya Goded
+Paulina Lavista
+Rubén Ortiz Torres
+Sergio Dorantes
+Teresa Margolles
+Virginia Morales
+Yael Martínez
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/namibia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/namibia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d7c2c74e7e5abd77235817df554582ec48a0ae27
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/namibia.txt
@@ -0,0 +1 @@
+Margaret Courtney-Clarke
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/netherlands.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/netherlands.txt
new file mode 100644
index 0000000000000000000000000000000000000000..69ad3ae15d747bf46d8ee7bd4dbe6580e0a5816c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/netherlands.txt
@@ -0,0 +1,55 @@
+Ad Konings
+Alexine Tinne
+Angèle Etoundi Essamba
+Ania Bien
+Annemarie Spilker
+Annemie Wolff
+Ans Westra
+Anton Corbijn
+Ata Kandó
+Awoiska van der Molen
+Bertien van Manen
+Carla van de Puttelaar
+Carli Hermès
+Charlotte Pothuis
+Dana Lixenberg
+Desiree Dolron
+Eddy Posthuma de Boer
+Ed van der Elsken
+Ellen Spijkstra
+Emmy Andriesse
+Erwin Olaf
+Eva Besnyö
+Flore Zoé
+Frans Lanting
+Hans Aarsman
+Hellen van Meene
+Henricus Jacobus Tollens
+Henze Boekhout
+Ine Lamers
+Inez van Lamsweerde
+Iwan Baan
+Jacqueline Hassink
+Jeroen Kramer
+José Manuel Rodrigues
+Karl Hammer
+Katharina Behrend
+Levi van Veluw
+Lucie Blachet
+Margi Geerlinks
+Margriet Smulders
+Maria Antonia Merkelbach
+Maria Austria
+Maria Hille
+Marijke van Warmerdam
+Marrie Bot
+Melanie Bonajo
+Paul Cupido
+Rahi Rezvani
+Renée Scheltema
+Rineke Dijkstra
+Rob Hornstra
+Sacha de Boer
+Sophia Goudstikker
+Violette Cornelius
+Viviane Sassen
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/new_zealand.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/new_zealand.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c9d5312fcb7d4104d044d6cdd2e8945fc6ae0fd2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/new_zealand.txt
@@ -0,0 +1,50 @@
+Adele Younghusband
+Alexis Hunter
+Alice Brusewitz
+Alyson Hunter
+Amy Merania Harper
+Anne Geddes
+Anne Noble
+Ann Shelton
+Ans Westra
+Brian Brake
+Christine Webster
+Claire Harris
+Eileen Olive Deste
+Elizabeth Greenwood
+Elizabeth Pulman
+Emily Florence Cazneau
+Eunice Harriett Garlick
+Fiona Clark
+Fiona Pardington
+Geoff Moon
+Gil Hanley
+Gillian Chaplin
+Harriet Sophia Cobb
+Harvey Benge
+Janet Bayly
+Jane Ussher
+Jessie Buckland
+Judy Darragh
+Ken Griffiths
+Laurence Aberhart
+Mabel Tustin
+Margaret Matilda White
+Margaret Moth
+Marie Shannon
+Marion Kirker
+Mark Adams
+Marti Friedlander
+May and Mina Moore
+Nellie Ferner
+Norah Carter
+Peter Bush
+Rhondda Bosworth
+Roberta Thornley
+Robina Nicol
+Robin Morrison
+Rosaline Margaret Frank
+Ruth McDowall
+Suzanna Clarke
+Thelma Rene Kent
+Yvonne Todd
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/nigeria.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/nigeria.txt
new file mode 100644
index 0000000000000000000000000000000000000000..04b72704b3b1434babeb35c8665495e94353beeb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/nigeria.txt
@@ -0,0 +1,43 @@
+Aisha Augie-Kuta
+Akintunde Akinleye
+Andrew Esiebo
+Anny Robert
+David Uzochukwu
+George Da Costa
+Herzekiah Andrew Shanu
+James Iroha Uchechukwu
+J. D. 'Okhai Ojeikere
+Kelechi Amadi-Obi
+Rotimi Fani-Kayode
+Solomon Osagie Alonge
+Tam Fiofori
+Tidiani Shitou
+Toyin Sokefun-Bello
+George Da Costa
+Herzekiah Andrew Shanu
+Solomon Osagie Alonge
+J. D. 'Okhai Ojeikere
+Tidiani Shitou
+Tam Fiofori
+Rotimi Fani-Kayode
+Kelechi Amadi-Obi
+Akintunde Akinleye
+James Iroha Uchechukwu
+Andrew Esiebo
+Toyin Sokefun-Bello
+Aisha Augie-Kuta
+Anny Robert
+David Uzochukwu
+Fati Abubakar
+Jenevieve Aken
+Lola Akinmade Åkerström
+Aisha Augie-Kuta
+Yetunde Ayeni-Babaeko
+TY Bello
+Sokari Ekine
+Yagazie Emezi
+Fati Abubakar
+Emily Nkanga
+Amarachi Nwosu
+Ifeoma Onyefulu
+Taiye Selasi
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/norway.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/norway.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f346d1e91ca280f8b4e023cd5efc81ae4d369b39
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/norway.txt
@@ -0,0 +1,30 @@
+Agnes Nyblin
+Anders Beer Wilse
+Anne Helene Gjelstad
+Anne Krafft
+Augusta Solberg
+Catherine Cameron
+Elisabeth Helmer
+Elisabeth Meyer
+Gunnar Høst Sjøwall
+Hanneli Mustaparta
+Hulda Marie Bentzen
+Johanna Ullricka Bergstrøm Skagen
+Jonas Bendiksen
+Kåre Kivijärvi
+Karoline Frogner
+Knud Knudsen
+Knut Bry
+Kristin Lodoen Linder
+Louise Abel
+Luca Kleve-Ruud
+Marie Høeg
+Marie Magdalene Bull
+Marie Thomsen
+Marthine Lund
+Mimi Frellsen
+Mimsy Møller
+Rasmus Pedersen Thu
+Rolf Aamot
+Severin Worm-Petersen
+Tina Signesdottir Hult
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/pakistan.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/pakistan.txt
new file mode 100644
index 0000000000000000000000000000000000000000..968f513f24889b1def51ed4ab694fd363a033d3c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/pakistan.txt
@@ -0,0 +1,5 @@
+Farah Mahbub
+Tapu Javeri
+Zaigham Zaidi
+Huma Mulji
+Adnan Kandhar
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/palestine.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/palestine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8a2fbee7853b3badefdf1396be03201ca233ba70
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/palestine.txt
@@ -0,0 +1,3 @@
+Karimeh Abbud
+Yousef Khanfar
+Khalil Raad
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/panama.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/panama.txt
new file mode 100644
index 0000000000000000000000000000000000000000..00439e60b70bfb917339d77ef1764cd37105a712
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/panama.txt
@@ -0,0 +1 @@
+José Luis Rodríguez Pittí
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/peru.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/peru.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cb3ae5b5acb83fce8e3fb672046698ec9c4aa62e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/peru.txt
@@ -0,0 +1,3 @@
+Martín Chambi
+Mario Testino
+Pedro Jarque
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/poland.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/poland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2fcd4adc5d06dfb6c68d554dfd622e33411cf791
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/poland.txt
@@ -0,0 +1,58 @@
+Mariusz Adamski
+Mirosław Araszewski
+Leon Barszczewski
+Andrzej Baturo
+Zdzisław Beksiński
+Joshua Budziszewski Benor
+Paweł Bielec
+Wilhelm Brasse
+Sylwester Braun
+Zbigniew Brym
+Jan Bułhak
+Michał Cała
+Erazm Ciołek
+Jacenty Dędek
+Zbigniew Dłubak
+Maksymilian Fajans
+Janusz Gajos
+Edward Hartwig
+Mariusz Hermanowicz
+Ryszard Horowitz
+Zuzanna Janin
+Mieczysław Karłowicz
+Bogdan Konopka
+Ewa Kuryluk
+Eugeniusz Lokajski
+Andrzej Majewski
+Michal Martychowiec
+Maciej Michalski
+Justyna Mielnikiewicz
+Rafał Milach
+Chris Niedenthal
+Szymon Niemiec
+Kazimierz Nowak
+Krzysztof Olszewski
+Stanisław Julian Ostroróg
+Stanisław Julian Ignacy Ostroróg
+Andrzej Pawłowski
+Jarosław Pijarowski
+Joanna Piotrowska
+Wojciech Plewiński
+Robert Pranagal
+Włodzimierz Puchalski
+Henryk Ross
+Eva Rubinstein
+Wilhelm Russ
+Walery Rzewuski
+Jeanloup Sieff
+David Seymour
+Tomasz Sobecki
+Rosław Szaybo
+Stefan Themerson
+Jerzy Tomaszewski
+Jacek Tylicki
+Piotr Uklański
+Stanisław Ignacy Witkiewicz
+Casimir Zagourski
+Joanna Zastróżna
+Artur Żmijewski
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/portugal.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/portugal.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c574b623044b5c935f83b6ea87226b50c7a6d28b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/portugal.txt
@@ -0,0 +1,7 @@
+Helena Almeida
+Joshua Benoliel
+Daniel Blaufuks
+Ana Dias
+Frederick William Flower
+Eduardo Gageiro
+José Manuel Rodrigues
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/romania b/ex/dynamic-prompts/collections/artists/Photography/by_country/romania
new file mode 100644
index 0000000000000000000000000000000000000000..893f8fde24052da829db779581e2364ec133da58
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/romania
@@ -0,0 +1,2 @@
+Ioan Mihai Cochinescu
+Eddy Novarro
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/russia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/russia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..97c6da7a3aa0a32e4ea95c762b04a62cd8d9cce6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/russia.txt
@@ -0,0 +1,15 @@
+Alexey Brodovitch
+George Hoyningen-Huene
+Yevgeny Khaldei
+Rafail Sergeevich Levitsky
+Sergei Lvovich Levitsky
+El Lissitzky
+Pyotr Otsup
+Gueorgui Pinkhassov
+Irina Popova
+Sergei Mikhailovich Prokudin-Gorskii
+Mark Redkin
+Alexander Rodchenko
+Nicolas Tikhomiroff
+Alexey Titarenko
+Roman Vishniac
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/sierra_leone.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/sierra_leone.txt
new file mode 100644
index 0000000000000000000000000000000000000000..148b16ea0495c00195c3a4e4bd4c9117cf909a4d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/sierra_leone.txt
@@ -0,0 +1 @@
+Alphonso Lisk-Carew
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/singapore.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/singapore.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3d6bfa328aba9becfb41e4141b6e7bde0e6be96b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/singapore.txt
@@ -0,0 +1,4 @@
+John Clang
+Sim Chi Yin
+Teo Bee Yen
+Marjorie Doggett
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/slovakia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/slovakia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06363d2360e58d9a4dbf16651d66fcc5a0330590
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/slovakia.txt
@@ -0,0 +1,12 @@
+Sarah Avni
+Irena Blühová
+Yuri Dojc
+Peter Frolo
+Dezo Hoffmann
+Patrik Jandak
+Jozef Božetech Klemens
+Martin Kollar
+Eduard Nepomuk Kozič
+Tono Stano
+Silvia Vaculíková
+Robert Vano
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/slovenia.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/slovenia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..89ff6bf427c4a10a02602855759f6f553067f2cf
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/slovenia.txt
@@ -0,0 +1,12 @@
+Irena Blühová
+Boštjan Burger
+Gojmir Anton Kos
+Matevž Lenarčič
+Marijan Lipovšek
+Marko Modic
+Veno Pilon
+Ernest Pogorelc
+Marko Prezelj
+Janez Avguštin Puhar
+Benka Pulko
+Janko Ravnik
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/south_africa.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/south_africa.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ce3d4219127d081c2c9a2552a362de8e80764917
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/south_africa.txt
@@ -0,0 +1,40 @@
+Omar Badsha
+Steve Bloom
+Steven Bosch
+Kevin Carter
+James Chapman
+Ernest Cole
+Vera Elkan
+Arthur Elliott
+Abrie Fourie
+Caroline Gibello
+David Goldblatt
+Bob Gosani
+Anton Hammerl
+Sam Haskins
+Pieter Hugo
+Phumzile Khanyile
+Alf Kumalo
+Carla Liesching
+Ambrose Lomax
+David Lurie
+Peter Magubane
+Michael Meyersfeld
+Eric Miller
+Nandipha Mntambo
+Santu Mofokeng
+Billy Monk
+Zwelethu Mthethwa
+Zanele Muholi
+Sam Nzima
+Obie Oberholzer
+Henrik Purienne
+Andrzej Sawa
+Jürgen Schadeberg
+Thabiso Sekgala
+Lindokuhle Sobekwa
+Austin Stevens
+Richardt Strydom
+Guy Tillim
+Gisèle Wulfsohn
+Paul Yule
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/spain.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/spain.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1af1b65f598f0076bbcb091b6406525dfe864032
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/spain.txt
@@ -0,0 +1,36 @@
+Amalia López Cabrera
+Amalia Ulman
+Ana Arce
+Anaïs Napoleón
+Benedicta Sánchez
+Carlota Guerrero
+Chema Madoz
+Colita
+Cristina de Middel
+Cristina García Rodero
+Cristina Martín Lara
+Cristina Otero
+Delmi Álvarez
+Eulalia Abaitua Allende-Salazar
+Francisco Boix
+Inka Martí
+Irene Cruz
+Isabel Muñoz
+Isidoro Gallo
+Joan Colom
+Joan Fontcuberta
+Joaquín del Palacio
+Josefa Pla Marco
+José Ortiz-Echagüe
+Laia Abril
+Lua Ribeira
+Marcel·lí Gausachs
+Marqués de Santa María del Villar
+Nath-Sakura
+Ouka Leele
+Pedro Madueño
+Pilar Albarracín
+Pilar Aymerich i Puig
+Rogelio Bernal Andreo
+Txema Salvans
+Xavi Bou
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/sri_lanka.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/sri_lanka.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8bd2cad2ed9f097a78cf112f1984d9548af91583
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/sri_lanka.txt
@@ -0,0 +1 @@
+Lionel Wendt
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/suriname.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/suriname.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0c67006051d24bd3b1a17e0c7ee7afcac9bdc3d1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/suriname.txt
@@ -0,0 +1,2 @@
+Augusta Curiel
+Gustaaf Martinus Oosterling
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/sweden.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/sweden.txt
new file mode 100644
index 0000000000000000000000000000000000000000..433dd04af5ec60a974e73444060c82959917c653
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/sweden.txt
@@ -0,0 +1,51 @@
+Åke Ericson
+Anders Petersen
+Anna Clarén
+Anna Riwkin-Brick
+Annika Larsson
+Arvida Byström
+Beata Bergström
+Berit Wallenberg
+Bertha Valerius
+Brita Sofia Hesselius
+Caroline Hebbe
+Caroline von Knorring
+Edit Kindvall
+Elisabeth Ohlson
+Elise Arnberg
+Emma Schenson
+Gerry Johansson
+Gunnie Moberg
+Hanna Ferlin
+Hedda Ekman
+Hedvig Söderström
+Hélène Edlund
+Helene Schmitz
+Hilda Sjölin
+Ida Trotzig
+Ingrid Falk
+Jack Mikrut
+Jan Töve Johansson
+Jens Assur
+Johanna Hald
+Katarina Pirak Sikku
+Kristina Schmid
+Lennart Nilsson
+Lina Jonn
+Lotten von Düben
+Maria Friberg
+Marianne Greenwood
+Maria Tesch
+Marie Kinnberg
+Martin Bogren
+Mathilda Ranch
+Mattias Klum
+Olga Segerberg
+Olof Jarlbro
+Oscar Gustave Rejlander
+Rosalie Sjöman
+Selma Jacobsson
+Sofia Ahlbom
+Tuija Lindström
+Victor Hasselblad
+Wilhelmina Lagerholm
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/switzerland.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/switzerland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5b0866f6bf2caa6ae7ee33b6bddd8aba5c287575
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/switzerland.txt
@@ -0,0 +1,11 @@
+Werner Bischof
+René Burri
+Michel Comte
+Hans Feurer
+Robert Frank
+Johann Baptist Isenring
+Alwina Gossauer
+Helmar Lerski
+Pierre Rossier
+Didier Ruef
+Roman Signer
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/syria.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/syria.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c60dc536024ccf50e5752e48c2b5008abd85f151
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/syria.txt
@@ -0,0 +1 @@
+Bengin Ahmad
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/taiwan.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/taiwan.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2bfd7427ae313b4fa9097ef1cb1e65f33d7eb1c5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/taiwan.txt
@@ -0,0 +1 @@
+Chien-Chi Chang
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/thailand.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/thailand.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1ed37be23f1615c5b7403808ada5da7ab06c56f8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/thailand.txt
@@ -0,0 +1 @@
+Francis Chit
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/turkey.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/turkey.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bfca8fec27f8b80f5450fec12c45fa7b19687306
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/turkey.txt
@@ -0,0 +1,6 @@
+Ömer Asan
+Bahaettin Rahmi Bediz
+Ara Güler
+Yıldız Moran
+Pascal Sébah
+Uğur Uluocak
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/uganda.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/uganda.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abfca7ccd58c19c072ae387fa003e2884715dd93
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/uganda.txt
@@ -0,0 +1 @@
+Zarina Bhimji
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/ukraine.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/ukraine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f84b8d063b2a5dc7429d9660179a80decc9d9ba9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/ukraine.txt
@@ -0,0 +1,19 @@
+Igor Chekachkov
+Oleksandr Chekmenyov
+Mstyslav Chernov
+Maxim Dondyuk
+Yuri Kosin
+Igor Kostin
+Nikolai Kozlovsky
+Boris Mikhailov
+Rita Ostrovskaya
+Ihor Podolchak
+Roman Pyatkovka
+Yuri Rost
+Jury Rupin
+Vasiliy Ryabchenko
+Arsen Savadov
+Anton Solomoukha
+Anya Teixeira
+Anastasia Vlasova
+Yelena Yemchuk
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/united_kingdom.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/united_kingdom.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d4e9d768254d1f3cb6309360a87ec72a14404294
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/united_kingdom.txt
@@ -0,0 +1,380 @@
+Abbie Trayler-Smith
+Adama Jalloh
+Adam Fuss
+Agnes Warburg
+Albert Watson
+Alexander Bassano
+Alexander Gardner
+Alex Boyd
+Alfred Buckham
+Alfred Horsley Hinton
+Alfred Maudslay
+Alice Hughes
+Alice Seeley Harris
+Alicia Bruce
+Alison Webster
+Allan Chappelow
+Allan Warren
+Alys Tomlinson
+Amanda Eliasch
+Amelia Ellis
+Amelia Troubridge
+Amy Flagg
+Andrea Jones
+Andrew Catlin
+Andy Goldsworthy
+Andy Sewell
+Angus McBean
+Anna Atkins
+Anna Fox
+Ann Kelley
+Anthony F. Kersting
+Anthony Jones
+Antony Armstrong-Jones, 1st Earl of Snowdon known as "Snowdon"
+Anya Teixeira
+Araminta de Clermont
+Ashley Perry Abraham
+Augusta Mostyn
+Bert Hardy
+Bill Brandt
+Bill Jackson
+Bob Mazzer
+Brian David Stevens
+Brian Griffin
+Candice Farmer
+Care Johnson
+Carla Borel
+Caroline Emily Nevill
+Catherine Yass
+Catriona Fraser
+Cecil Beaton
+Charles Jones
+Charles Roscoe Savage
+Charles Settrington
+Charles Shepherd
+Charles T. Scowen
+Chloe Dewe Mathews
+Chris Craymer
+Chris Dorley-Brown
+Chris Killip
+Chris Steele-Perkins
+Christina Broom
+Cindy Buxton
+Clare Strand
+Claudette Holmes
+Clementina Hawarden
+Clive Barda
+Constance Fox Talbot
+Corinne Day
+Craig Easton
+Daniel Marquis
+Daniel Meadows
+Darren Heath
+Dave McKean
+David Bailey
+David Hamilton
+David Hockney
+David Hurn
+David Octavius Hill
+David Redfern
+David Stewart
+Deborah Anderson
+Derry Moore, 12th Earl of Drogheda
+Dominic Rouse
+Donald Mennie
+Don McCullin
+Donovan Wylie
+Doreen Spooner
+Dorothy Bohm
+Dorothy Wilding
+Douglas Corrance
+Douglas Webb
+Duncan Macpherson
+Eadweard Muybridge
+Eamonn McCabe
+Edith Rimmington
+Edith Tudor-Hart
+Edwin Smith
+Eileen Perrier
+Eileen Ramsay
+Elaine Constantine
+Eleanor Hardwick
+Ella Sykes
+Ellen Rogers
+Elsbeth Juda
+Emily Allchurch
+Emma Barton
+Emma Turner
+E.R. Hall
+Eric Hosking
+Ethel Booty
+Etheldreda Laing
+Eva Grant
+Eveleen Tennant
+Fay Godwin
+Fiona Adams
+Florence Farmborough
+Francis Bedford
+Francis Frith
+Francis Meadow Sutcliffe
+Franki Raffles
+Fred Archer
+Frederick Christian Palmer
+Frederick H. Evans
+Frederick Hollyer
+Gary Knight
+Gayle Chong Kwan
+Gemma Booth
+George Beldam
+George Davison
+George Dixon Abraham
+George Georgiou
+George Perry Abraham
+George Rodger
+George Washington Wilson
+Georgina Cook
+Georgina Masson
+Gerald Drucker
+Gerry Badger
+Gillian Wearing
+Grace Robertson
+Graham Diprose
+Graham Finlayson
+Graham Nash
+Graham Ovenden
+Graham Smith
+Hamish Brown
+Hannah Collins
+Hannah Starkey
+Harrison Marks
+Harry Benson
+Harry Burton
+Heather Agyepong
+Heather Angel
+Henry Bond
+Henry Collen
+Henry Peach Robinson
+Henry Taunt
+Herbert Bowyer Berkeley
+Hilary Stock
+Hilda Mabel Canter
+Homer Sykes
+Horace Roye
+Horatio Ross
+Howard Grey
+Hugh Cecil
+Hugh Welch Diamond
+Humphrey Spender
+Iain MacMillan
+Jack Latham
+James Kenny
+James Robertson
+James Valentine
+Jamie Hawkesworth
+Jane Bown
+Jane Martha St. John
+Janette Beckman
+Jane Wigley
+Janine Wiedel
+Jason Evans
+Jeanie Welford
+Jean Straker
+Jemima Stehli
+Jem Southam
+Jessie Mann
+Jill Furmanovsky
+Jill Posener
+Jim Lee
+Jimmy Nelson
+Joan Craven
+Joe Cornish
+John Blakemore
+John Bulmer
+John Deakin
+John Eastman Palmer
+John Everard
+John French
+John Jabez Edwin Mayall
+John McMurtrie
+John Muir Wood
+John Papillon
+John Spinks
+John Stezaker
+John Thomson
+John Topham
+Jo Metson Scott
+Jonathan Olley
+Joseph McKeown
+Jo Spence
+J. R. Black
+Julia Margaret Cameron
+Juno Calypso
+Kate Barry
+Kate Holt
+Ken Grant
+Ken Griffiths
+Keturah Anne Collings
+Khadija Saye
+Larry Burrows
+Laura Pannack
+Leah Gordon
+Lena Connell
+Lewis Carroll
+Lewis K. Bush
+Linda McCartney
+Linnaeus Tripe
+Lisa Barnard
+Lorna Yabsley
+Lotte Meitner-Graf
+Mabel Bent
+Madame Yevonde
+Malcolm Arbuthnot
+Marc Bryan-Brown
+Marco Secchi
+Marc Vallée
+Marc Wilson
+Margaret Mitchell
+Maria Mochnacz
+Marilyn Stafford
+Marjorie Baker
+Mark Neville
+Mark Power
+Martin Masai Andersen
+Martin Parr
+Mary Dillwyn
+Mary Fitzpatrick
+Mary Georgina Filmer
+Mary McCartney
+Mary Rosse
+Maud Sulter
+Maxine Walker
+Melanie Friend
+Mert and Marcus
+Michael Busselle
+Michael Kenna
+Mick Rock
+Minnie Weisz
+Misan Harriman
+Mitra Tabrizian
+Muriel Darton
+Nadine Ijewere
+Natasha Caruana
+Neeta Madahar
+Nick Knight
+Nick Turpin
+Nick Waplington
+Nigel Barker
+Nik Szymanek
+Norman Parkinson
+Nudrat Afza
+Olive Edis
+Olivia Arthur
+Olivia Wyndham
+Pamela Hanson
+Patrick Lichfield
+Patrick Ward
+Paula Rae Gibson
+Paul Graham
+Paul Hart
+Paul Joyce
+Paul Kenny
+Paul Reas
+Paul Yule
+Pennie Smith
+Penny Lancaster
+Pepita Seth
+Perry Ogden
+Peter Dazeley
+Peter Fraser
+Peter Henry Emerson
+Peter Wickens Fry
+Philip Jones Griffiths
+Philippa Scott
+Pogus Caesar
+Polly Braden
+Rankin
+Raymond Moore
+Rebecca Lilith Bathory
+Rhonda Wilson
+Richard Beard
+Richard Billingham
+Richard Pare
+Robert Blomfield
+Robert Fairer
+Robert Howlett
+Robert Ormerod
+Roger Fenton
+Roger Mayne
+Ron Davies
+Rory Lewis
+Ross Halfin
+Sally Soames
+Sam Haskins
+Sam Taylor-Wood
+Samuel Bourne
+Sarah Angelina Acland
+Sarah Anne Bright
+Sarah Pickering
+Scarlett Carlos Clarke
+Shirley Baker
+Shona Auerbach
+Siân Davey
+Simon Marsden
+Sonia Boyce
+Sophie Gerrard
+Sophy Rickett
+Stephen McLaren
+Stephens Orr
+Steve Hiett
+Steve Parish
+Stuart Franklin
+Stuart Griffiths
+Stuart Heydinger
+Sue Arrowsmith
+Susan Derges
+Suze Randall
+Sydney Newton
+Syd Shelton
+Terence Donovan
+Terri Quaye
+Thomas Foster Chuck
+Thomas Hodges
+Tim Hetherington
+Timothy Allen
+Tim Page
+Tish Murtha
+Tom Ang
+Tom Hunter
+Tom Stoddart
+Tony Boxall
+Tony Ray-Jones
+Val Wilmer
+Vanessa Winship
+Venetia Dearden
+Victor Burgin
+Victor Sloan
+Vinca Petersen
+Vivienne
+Walter Bird
+Walter B. Woodbury
+W. & D. Downey
+Wendy McMurdo
+Will Burrard-Lucas
+William Carrick
+William Clarridge
+William de Wiveleslie Abney
+William Eastman Palmer & Sons
+William Fox Talbot
+William Hayes
+William H. Illingworth
+William Notman
+William Saunders
+William Umpleby Kirk
+Yevonde
+Yishay Garbasz
+Yvonne Gregory,
+Zana Briski
+Zarina Bhimji
+Ziki Robertson
+Zoë Buckman
+Zoë Dominic
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/united_states.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/united_states.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f856d4b36e5cd10172e8c812e1e0a987fa9457d7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/united_states.txt
@@ -0,0 +1,1119 @@
+Aaron Huey
+Aaron Siskind
+A. Aubrey Bodine
+Abelardo Morell
+Abigail Heyman
+Abraham Aronow
+Acacia Johnson
+Adelaide Hanscom
+Adelaide Hanscom Leeson
+Adrien Broom
+Adrienne French
+Aimé Dupont
+Alan Diaz
+Alan Pogue
+Albert K. Dawson
+Alec Soth
+Alexander Black
+Alexandra Hedison
+Alfred A. Hart
+Alfred Cheney Johnston
+Alfred Eisenstaedt
+Alfred Shea Addis
+Alfred Stieglitz
+Alice Austen
+Alice Boughton
+Alisa Wells
+Alison Brady
+Alison Rossiter
+Alison Wright
+Al J Thompson
+Allan Arbus
+Allan Grant
+Allan Sekula
+Alma Lavenson
+Al Rockoff
+Alvin Langdon Coburn
+Ami Vitale
+Amy Arbus
+Amy Elkins
+Amy Stein
+Amy Toensing
+Andrea Blanch
+Andrea Booher
+Andrea Modica
+Andreas Feininger
+Andrea Star Reese
+Andre D. Wagner
+André Kertész
+Andres Serrano
+Andrew D. Bernstein
+Andrew J. Russell
+Andrew Prokos
+Andy Warhol
+Angela Cappetta
+Ania Bien
+Anita Pollitzer
+Anne Brigman
+Anne Collier
+Anne Fishbein
+Anne Noggle
+Annie Leibovitz
+Annie Wells
+Ann Mandelbaum
+Ann Rosener
+Annu Palakunnathu Matthew
+Ansel Adams
+Anthony Goicolea
+Anthony Suau
+Arnold E. Samuelson
+Arnold Genthe
+Arnold Newman
+Arny Freytag
+Art Hupy
+Arthur Clarence Pillsbury
+Arthur E. Scott
+Arthur Leipzig
+Arthur Meyerson
+Arthur Rothstein
+Arthur Tress
+Art Wolfe
+Asahel Curtis
+Ashley Gilbertson
+Autumn de Wilde
+Barbara Bosworth
+Barbara Davidson
+Barbara DuMetz
+Barbara Gluck
+Barbara Kasten
+Barbara Kruger
+Barbara Morgan
+Barbara Rosenthal
+Barbara Traub
+Barbra Walz
+Barry Edmonds
+Bea Nettles
+Beatrice Tonnesen
+Belle Johnson
+Ben Brody
+Benjamin Hoff
+Benjamin Lowy
+Ben Martin
+Ben Rose
+Ben Willmore
+Berenice Abbott
+Bernard Pierre Wolff
+Bernis von zur Muehlen
+Berry Berenson
+Bert Morgan
+Beth Green
+Bette Garber
+Bettina Cirone
+Bettye Lane
+Bill Aron
+Bill Atkinson
+Bill Biggart
+Bill Cunningham
+Bill Eppridge
+Bill Foley
+Bill Genaust
+Bill Groethe
+Bill Hudson
+Bill Owens
+Bill Schwab
+Bill Thomas
+Bill Travis
+Bill Wynne
+Billy Name
+Binh Danh
+Blake Andrews
+Blanche Reineke
+Bob Gomel
+Bob Gruen
+Bob Henriques
+Bob Shell
+Bob Walker
+Bob Willoughby
+Brad Mangin
+Brad Temkin
+Brenda Ann Kenneally
+Brett Weston
+Brian Skerry
+Brian Smith
+Brian Ulrich
+Brian Walski
+Bruce Charlesworth
+Bruce Davidson
+Bruce Gilden
+Bruce Hall
+Bruce Weber
+Bruce Wrighton
+Bryan Schutmaat
+Bud Lee
+Bunny Yeager
+Burk Uzzle
+Camille Solyagua
+Carleton Watkins
+Carl Giers
+Carl Mydans
+Carlo Gentile
+Carl Van Vechten
+Carol Beckwith
+Carol Guzy
+Caroline Gurrey
+Carol M. Highsmith
+Carol Newsom
+Carolyn Cole
+Carolyn Drake
+Carrie Mae Weems
+Cassandra Zampini
+Catharine Weed Barnes
+Catherine Leroy
+Catherine Opie
+Catriona Fraser
+Chad States
+Chanell Stone
+Chansonetta Stanley Emmons
+Charles Barthold
+Charles Belden
+Charles C. Ebbets
+Charles Clegg
+Charles Fenno Jacobs
+Charles Harbutt
+Charles Howard
+Charles Moore
+Charles O'Rear
+Charles Sheeler
+Charlie Cole
+Charlotte Brooks
+Charlotte Rosshandler
+Cherie Roberts
+Cheryl Diaz Meyer
+Cheryl Machat Dorskind
+Chip Berlet
+Chris Faust
+Chris Gulker
+Chris Hondros
+Chris McCaw
+Christian Patterson
+Christopher Boffoli
+Christopher Burkett
+Christopher Makos
+Christopher Morris
+Christopher Williams
+Cindy Sherman
+Clarence John Laughlin
+Clarence Williams
+Clay Geerdes
+Clay Myers
+Clifton C. Edom
+Clint Grant
+Cole Weston
+Collier Schorr
+Connie Imboden
+Conrad Friberg
+Consuelo Kanaga
+Cork Graham
+Cornell Capa
+Craig F. Walker
+Craig Semetko
+Craig Snyder
+Cris Alexander
+Cristina Mittermeier
+Cynthia Elbaum
+Dallas Kinney
+Damon Winter
+Dana Stone
+Dan Budnik
+D'Angelo Lovell Williams
+Daniel Arnold
+Daniel Davis Jr.
+Daniel Lorenzetti
+Daniel Nicoletta
+Daniel S. Mitchell
+Daniel Wakefield Smith
+Danny Lyon
+Dan Weiner
+Darius Kinsey
+David Alan Harvey
+David Armstrong
+David Bacon
+David Brandon Geeting
+David Burnett
+David Carol
+David C. Turnley
+David Doubilet
+David Douglas Duncan
+David Drew Zingg
+David Hilliard
+David Hobby
+David Hume Kennerly
+David H. Wells
+David Johnson
+David LaChapelle
+David Leeson
+David Levinthal
+David Michael Kennedy
+David Muench
+David Plowden
+David Pokress
+David Scherman
+David Seymour
+Dawn Wirth
+Dayna Smith
+Dean Chamberlain
+Deanna Templeton
+Deanne Fitzmaurice
+Debbie Grossman
+Deborah Bright
+Deborah Copaken
+Deborah Dancy
+Deborah Turbeville
+Deborah Willis
+Debra Bloomfield
+Delphine Fawundu
+Devin Allen
+Dewitt Jones
+Diana Davies
+Diana Mara Henry
+Diana Markosian
+Diana Walker
+Diane Arbus
+Diane MacKown, portraits
+Dickey Chapelle
+Dina Litovsky
+Dirck Halstead
+Dixie Sheridan
+Dona Ann McAdams
+Don Donaghy
+Don Hogan Charles
+Donna Ferrato
+Don Ultang
+Don Worth
+Doris Ulmann
+Dorothea Lange
+Dorothy Meigs Eidlitz
+Dorothy Norman
+Douglas Hopkins
+D Stevens
+Duane Michals
+Dudley Edmondson
+Dulah Marie Evans
+Dustin Satloff
+Dutton & Michaels
+Ed Darack
+Eddie Adams
+Edie Harper
+Edith Irvine
+Editta Sherman
+Ed Kashi
+Ed Kolenovsky
+Ed Rice
+Edward Bierstadt
+Edward Caraballo
+Edward S. Curtis
+Edward Steichen
+Edward Weston
+Edyth Carter Beveridge
+E. Jane Gay
+E. J. Bellocq
+Eleanor Antin
+Eleanor Butler Alexander-Roosevelt
+E. Lee Spence
+Elinor Carucci
+Eliot Porter
+Eli Reed
+Elizabeth Axtman
+Elizabeth Buehrmann
+Elizabeth Flint Wade
+Elizabeth Gill Lui
+Elizabeth Heyert
+Elizabeth Parker McLachlan
+Elizabeth Siegfried
+Ellei Johndro
+Ellen Auerbach
+Ellen Brooks
+Ellen Carey
+Elle Pérez
+Elliott Erwitt
+Elliott Landy
+Elsa Dorfman
+Ema Spencer
+Emma Justine Farnsworth
+Emme Gerhard
+Emmet Gowin
+Emy Kat
+Erica Baum
+Erich Hartmann
+Eric Minh Swenson
+Eric Treacy
+Erika Langley
+Erika Larsen
+Erin Schaff
+Erin Trieb
+Ernest Withers
+Ernst Haas
+Erwin Blumenfeld
+Estevan Oriol
+Esther Bubley
+Esther Henderson
+Esther Henderson Abbott
+Eudora Welty
+Eugene de Salignac[3]
+Eugene Richards
+Eva Fuka
+Evan Amos
+Evan Vucci
+Eva Rubinstein
+Eva Watson-Schütze
+Eve Arnold
+Evelyn Cameron
+Evelyn Hockstein
+Everette Dixie Reese
+Eve Sonneman
+Ezra Stoller
+Felice Frankel
+F. Holland Day
+Flip Schulke
+Florence Meyer
+Frances Benjamin Johnston
+Francesca Woodman
+Francesco Scavullo
+Frank Espada
+Frank Gohlke
+Frank Jay Haynes
+Frank Rinehart
+Fred E. Miller
+Fred Hultstrand
+Fred Zinn
+Gaetano Faillace
+Gail Albert Halaban
+Galen Rowell
+Garry Winogrand
+Gary L. Howe
+Gay Block
+George Azar
+George Barris
+George Edward Anderson
+George Fiske
+George F. Mobley
+George Hurrell
+George Krause
+George Platt Lynes
+George Strock
+George Tice
+George W. Ackerman
+Gerald Davis
+Gerald P. Pulley
+Gerd Ludwig
+Gertrude Käsebier
+Gertrude Samuels
+Gillian Laub
+Gina Osterloh
+Gitel Steed
+Gordon Matta-Clark
+Gordon Parks
+Greg Gorman
+Gregory Crewdson
+Greta Pratt
+Gretchen Garner
+Gulnara Samoilova
+Hal Buell
+Hal Gould
+Hal Prewitt
+Hannah Wilke
+Hansel Mieth
+Harold Eugene Edgerton
+Harper B. Smith
+Harriet Chalmers Adams
+Harrison Forman
+Harry Callahan
+Harry Gamboa, Jr.
+Harry Koundakjian
+Harry Mattison
+Heinz Kluetmeier
+Helen Brush Jenkins
+Helen Gatch
+Helen Johns Kirtland
+Helen K. Garber
+Helen Levitt
+Helen Messinger Murdoch
+Henry Holmes Smith
+Henry Wessel, Jr.
+Herbert Randall
+Herb Greene
+Herb Ritts
+Herb Scharfman
+Herman Leonard
+Hillary Hauser
+Hiro
+Honey Lee Cottrell
+Horst P. Horst
+Howard Schatz
+Howard Sochurek
+H. Reid
+Hugh Edwards
+Hy Peskin
+I. C. Rapoport
+Ike Altgens
+Imogen Cunningham
+Ira Block
+Ira Wilmer Counts Jr.
+Irina Rozovsky
+Irving Penn
+Isa Leshko
+I. W. Taber
+Jack Birns
+Jack Delano
+Jack Dykinga
+Jack E. Boucher
+Jack Pierson
+Jacob Riis
+Jacqueline Livingston
+Jacques Leiser
+Jamel Shabazz
+James Bidgood
+James Fee
+James Foley
+James Nachtwey
+James Reuel Smith
+James Van Der Zee
+Jamie Baldridge
+Jana Schneider
+Jane Evelyn Atwood
+Jane Fulton Alt
+Jane Hamilton-Merritt
+Jane Reece
+Jan Groover
+Janine Wiedel
+Jason Eskenazi
+Jason Pramas
+Jay Maisel
+Jeanne Dunning
+Jean Pagliuso
+Jeff Antebi
+Jeff Cowen
+Jeff Dunas
+Jeff Jacobson
+Jeff Mermelstein
+Jeff Widener
+Jennifer Graylock
+Jerilyn Lee Brandelius
+Jerome Liebling
+Jerome Zerbe
+Jerry Avenaim
+Jerry Berndt
+Jerry Cooke
+Jerry Interval
+Jerry Uelsmann
+Jesse Freidin
+Jessica Dimmock
+Jessie Tarbox Beals
+Jet Lowe
+Jill Enfield
+Jill Freedman
+Jill Greenberg
+Jill Mathis
+Jim Brandenburg
+Jim Cummins
+Jim Dow
+Jim French
+Jim Goldberg
+Jim Laughead
+Jim Marshall
+Jimmy Hare
+J Malan Heslop
+Joan Almond
+Joan Cassis
+Joan E. Biren
+Joan Marcus
+Joanne Leonard
+Joan Redmond
+Jock Sturges
+Joe Deal
+Joel Meyerowitz
+Joel-Peter Witkin
+Joel Sartore
+Joel Sternfeld
+Joe McNally
+Joe O'Donnell
+Joe Rosenthal
+Johan Hagemeyer
+John Baldessari
+John Benton-Harris
+John Bigelow Taylor
+John Chiara
+John Dominis
+John Engstead
+John Filo
+John G. Morris
+John Gossage
+John G. Zimmerman
+John Harding
+John Hoagland
+John H. White
+John K. Hillers
+John L. Gihon
+John Loengard
+John McBride
+John Moran
+Johnny Rozsa
+John Paul Edwards
+John Pezzenti
+John Pfahl
+John Ranard
+John Rich
+John Schwartz
+John Sexton
+John S. Johnston
+John Stanmeyer
+John Szarkowski
+John Trobaugh
+John Vachon
+John Veltri
+John V. Robinson
+Jona Frank
+Jonathan Mannion
+Jordan Doner
+José Moré
+Joseph Costa
+Joseph Dankowski
+Joseph Holmes
+Joseph Knaffl
+Joseph Rodriguez
+Joseph Ruttenberg
+Joseph Szabo
+Joshua Lutz
+Joyce Tenneson
+J. R. Eyerman
+J. Ross Baughman
+Judith Joy Ross
+Judy Dater
+Jules T. Allen
+Julia Ann Rudolph
+Julie Blackmon
+Julien Bryan
+Julius Shulman
+Jun Fujita
+Justine Kurland
+Justine Schiavo-Hunt
+Justin Merriman
+Kalliope Amorphous
+Ka-Man Tse
+Karen Graffeo
+Karen Halverson
+Karen Knorr
+Karen T. Borchers
+Kate Brooks
+Kate Cordsen
+Kate Matthews
+Kate Simon
+Kathryn Abbe
+Kathryn Tucker Windham
+Kathy Vargas
+Katy Grannan
+Kay Lahusen
+Kei Orihara
+Keisha Scarville
+Keith Carter
+Ken Light
+Ken Lubas
+Ken Marcus
+Kenneth Dupee Swan
+Kenneth Jarecke
+Kevin Ou
+Kevin P. Coughlin
+Khalik Allah
+Kiino Villand
+Kim Komenich
+Kim Weston
+Kristen Ashburn
+Kyle Cassidy
+Kyle Thompson
+Lana Z Caplan
+Lara Jo Regan
+Larry Clark
+Larry C. Price
+Larry Fink
+Larry Sultan
+Laura Adams Armer
+Laura Aguilar
+Laura Gilpin
+Laura McPhee
+Laura Wilson
+Lauren Greenfield
+Lawrence Beitler
+Lawrence Denny Lindsley
+Lawrence Fried
+Layla Love
+Lee Friedlander
+Lee Isaacs
+Lee Lockwood
+Lee Miller
+Lee Nye
+Leigh Wiener
+Lena Herzog
+Lennette Newell
+Leonard Fink
+Leonard Freed
+Leonard McCombe
+Leo Seltzer
+Les Stone
+Lester Balog
+Lewis Baltz
+Lewis Hine
+Lida Moser
+Lili Almog
+Liliane de Cock
+Lillian Bassman
+Linda Connor
+Linda McCartney
+Linda Wolf
+Lindsey Ross
+Lisa Law
+Lisette Model
+Lisl Steiner
+Liza Ryan
+Lizbeth Marano
+Liz Nielsen
+Lois Conner
+Lois Greenfield
+Loomis Dean
+Lora Webb Nichols
+Loren Cameron
+Lori Grinker
+Lorna Simpson
+Lorne Resnick
+Lou Dematteis
+Louisa Bernie Gallaher
+Louise Arner Boyd
+Louise Boyle
+Louise Dahl-Wolfe
+Louise Martin
+Louise Rosskam
+Louis Stettner
+Lucas Samaras
+Lucian Perkins
+Lucien Aigner
+Lucienne Bloch
+Lucy Wallace Porter
+Luke Somers
+Lynn Davis
+Lynne Bentley-Kemp
+Lynne Cohen
+Lynn Geesaman
+Lynn Johnson
+Lynn Saville
+Lynsey Addario
+Maggie Diaz
+Maggie Steber
+Maggie Taylor
+Malerie Marder
+Man Ray
+Manuel Rivera-Ortiz
+Marc Bryan-Brown
+Marcey Jacobson
+Marcia Reed
+Margaret Bourke-White
+Margaret Hall
+Margrethe Mather
+Marian Hooper Adams
+Marie Cosindas
+Marie Hansen
+Marie Hartig Kendall
+Marie Hartig Kendall[2]
+Marilyn Bridges
+Marilyn Nance
+Marilyn Silverstone
+Marion Carpenter
+Marion Ettlinger
+Marion E. Warren
+Marion Post Wolcott
+Marjorie Content
+Marjory Collins
+Mark Feldstein
+Mark Klett
+Mark Robert Halper
+Mark Ruwedel
+Mark Seliger
+Mark Steinmetz
+Martha Cooper
+Martha Holmes
+Martha Rosler
+Martine Barrat
+Marvin Breckinridge Patterson
+Mary Anne Fackelman-Miner
+Mary Chind-Willie
+Mary Devens
+Mary Ellen Mark
+Mary Frey
+Mary Lou Foy
+Mary Morgan Keipp
+Masumi Hayashi
+Mathew Brady
+Matt Black
+Matthew Knisely
+Matthew Naythons
+Matthew Rolston
+Mattie Edwards Hewitt
+Max Desfor
+Max Vadukul
+Maxwell MacKenzie
+Max Yavno
+Mayme Gerhard
+Meghan Boody
+Melanie Einzig
+Melanie Pullen
+Melissa Shook
+Melissa Springer
+Mell Kilpatrick
+Mellon Tytell
+Melodie McDaniel
+Melvin Sokolsky
+Merry Moor Winnett
+Meryl Meisler
+Micah Albert
+Michael Evans
+Michael Forster Rothbart
+Michael Jang
+Michael O'Brien
+Michael Richard
+Michael Schennum
+Michael Williamson
+Michel du Cille
+Mickey Smith
+Miguel Gómez
+Mike Brodie
+Milton Rogovin
+Mimi Plumb
+Minor White
+Miru Kim
+Mitch Epstein
+Mitch Kern
+M.J. Alexander
+Mollie Fly
+Moneta Sleet Jr.
+Monika Merva
+Monte Zucker
+Morris Schwartz
+Morton D. May
+Myra Albert Wiggins
+Myron Davis
+Nadine Blacklock
+Najlah Feanny
+Nancy Borowick
+Nancy Ford Cones
+Nancy Lee Andrews
+Nancy Manter
+Nancy M. Stuart
+Nancy Rexroth
+Nan Goldin
+Naomi Savage
+Nat Finkelstein
+Nathan Lyons
+Neal Slavin
+Neil Folberg
+Neil Leifer
+Nellie Stockbridge
+Nicholas Nixon
+Nicholas Teliatnikow
+Nick Meyer
+Nic Nicosia
+Nikki Kahn
+Nina Alovert
+Nina Berman
+Nina Howell Starr
+Nina Leen
+Nora Herting
+Oliver F. Atkins
+Olivia Parker
+Oscar G. Mason
+Otto Hagel
+O. Winston Link
+Paola Gianturco
+Pat Martin
+Patrick Farrell
+Patrick McMullan
+Paula Bronstein
+Paula Gately Tillman
+Paul Caponigro
+Paul Chesley
+Paulette Tavormina
+Paul Fusco
+Paul Henderson
+Pauline Kruger Hamilton
+Paul McDonough
+Paul Outerbridge
+Paul Raphaelson
+Paul Strand
+Paul Taggart
+Paul Vathis
+Penelope Umbrico
+Penny De Los Santos
+Penny Wolin
+Perla de Leon
+Peter Hill Beard
+Peter Menzel
+Peter Stackpole
+Peter Turnley
+Pete Souza
+Phil Borges
+Philip Hyde
+Philip-Lorca diCorcia
+Philip Perkis
+Pinky Bass
+Pipo Nguyen-duy
+Pirie MacDonald
+Pirkle Jones
+Polly Chandler
+Polly Smith
+Preston Gannaway
+Priit Vesilind
+Rachel Cox
+Rachel Raab
+Rachel Sussman
+Raeanne Rubenstein
+Rahim Fortune
+Raissa Venables
+Ralph Gibson
+Ralph Morse
+Ralph Steiner
+Ramona d'Viola
+Raúl De Molina
+Raymond Meeks
+R.C. Hickman
+Rebecca Lepkoff
+Rebecca Matlock
+Rebecca Norris Webb
+Reid Blackburn
+Renée C. Byer
+Renée Cox
+Richard Avedon
+Richard Drew
+Richard Misrach
+Richard Prince
+Richard Saunders
+Rick Loomis
+Rick Smolan
+Rita Reed
+Robert Adams
+Robert A. Sengstacke
+Robert Benecke
+Robert Dawson
+Robert E. Gilka
+Robert Glenn Ketchum
+Robert Halmi
+Robert Mapplethorpe
+Robert ParkeHarrison
+Robert Riger
+Robert Van Lierop
+Rocky Schenck
+Rodelio Astudillo
+Rodney Lough Jr.
+Rodney Smith
+Rolando Gomez
+Ronald A. Edmonds
+Ron Galella
+Ron Harris
+Ron Haviv
+Roni Horn
+Rory Doyle
+Rosalind Fox Solomon
+Rosamond W. Purcell
+Rose Clark
+Rose Mandel
+Roy DeCarava
+Roy Neel
+Roy Stryker
+Roy Stuart
+Roz Joseph
+Rudolf Eickemeyer, Jr.
+Russ Adams
+Russell Klika
+Russell Lee
+Ruth Bernhard
+Ruth Gruber
+Ruth Harriet Louise
+Ruth-Marion Baruch
+Ruth Matilda Anderson
+Ruth Orkin
+Ruth Robertson
+Ryan Spencer Reed
+Sal Lopes
+Sally Mann
+Sally Stapleton
+Salvatore Vasapolli
+Sam Abell
+Sama Raena Alshaibi
+Samuel Rosenberg
+Sandra Eisert
+Sandra Stark
+Sandra Weiner
+Sandy Skoglund
+Santi Visalli
+Sarah Charlesworth
+Sarah Choate Sears
+Sarah J. Eddy
+Sarah Ladd
+Sarah Louise Judd
+Saul Leiter
+Scott Strazzante
+Scout Tufankjian
+Sean Flynn
+Shane Lavalette
+Shane T. McCoy
+Sharon Farmer
+Sharon Wohlmuth
+Sheila Pree Bright
+Sheldon Dick
+Sherrie Levine
+Shirley Burden
+Shirley Burman
+Sima Diab
+Skip Bolen
+Slim Aarons
+Sonia Handelman Meyer
+Sonja Bullaty
+Spencer Platt
+Spencer Tunick
+Spider Martin
+Stacy Kranitz
+Stacy Pearsall
+Stan Grossfeld
+Stan Honda
+Stanley Forman
+Stanley Greene
+Stanley Stellar
+Stanley Tretick
+Stefanie Schneider
+Stephanie Pfriender Stylander
+Stephanie Sinclair
+Stephen Alvarez
+Stephen Mosher
+Stephen Shames
+Stephen Shore
+Steve Giovinco
+Steve Mandel
+Steve McCurry
+Steven Meisel
+Steven Underhill
+Steve Raymer
+Steve Schapiro
+Stewart Shining
+Stuart Klipper
+Summer A. Smith
+Susana Raab
+Susan Bank
+Susan Burnstine
+Susan Crocker
+Susan Eakins
+Susan Ford
+Susan Ford Bales
+Susan Hacker Stang
+Susan Lipper
+Susan Meiselas
+Susan Mikula
+Susan Ressler
+Suzanne Arms
+Suzy Gorman
+Sylvia Plachy
+Talia Chetrit
+Tama Hochbaum
+Tamara Lackey
+Tappan Adney
+Tara Haelle
+Taro Yamasaki
+Taryn Simon
+Ted Croner
+Ted Jackson
+Tee Corinne
+Terri Weifenbach
+Terry Deglau
+Terry Richardson
+Texas Isaiah
+Theodor Jung
+Thérèse Bonney
+Thomas C. Roche
+Thomas E. Askew
+Thomas E. Franklin
+Thomas J. Kelly III
+Thomas John Shillea
+Thomas Joseph Wynne
+Thomas Laird
+Thomas Roma
+Thomas Tulis
+Timothy Greenfield-Sanders
+Timothy Lee Barnwell
+Timothy O'Sullivan
+Tina Barney
+T. M. Schleier
+Todd Heisler
+Todd Hido
+Tod Papageorge
+Tom Arma
+Tom Gralish
+Tom Howard
+Tom Marcello
+Tom Stone
+Toni Frissell
+Trude Fleischmann
+Tyler Hicks
+Tyler Mitchell
+Vanessa Beecroft
+Victoria Cabezas
+Victor Prevost
+Vijat Mohindra
+Vincent Laforet
+Virginia Schau
+Vivian Maier
+Walker Evans
+Walter Iooss
+Walt Zeboski
+Warren Faidley
+Warren T. Thompson
+Waswo X. Waswo
+Weegee
+Wendi Schneider
+Wendy Sue Lamm
+Werner Wolff
+W. Eugene Smith
+Whitney Hubbs
+Wilda Gerideau-Squires
+William A. Barnhill
+William Albert Allard
+William Bell
+William Campbell
+William Christenberry
+William Claxton
+William Eggleston
+William Garnett
+William George Wadman
+William George Wilson
+William Heick
+William Henry Jackson
+William H. Rau
+William Hundley
+William Klein
+William McKenzie Morrison
+William M. Gallagher
+William P. Gottlieb
+William Snyder
+William Wegman
+Will McBride
+Will Steacy
+Wilson Hicks
+Winfield Parks
+Winifred Hall Allen
+Wright Morris
+Wynn Bullock
+Yasuhiro Ishimoto
+Yasuo Kuniyoshi
+Yelena Yemchuk
+Yvette Borup Andrews
+Zaida Ben-Yusuf
+Zak Noyle
+Zoe Leonard
+Zoe Lowenthal Brown
+Zoe Strauss
+Zora J. Murff
+Zoriah Miller
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/venezuela.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/venezuela.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b08d95c9a04f4d4bc1c3cd22099b625afcdb4ee
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/venezuela.txt
@@ -0,0 +1,3 @@
+Ricardo Gómez Pérez
+Alejandro López de Haro
+Ronaldo Schemidt
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/by_country/vietnam.txt b/ex/dynamic-prompts/collections/artists/Photography/by_country/vietnam.txt
new file mode 100644
index 0000000000000000000000000000000000000000..372e3991e931328088ce16d75ba45a8a737d0f95
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/by_country/vietnam.txt
@@ -0,0 +1 @@
+Huynh Cong Ut
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/Photography/photographers.txt b/ex/dynamic-prompts/collections/artists/Photography/photographers.txt
new file mode 100644
index 0000000000000000000000000000000000000000..443feac286743f1e3c10a816eb927a6b10bdecb0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/Photography/photographers.txt
@@ -0,0 +1,87 @@
+__artists/Photography/by_country/albania__
+__artists/Photography/by_country/albania__
+__artists/Photography/by_country/algeria__
+__artists/Photography/by_country/argentina__
+__artists/Photography/by_country/armenia__
+__artists/Photography/by_country/australia__
+__artists/Photography/by_country/austria__
+__artists/Photography/by_country/azerbijan__
+__artists/Photography/by_country/bangladesh__
+__artists/Photography/by_country/belgium__
+__artists/Photography/by_country/benin__
+__artists/Photography/by_country/brazil__
+__artists/Photography/by_country/cambodia__
+__artists/Photography/by_country/cameroon__
+__artists/Photography/by_country/canada__
+__artists/Photography/by_country/chile__
+__artists/Photography/by_country/china__
+__artists/Photography/by_country/colombia__
+__artists/Photography/by_country/croatia__
+__artists/Photography/by_country/cuba__
+__artists/Photography/by_country/czech_republic__
+__artists/Photography/by_country/denmark__
+__artists/Photography/by_country/drc__
+__artists/Photography/by_country/ecuador__
+__artists/Photography/by_country/egypt__
+__artists/Photography/by_country/eritrea__
+__artists/Photography/by_country/estonia__
+__artists/Photography/by_country/ethiopia__
+__artists/Photography/by_country/finland__
+__artists/Photography/by_country/france__
+__artists/Photography/by_country/gambia__
+__artists/Photography/by_country/georgia__
+__artists/Photography/by_country/germany__
+__artists/Photography/by_country/greece__
+__artists/Photography/by_country/hong_kong__
+__artists/Photography/by_country/hungary__
+__artists/Photography/by_country/iceland__
+__artists/Photography/by_country/india__
+__artists/Photography/by_country/indonesia__
+__artists/Photography/by_country/iran__
+__artists/Photography/by_country/iraq__
+__artists/Photography/by_country/ireland__
+__artists/Photography/by_country/israel__
+__artists/Photography/by_country/italy__
+__artists/Photography/by_country/jamaica__
+__artists/Photography/by_country/japan__
+__artists/Photography/by_country/kenya__
+__artists/Photography/by_country/korea__
+__artists/Photography/by_country/latvia__
+__artists/Photography/by_country/lebanon__
+__artists/Photography/by_country/lithuania__
+__artists/Photography/by_country/luxembourg
+__artists/Photography/by_country/mali__
+__artists/Photography/by_country/mexico__
+__artists/Photography/by_country/namibia__
+__artists/Photography/by_country/netherlands__
+__artists/Photography/by_country/new_zealand__
+__artists/Photography/by_country/nigeria__
+__artists/Photography/by_country/norway__
+__artists/Photography/by_country/pakistan__
+__artists/Photography/by_country/palestine__
+__artists/Photography/by_country/panama__
+__artists/Photography/by_country/peru__
+__artists/Photography/by_country/poland__
+__artists/Photography/by_country/portugal__
+__artists/Photography/by_country/romania
+__artists/Photography/by_country/russia__
+__artists/Photography/by_country/sierra_leone__
+__artists/Photography/by_country/singapore__
+__artists/Photography/by_country/slovakia__
+__artists/Photography/by_country/slovenia__
+__artists/Photography/by_country/south_africa__
+__artists/Photography/by_country/spain__
+__artists/Photography/by_country/sri_lanka__
+__artists/Photography/by_country/suriname__
+__artists/Photography/by_country/sweden__
+__artists/Photography/by_country/switzerland__
+__artists/Photography/by_country/syria__
+__artists/Photography/by_country/taiwan__
+__artists/Photography/by_country/thailand__
+__artists/Photography/by_country/turkey__
+__artists/Photography/by_country/uganda__
+__artists/Photography/by_country/ukraine__
+__artists/Photography/by_country/united_kingdom__
+__artists/Photography/by_country/united_states__
+__artists/Photography/by_country/venezuela__
+__artists/Photography/by_country/vietnam__
diff --git a/ex/dynamic-prompts/collections/artists/README.md b/ex/dynamic-prompts/collections/artists/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..4875f99f16bf12c25d9cc802268d0e4108e4d2b1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/README.md
@@ -0,0 +1 @@
+A large, but very incomplete list of artists by movement and period. It was previously part of the jumbo collection
diff --git a/ex/dynamic-prompts/collections/artists/genre/anime.txt b/ex/dynamic-prompts/collections/artists/genre/anime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e4ff3479f96dbdd7b84961e3033a663ecf1beb2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/genre/anime.txt
@@ -0,0 +1,119 @@
+Akemi Takada
+Akihiko Yamashita
+Akihiro Yamada
+Akio Sugino
+Akio Watanabe
+Akira Toriyama
+Akira Yasuda
+Aoi Nishimata
+Atsuko Nakajima
+Ayumi Kurashima
+Buriki
+Chie Uratani
+Eiji Suganuma
+Falcoon
+Fumikane Shimada
+Fumio Hisamatsu
+Fumitoshi Oizaki
+Futoshi Nishiya
+Gekidan Inu Curry
+Go Nagai
+Hajime Watanabe
+Haruhiko Mikimoto
+Hayao Miyazaki
+Hidenori Matsubara
+Hiroshi Ogawa
+Hiroshi Ōsaka
+Hiro Suzuhira
+Hiroyuki Imaishi
+Hiroyuki Kitazume
+Hisashi Hirai
+Ikuko Itoh
+Kantoku
+Kaoru Shintani
+Katsuya Kondō
+Katsuya Terada
+Kazuchika Kise
+Kazuhide Tomonaga
+Kazuko Shibuya
+Kazuko Tadano
+Kazune Kawahara
+Kazuo Komatsubara
+Kazushi Hagiwara
+Kazuto Nakazawa
+Kazuya Kuroda
+Keita Amemiya
+Kenichi Sonoda
+Kenichi Yoshida
+Ken Ishikawa
+Kia Asamiya
+Kinu Nishimura
+Koichi Ohata
+Kōsuke Fujishima
+Kristof Serrand
+Kumiko Takahashi
+Mamoru Nagano
+Masakazu Katsura
+Masaki Kajishima
+Masami Ōbari
+Masashi Ando
+Michi Himeno
+Miki Tori
+Mitsuo Iso
+Mitsuru Ishihara
+Moto Hagio
+Motosuke Takahashi
+Mutsumi Inomata
+Naoki Yamamoto
+Narumi Kakinouchi
+Naru Nanao
+Nobuhiro Watsuki
+Nobuteru Yūki
+Norio Shioyama
+Osamu Tezuka
+QP:flapper
+Range Murata
+Sachiko Kamimura
+Sakura Asagi
+Satoshi Urushihara
+Sayuri Ichiishi
+Shiki Kawabata
+Shingo Adachi
+Shingo Araki
+Shotaro Ishinomori
+Sunaho Tobe
+Susumu Matsushita
+Suzuhito Yasuda
+Takahiro Kimura
+Takami Akai
+Takehiko Itō
+Tetsuya Endo
+Tetsuya Nishio
+Tomonori Kogawa
+Tony Taka
+Toshihiro Kawamoto
+Toshiki Hirano
+Toshiyuki Kubooka
+Toyoo Ashida
+Tsukasa Dokite
+Tsukasa Kotobuki
+Tsunako
+Ugetsu Hakua
+Yasuhiro Irie
+Yasuomi Umetsu
+Yasuo Ōtsuka
+Yōichi Kotabe
+Yōji Kuri
+Yoko Kikuchi
+Yoshifumi Kondō
+Yoshihiko Umakoshi
+Yoshikazu Yasuhiko
+Yoshitaka Amano
+Yoshitoshi ABe
+Yoshiyuki Sadamoto
+Yui Haga
+Yukiko Horiguchi
+Yumiko Ōshima
+Yun Kōga
+Yuriko Chiba
+Yuu Kamiya
diff --git a/ex/dynamic-prompts/collections/artists/genre/fantasy.txt b/ex/dynamic-prompts/collections/artists/genre/fantasy.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a694f837790de75df3b797b92dbf66e24e3a8107
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/genre/fantasy.txt
@@ -0,0 +1,264 @@
+Abdul Qadim Haqq
+Adam Rex
+Adrian Smith
+Alan Gutierrez
+Alan Lee
+Alan M. Clark
+Alexander Kostetsky
+Alicia Austin
+André Vazzios
+Angus McBride
+Anne Stokes
+Ann Mari Sjögren
+Arthur Rackham
+Attila Adorjany
+Barclay Shaw
+Baron von Lind
+Barry Windsor-Smith
+Ben Wootten
+Bob Eggleton
+Bob Larkin
+Boris Vallejo
+Brad W. Foster
+Brian Froud
+Brothers Hildebrandt
+Bruce Pennington
+Cam de Leon
+Carla Morrow
+Carl Blechen
+Carl Critchlow
+Carl Lundgren
+Carlo Bocchio
+Charles Vess
+Chris Achilléos
+Chris Baker
+Christopher Shy
+Chuck Whelon
+Cicely Mary Barker
+Ciruelo Cabral
+Clara Elsene Peck
+Claudio Bergamin
+Cliff Nielsen
+Clive Barker
+Clyde Caldwell
+Craig Mullins
+Cyril Parfitt
+Dærick Gröss Sr.
+Daniel Dos Santos
+Daniel Maclise
+Danny Flynn
+Darrell K. Sweet
+Dave Dorman
+David A. Trampier
+David B. Mattingly
+David C. Sutherland III
+Davidé Fabbri
+David S. LaForce
+David Wenzel
+Diarmuid Byron O'Connor
+Disney's Nine Old Men
+Donato Giancola
+Don Ivan Punchatz
+Don Maitz
+Earl Norem
+Edd Cartier
+Edmund Dulac
+Edward Frederick Brewtnall
+Edward Mason Eggleston
+Érica Awano
+Erol Otus
+Fanny Cory
+Francis Tsai
+Frank Brunner
+Frank C. Papé
+Frank Frazetta
+Frank Walls
+Frank Wu
+Frazer Irving
+Fritz Baumgarten
+Gary Chalk
+Gary Ruddell
+Geoff Taylor
+George Barr
+George Underwood
+Gerald Brom
+Gervasio Gallardo
+Glenn Chadbourne
+Greg Broadmore
+Greg Hildebrandt
+Hajime Sorayama
+Harry Clarke
+Hayao Miyazaki
+Horus Engels
+H. R. Giger
+H. R. Millar
+H. R. Van Dongen
+Iain McCaig
+Ian Miller
+Ida Rentoul Outhwaite
+Ilene Meyer
+Ionicus
+Irvin Bomb
+J. Allen St. John
+James C. Christensen
+Jarosław Musiał
+Jasmine Becket-Griffith
+Jason Ebeyer
+Jean-Baptiste Monge
+Jean-Pascal Fournier
+Jean Pierre Targete
+Jeff Butler
+Jeff Dee
+Jeff Easley
+Jeff Laubenstein
+Jeff Miracola
+Jeffrey Catherine Jones
+Jef Murray
+Jennell Jaquays
+Jeremy Caniglia
+Jesper Myrfors
+Jessie Willcox Smith
+Jill Bauman
+Jim Fitzpatrick
+Jim Roslof
+Jody Lee
+Joe Jusko
+John Anster Fitzgerald
+John Atkinson Grimshaw
+John Blanche
+John Dollar
+John Giunta
+John Howe
+John Jude Palencar
+John Picacio
+John Sibbick
+John Zeleznik
+Jon Foster
+Joseph Noel Paton
+Josh Kirby
+J. R. R. Tolkien
+Julie Bell
+Julie Dillon
+Jurgen Ziewe
+Kamome Shirahama
+Kay Nielsen
+Keith Parkinson
+Kelly Freas
+Ken Kelly
+Kevin Long
+Kevin Siembieda
+Kevin Wasden
+Kev Walker
+Kinuko Y. Craft
+Kyle S. Hunter
+Kylie InGold
+Larry Dixon
+Larry Elmore
+Laura Roslof
+Lee Brown Coye
+Lee Moyer
+Leo and Diane Dillon
+Leo Hao
+Les Edwards
+Liz Danforth
+Lubov
+Lucio Parrillo
+Luis Royo
+Magali Villeneuve
+Makoto Shinkai
+Marcelo Cassaro
+Margaret Brundage
+Mark Poole
+Mark Smylie
+Mark Zug
+Martin Hanford
+Matt Cavotta
+Matt Fox
+Matt Stawicki
+Max Magnus Norman
+Meredith Dillman
+Michael Fishel
+Michael Kaluta
+Michael Parkes
+Michael Whelan
+Mike Ploog
+Monte Michael Moore
+Murray Tinkelman
+Naohisa Inoue
+Naoyuki Kato
+Nathália Suellen
+Ned Dameron
+Nene Thomas
+Nina Petrovna Valetova
+Oscar Chichoni
+Patrick J. Jones
+Patrick Woodroffe
+Paul Bonner
+Pauline Baynes
+Paul Julian
+Paul Kidby
+Paul Youll
+Petar Meseldžija
+Peter Andrew Jones
+Peter Lloyd
+Quinton Hoover
+Rade Tovladijac
+Rafael Garres
+Randy Post
+Rebecca Guay
+Richard Anderson
+Richard Corben
+Richard Dadd
+Richard Doyle
+Robin Jacques
+Robin Wood
+Rodney Matthews
+Roger Dean
+Roger Hane
+Roger Raupp
+Romas Kukalis
+Ron Spencer
+Ron Walotsky
+Rovina Cai
+Rowena Morrill
+Russ Nicholson
+Scott Gustafson
+Seb McKinnon
+Shusei Nagaoka
+Sidney Sime
+Stephanie Pui-Mun Law
+Stephan Martinière
+Stephen Fabian
+Stephen Hickman
+Stephen Youll
+Steve Ellis
+Steve Fiorilla
+Susan Van Camp
+Taehoon Oh
+Ted Nasmith
+Terese Nielsen
+Thomas Canty
+Thomas Kidd
+Tim Bradstreet
+Tim Hildebrandt
+Timothy Truman
+Tim White
+Todd Lockwood
+Tom Grindberg
+Tom Wham
+Tony DiTerlizzi
+Vena Kava
+Veronica V. Jones
+Vicente Segrelles
+Vincent Di Fate
+Vincent Dutrait
+Virgil Finlay
+Warwick Goble
+Wayne Barlowe
+Wendy Froud
+William M. Timlin
+William Stout
+Wojciech Siudmak
+Yasuyuki Honne
+__artists/genre/fantasy/tolkien__
+Yoshitaka Amano
diff --git a/ex/dynamic-prompts/collections/artists/genre/fantasy/tolkien.txt b/ex/dynamic-prompts/collections/artists/genre/fantasy/tolkien.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59341819fe32e409eb87cfae59859c85909e5f11
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/genre/fantasy/tolkien.txt
@@ -0,0 +1,36 @@
+Alan Lee
+Angus McBride
+Anke Eißmann
+Barbara Remington
+Brian Lee Durfee
+Brothers Hildebrandt
+Colleen Doran
+Daniel Falconer
+Darrell K. Sweet
+David Wenzel
+Eric Fraser
+Greg Hildebrandt
+Horus Engels
+Ian Miller
+Inger Edelfeldt
+Jack Gaughan
+Jef Murray
+Jenny Dolfen
+Jimmy Cauty
+John Blanche
+John Howe
+Lívia Rusz
+Margrethe II of Denmark
+Michael Hague
+Michael Kaluta
+Milein Cosman
+Molly Knox Ostertag
+Pauline Baynes
+Paul R. Gregory
+Rob Inglis
+Rodney Matthews
+Ted Nasmith
+Tim Hildebrandt
+Tim Kirk
+Tom Jung
+Tove Jansson
diff --git a/ex/dynamic-prompts/collections/artists/genre/horror.txt b/ex/dynamic-prompts/collections/artists/genre/horror.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1798631b65d1938c39a477091a235dfe74f16d88
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/genre/horror.txt
@@ -0,0 +1,40 @@
+Abby Howard
+Alan M. Clark
+Alex McVey
+Ashley Wood
+Basil Gogos
+Ben Templesmith
+Bernie Wrightson
+Bob Eggleton
+Caravaggio
+Charles Addams
+Clive Barker
+Dave Dorman
+Dave McKean
+Derek Riggs
+Eldritch
+Emily Carroll
+Eric Millikin
+Frank Wu
+Frazer Irving
+Gahan Wilson
+Gerald Brom
+H. R. Giger
+Jeff Lee Johnson
+Jill Bauman
+John Coulthart
+John Jude Palencar
+John Kenn Mortensen
+John Picacio
+Junji Ito
+Karoly Grosz
+Lee Brown Coye
+Les Edwards
+Otto Dix
+Sam Shearon
+Shinya Kumazaki
+Stephen Gammell
+Stephen Kasner
+Tim Jacobus
+T. M. Wright
+Virgil Finlay
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/anime.txt b/ex/dynamic-prompts/collections/artists/illustrations/anime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..08a7dbe5e0db184d7a89ca616f5f78eef658c949
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/anime.txt
@@ -0,0 +1,768 @@
+Yoshitoshi ABe (安倍 吉俊)
+Chako Abeno (阿倍野ちゃこ)
+Mitsuru Adachi (あだち 充)
+Tsutomu Adachi (あだち 勉)
+Tadashi Agi (亜樹 直)
+Wanyan Aguda (完顏阿骨打)
+Yu Aida (相田 裕)
+Koji Aihara (相原 コージ)
+Miki Aihara (相原 実貴)
+Mizuho Aimoto (愛本 みずほ)
+Haruka Aizawa (あいざわ 遥)
+Michiyo Akaishi (赤石 路代)
+Ken Akamatsu (赤松 健)
+Fujio Akatsuka (赤塚 不二夫)
+Katsu Aki (克・亜樹)
+Nami Akimoto (秋元 奈美)
+Osamu Akimoto (秋本 治)
+Matsuri Akino (秋乃 茉莉)
+George Akiyama (ジョージ 秋山)
+Tamayo Akiyama (秋山 たまよ)
+Risu Akizuki (秋月 りす)
+Akira Amano (天野 明)
+Kozue Amano (天野 こずえ)
+Shiro Amano (天野 シロ)
+Yōichi Amano (天野 洋一)
+Yoshitaka Amano (天野 喜孝)
+Mogura Anagura (あなぐらもぐら)
+Masahiro Anbe (安部 真弘)
+Jiro Ando (安藤慈朗)
+Natsumi Ando (安藤 なつみ)
+Yuma Ando (安藤 夕馬)
+Moyoco Anno (安野 モヨコ)
+Nobuyuki Anzai (安西 信行)
+Futaba Aoi (葵 二葉)
+Yasuko Aoike (青池 保子)
+Kotomi Aoki (青木 琴美)
+Mitsue Aoki (青木 光恵)
+Takao Aoki (青木 たかお)
+Ume Aoki (蒼樹 うめ)
+Yūji Aoki (青木 雄二)
+Takako Aonuma (青沼貴子)
+Gosho Aoyama (青山 剛昌)
+Hideki Arai (新井 秀樹)
+Kiyoko Arai (あらい きよこ)
+Hiromu Arakawa (荒川 弘)
+Naoshi Arakawa (新川 直司)
+Hirohiko Araki (荒木 飛呂彦)
+Kanao Araki (あらきかなお)
+Keiichi Arawi (あらゐけいいち)
+Keitarō Arima (有馬 啓太郎)
+Kyoko Ariyoshi (有吉 京子)
+Hiroshi Aro (田母神慈宏)
+Hiroyuki Asada (浅田 弘幸)
+Sakura Asagi (あさぎ 桜)
+Yū Asagiri (あさぎり 夕)
+Yuya Asahina (朝比奈 ゆうや)
+Masashi Asaki (朝基 まさし)
+George Asakura (ジョージ朝倉)
+Kia Asamiya (麻宮 騎亜)
+Inio Asano (浅野 いにお)
+Hinako Ashihara (芦原 妃名子)
+Hitoshi Ashinano (芦奈野 ひとし)
+Haro Aso (麻生羽呂)
+Izumi Aso (麻生 いずみ)
+Min Ayahana (彩花 みん)
+Rando Ayamine (綾峰 欄人)
+Hideo Azuma (吾妻 ひでお)
+Kiyohiko Azuma (あずま きよひこ)
+Mayumi Azuma (東 まゆみ)
+Ryō Azumi (あずみ 椋)
+B
+Ippongi Bang (一本木 蛮)
+Daichi Banjou (万乗大智)
+Barasui (ばらスィ)
+Boichi
+Frédéric Boilet (フレデリック・ボワレ)
+Buronson (武論 尊)
+C
+Carnelian
+Tartan Check (たあたんちぇっく)
+Akio Chiba (ちばあきお or 千葉 亜喜生)
+Kiyokazu Chiba (千葉きよかず or 千葉潔和名義)
+Tetsuya Chiba (ちば てつや)
+Nanae Chrono (黒乃 奈々絵)
+E
+Tatsuya Egawa (江川 達也)
+Hisashi Eguchi (江口 寿志)
+Eiki Eiki (影木 栄貴)
+Tatsuma Ejiri (江尻 立真)
+Emura (絵夢羅)
+Hiroki Endo (遠藤 浩輝)
+Shunji Enomoto (榎本俊二)
+Kei Enue (えぬえ けい)
+Est em (えすとえむ)
+F
+Mihona Fujii (藤井 みほな)
+Rino Fujii (藤井理乃)
+Tatsuki Fujimoto (藤本 タツキ)
+Ryu Fujisaki (藤崎 竜)
+Tooru Fujisawa (藤沢 とおる)
+Kōsuke Fujishima (藤島 康介)
+Kazuhiro Fujita (藤田 和日郎)
+Kazuko Fujita (藤田 和子)
+Maguro Fujita (藤田 まぐろ)
+Cocoa Fujiwara (藤原 ここあ)
+Hiro Fujiwara (藤原 ヒロ)
+Yoshihide Fujiwara (藤原芳秀)
+Tsubasa Fukuchi (福地翼)
+Eiichi Fukui (福井 英一)
+Nobuyuki Fukumoto (福本伸行)
+Haruka Fukushima (フクシマ ハルカ)
+Sho Fumimura (史村 翔)
+Kou Fumizuki (文月 晃)
+Haruichi Furudate (古舘 春一)
+Minoru Furuya (古谷 実)
+Mitsutoshi Furuya (古谷三敏)
+Usamaru Furuya (古屋 兎丸)
+Fujiko Fujio (ふじお ふじ)
+G
+Hiroshi Gamō (ガモウひろし)
+Keiji Gotoh (後藤圭二)
+GotoP (ごとP)
+H
+Moto Hagio (萩尾 望都)
+Kazushi Hagiwara (萩原 一至)
+Ryusuke Hamamoto (畑中 純)
+Youko Hanabusa (英 洋子)
+Pink Hanamori (花森 ぴんく)
+Kazuichi Hanawa (花輪和一)
+Hidenori Hara (原秀則)
+Taira Hara (はら たいら)
+Tetsuo Hara (原 哲夫)
+Yutaka Hara (原 ゆたか)
+Sunao Hari (針 すなお)
+Etsumi Haruki (はるき 悦巳)
+Shohei Harumoto (東本 昌平)
+Nanae Haruno (榛野 なな恵)
+Nana Haruta (春田なな)
+Machiko Hasegawa (長谷川 町子)
+Takashi Hashiguchi (橋口 たかし)
+Mitsuo Hashimoto (はしもと みつお or 橋本 光男)
+Kenjiro Hata (畑 健二郎)
+Jun Hatanaka (畑中 純)
+Bisco Hatori (葉鳥 ビスコ)
+Akiko Hatsu (波津 彬子)
+Mitsuru Hattori (はっとりみつる)
+Miki Hayasaka (早坂未紀)
+Fumino Hayashi (林 ふみの)
+Q Hayashida (林田 球)
+Shizuru Hayashiya (林家 志弦)
+Reine Hibiki (ひびき 玲音)
+Yukari Higa (緋賀 ゆかり)
+Akiko Higashimura (東村 アキコ)
+Asa Higuchi (ひぐち アサ)
+Daisuke Higuchi (樋口 大輔)
+Tachibana Higuchi (樋口 橘)
+You Higuri (氷栗 優)
+Aoi Hiiragi (柊 あおい)
+Hidekaz Himaruya (日丸屋 秀和)
+Akira Himekawa (姫川 明)
+Hideshi Hino (日野 日出志)
+Matsuri Hino (樋野 まつり)
+Hisashi Hirai (平井久司)
+Kouta Hirano (平野 耕太)
+Hiroshi Hirata (平田 弘史)
+Rei Hiroe (広江 礼威)
+Kenshi Hirokane (弘兼 憲史)
+Hiroyuki (artist)
+Tatsuya Hiruta (蛭田達也)
+Saki Hiwatari (日渡 早紀)
+Tsukasa Hojo (北条 司)
+Yutori Hōjō (方條 ゆとり)
+Yukine Honami (穂波 ゆきね)
+Yuji Horii (堀井 雄二)
+Kōhei Horikoshi (堀越 耕平)
+Katsura Hoshino (星野 桂)
+Kōichirō Hoshino (星野倖一郎)
+Lily Hoshino (星野 リリィ)
+Yukinobu Hoshino (星野 之宣)
+Mochiru Hoshisato (星里 もちる)
+Chieko Hosokawa (細川 智栄子)
+Fujihiko Hosono (細野 不二彦)
+Yumi Hotta (ほった ゆみ)
+I
+Yukari Ichijo (一条 ゆかり)
+Masato Ichishiki (一式 まさと)
+Aguri Igarashi (五十嵐 あぐり)
+Daisuke Igarashi (五十嵐 大介)
+Mikio Igarashi (いがらし みきお)
+Satsuki Igarashi (いがらし 寒月)
+Yumiko Igarashi (いがらし ゆみこ)
+Akihisa Ikeda (池田晃久)
+Riyoko Ikeda (池田 理代子)
+Ryoichi Ikegami (池上 遼一)
+Gō Ikeyamada (池山田 剛)
+Satomi Ikezawa (池沢理美)
+Ryo Ikuemi (いくえみ 綾)
+Mia Ikumi (征海 未亜)
+Ichiko Ima (今 市子)
+Kami Imai (今井 神)
+Koji Inada (稲田 浩司)
+Riichiro Inagaki (稲垣 理一郎)
+Kazurou Inoue (井上 和郎)
+Santa Inoue (井上 三太)
+Takehiko Inoue (井上 雄彦)
+Kira Inugami (狗神 煌)
+Sekihiko Inui (犬威赤彦)
+Hajime Isayama (諫山 創)
+Sui Ishida (石田 スイ)
+Hisaichi Ishii (いしい ひさいち)
+Takashi Ishii (石井 隆)
+Ken Ishikawa (石川 賢)
+Yūgo Ishikawa (石川優吾)
+Shotaro Ishinomori (石ノ森 章太郎)
+Osamu Ishiwata (石渡 治)
+Makoto Isshiki (一色まこと)
+Isutoshi (いすとし)
+Keisuke Itagaki (板垣 恵介)
+Akihiro Ito (伊藤 明弘)
+Akira Itō (伊藤 彰)
+Junji Ito (伊藤 潤二)
+Noizi Ito (いとうのいぢ)
+Takehiko Ito (伊東 岳彦)
+Risa Itō (伊藤 理佐)
+Shimpei Itoh (伊藤 伸平)
+Natsumi Itsuki (樹 なつみ)
+Hitoshi Iwaaki (岩明 均)
+Mariko Iwadate (岩館 真理子)
+Yuji Iwahara (岩原 裕二)
+Hisae Iwaoka (岩岡ヒサエ)
+Takashi Iwashige (いわしげ 孝)
+Toshiaki Iwashiro (岩代 俊明)
+Mann Izawa (井沢 満)
+Kaneyoshi Izumi (和泉 かねよし)
+J
+Judal (ジュダル)
+K
+Yuna Kagesaki
+Naoyuki Kageyama (影山 なおゆき)
+Shintaro Kago
+Hiroyuki Kaidō
+Sōsuke Kaise
+Shinobu Kaitani (甲斐谷忍)
+Ikki Kajiwara
+Kakifly (creator of K-On!)
+Narumi Kakinouchi (垣野内 成美)
+Teruo Kakuta
+Yuhki Kamatani
+Atsushi Kamijo (上條 敦士)
+Akimine Kamijyo (上条 明峰)
+Futago Kamikita (上北実那)
+Kazuo Kamimura
+Yoko Kamio (神尾 葉子)
+Yozaburo Kanari (金成 陽三郎)
+Akira Kanbe
+Muneyuki Kaneshiro (金城宗幸)
+Aya Kanno
+Yasuhiro Kanō
+Masaomi Kanzaki (神崎 将臣)
+Junko Karube
+Manavu Kashimoto
+Kazue Kato (加藤和恵)
+Kazuhiko Kato (加藤 一彦)
+Motohiro Katou
+Susumu Katsumata
+Masakazu Katsura (桂 正和)
+Yukimaru Katsura
+Kaiji Kawaguchi (かわぐち かいじ)
+Kazune Kawahara
+Masatoshi Kawahara
+Yumiko Kawahara (川原 由美子)
+Mika Kawamura (川村 美香)
+Noboru Kawasaki (川崎 のぼる)
+Tadashi Kawashima
+Mizuki Kawashita (河下 水希)
+Kazumi Kazui
+Funatsu Kazuki (一輝ふなつ)
+Maki Kazumi
+Izumi Kazuto
+Toshie Kihara
+Moto Kikaku
+Minori Kimura
+Sakura Kinoshita
+Shimoku Kio
+Yuki Kiriga
+Izumi Kirihara
+Kōji Kiriyama
+Masashi Kishimoto (岸本 斉史)
+Seishi Kishimoto (岸本 聖史)
+Yukito Kishiro (木城 ゆきと)
+Miyuki Kitagawa
+Taku Kitazaki (北崎 拓)
+Rakuten Kitazawa (北沢 楽天)
+En Kitō
+Mohiro Kitoh
+Mohiro Kitoh (鬼頭 莫宏)
+Kazuhiro Kiuchi
+Totan Kobako
+Jin Kobayashi (小林 尽)
+Kentarō Kobayashi
+Kiyochika Kobayashi (小林 清親)
+Makoto Kobayashi (小林 まこと)
+Miyuki Kobayashi (小林 深雪)
+Motofumi Kobayashi
+Toshihiko Kobayashi
+Yoshinori Kobayashi (小林 善範)
+Kazuma Kodaka
+Koge-Donbo (コゲどんぼ)
+Kazuo Koike
+Maya Koikeda
+Akira Kojima
+Goseki Kojima (小島 剛夕)
+Kō Kojima
+Naoshi Komi (古味直志)
+Ayumi Komura
+Satoshi Kon (今 敏)
+Fumiyo Kōno
+Takeshi Konomi (許斐 剛)
+Rikdo Koshi
+Tsukasa Kotobuki (ことぶき つかさ)
+Yun Kouga (高河 ゆん)
+Keito Koume
+Hirano Kouta (平野 耕太)
+Yū Koyama (小山 ゆう)
+Tite Kubo (久保 帯人)
+Eisaku Kubonouchi
+Masashi Kudō
+Kōji Kumeta (久米田 康治)
+Shosuke Kurakane (倉金 章介)
+Fusako Kuramochi (くらもち ふさこ)
+Yuki Kure
+Yōji Kuri
+Iou Kuroda (黒田 硫黄)
+Masami Kurumada (車田 正美)
+Hidenori Kusaka (日下 秀憲)
+Nari Kusakawa
+Kei Kusunoki (楠 桂)
+Michiharu Kusunoki
+Jiro Kuwata (桑田 二郎)
+M
+Henmaru Machino (町野 変丸)
+Jun Maeda (麻枝 准)
+Toshio Maeda
+Takeshi Maekawa (前川 たけし)
+Miyako Maki (牧 美也子)
+Yoko Maki (槙 ようこ)
+Johji Manabe
+Suehiro Maruo (丸尾 末広)
+Usune Masatoshi
+Hiro Mashima (真島 ヒロ)
+Kōsuke Masuda
+Hiroshi Masumura
+Sanami Matoh (真東 砂波)
+Yūsei Matsui
+Izumi Matsumoto (まつもと 泉)
+Jiro Matsumoto (松本 次郎)
+Katsuji Matsumoto
+Leiji Matsumoto (松本 零士)
+Nina Matsumoto
+Taiyo Matsumoto (松本 大洋)
+Temari Matsumoto (松本 テマリ)
+Tomo Matsumoto (マツモト トモ)
+Akemi Matsunae
+Hino Matsuri (樋野 まつり)
+Susumu Matsushita (松下 進)
+Tokihiko Matsuura (松浦聡彦)
+Seiji Matsuyama (松山 せいじ)
+Mineo Maya (魔夜峰央)
+Meimu
+Yuki Midorikawa
+Mitsukazu Mihara
+Rei Mikamoto
+Haruhiko Mikimoto
+Ryoji Minagawa (皆川 亮二)
+Kazuka Minami (南 かずか)
+Maki Minami
+Yū Minamoto
+Suu Minazuki
+Nobuaki Minegishi
+Kazuya Minekura (峰倉 かずや)
+Juri Misaki
+Norifusa Mita (三田紀房)
+Ryūsuke Mita
+Takuya Mitsuda (満田 拓也)
+Suzue Miuchi (美内 すずえ)
+Kentaro Miura (三浦 建太郎)
+Mitsuru Miura (三浦 みつる)
+Shirow Miwa
+Riko Miyagi (宮城 理子)
+Tomochika Miyano
+Kaho Miyasaka (宮坂 香帆)
+Hayao Miyazaki (宮崎 駿)
+Hakase Mizuki
+Kyoko Mizuki (水木 杏子)
+Shigeru Mizuki (水木 しげる)
+Eita Mizuno
+Hideko Mizuno (水野 英子)
+Junko Mizuno (水野 純子)
+Tohko Mizuno
+Megumi Mizusawa (水沢めぐみ)
+Shinji Mizushima
+Setona Mizushiro (水城 せとな)
+Jun Mochizuki (望月 淳)
+Mokona
+Takeaki Momose
+Hideki Mori
+Kaoru Mori (森 薫)
+Taishi Mori (モリ タイシ)
+George Morikawa (森川 ジョージ)
+Ai Morinaga (森永 あい)
+Milk Morinaga
+Morishige
+Masanori Morita(森田 まさのり
+Daisuke Moriyama (森山 大輔)
+Milk Morizono (森園 みるく)
+Daijiro Morohoshi (諸星 大二郎)
+Hagio Moto (萩尾望都)
+Kyousuke Motomi (Creator of Dengeki Daisy)
+Natsumi Mukai (迎 夏生)
+Kenichi Muraeda
+Glen Murakami (水沢めぐ帆)
+Maki Murakami (村上 真紀)
+Motoka Murakami (村上 もとか)
+Range Murata
+Yusuke Murata (Illustrator of Eyeshield 21 and One Punch Man)
+Wataru Murayama
+Mayumi Muroyama
+N
+Go Nagai (永井 豪)
+Mamoru Nagano
+Shinji Nagashima
+Takeru Nagayoshi
+An Nakahara
+Aya Nakahara (中原アヤ)
+Masahiko Nakahira
+Tsuyoshi Nakaima
+Hisaya Nakajo (中条 比紗也)
+Hikaru Nakamura (Creator of Saint Young Men and Arakawa Under the Bridge)
+Shungiku Nakamura (Creator of Junjou Romantica and Sekai-ichi Hatsukoi)
+Yoshiki Nakamura (仲村佳樹)
+Nio Nakatani (仲谷鳰)
+Keiji Nakazawa
+Shingo Nanami
+Kiriko Nananan (魚喃 キリコ)
+Aoi Nanase (七瀬 葵)
+Akira Narita
+Hanaharu Naruko
+Yuri Narushima (なるしま ゆり)
+Yoshinori Natsume (夏目 義徳)
+Tsubaki Nekoi
+Nekojiru
+Yasuhiro Nightow (内藤 泰弘)
+Tsutomu Nihei (弐瓶 勉)
+Tomoko Ninomiya
+Keiko Nishi (西 炯子)
+Yoshiyuki Nishi
+Hiroyuki Nishimori
+Sou Nishimura
+Yoshinobu Nishizaki
+Youka Nitta
+Makoto Niwano
+Toshio Nobe
+Shinbo Nomura
+Eiji Nonaka (野中 英次)
+Charlie Nozawa
+O
+Miho Obana (小花 美穂)
+Takeshi Obata (小畑 健)
+Eiichiro Oda (尾田 栄一郎)
+Hideji Oda
+Etsushi Ogawa (小川 悦司)
+Akane Ogura (小椋アカネ)
+Saori Oguri (小栗 左多里)
+Tsuyoshi Ōhashi
+Tsugumi Ohba (大場 つぐみ)
+Oh! great aka Ito Ogure (大暮 維人)
+Mineko Ohkami (押上 美猫)
+Nanase Ohkawa
+Shinobu Ohtaka
+Kendi Oiwa
+Hiroi Oji
+Megumu Okada
+Okama
+Lynn Okamoto (岡本 倫)
+Reiko Okano (岡野 玲子)
+Takeshi Okano
+Kyoko Okazaki (岡崎 京子)
+Mari Okazaki (おかざき真里)
+Takashi Okazaki (Creator of Afro Samurai)
+Hiroya Oku (奥 浩哉)
+Atsushi Ōkubo (Creator of Soul Eater and Fire Force)
+Hitoshi Okuda (奥田 ひとし)
+One (Creator of One Punch Man, Mob Psycho 100 and Makai No Ossan)
+Hiromu Ono (小野弥夢)
+Natsume Ono
+Toshihiro Ono (小野 敏洋)
+Mamoru Oshii (押井守)
+Towa Oshima (大島 永遠)
+Yasuichi Oshima
+Yumiko Ōshima
+Katsuhiro Otomo (大友 克洋)
+Minami Ozaki (尾崎 南)
+Mari Ozawa
+Akira Oze
+R
+Marimo Ragawa (羅川 真里茂)
+Makoto Raiku (雷句 誠)
+Ryō Ramiya (蘭宮 涼)
+Koshi Rikdo (六道 神士 Rikudō Kōshi)
+Robico (ろびこ)
+Noboru Rokuda (六田登)
+S
+Yoshiyuki Sadamoto (貞本 義行)
+Fumi Saimon (柴門 ふみ)
+Chiho Saito (さいとう ちほ)
+Takao Saito (さいとう たかを)
+Rin Saitō
+Mayu Sakai
+Yasuko Sakata (坂田 靖子)
+Ken'ichi Sakemi
+Harold Sakuishi
+Ashika Sakura (さくら あしか)
+Momoko Sakura (さくら ももこ)
+Koharu Sakuraba
+Kanoko Sakurakoji (桜小路 かのこ)
+Minene Sakurano
+Erica Sakurazawa (桜沢 エリカ)
+Hiroaki Samura (沙村 広明)
+Riku Sanjo (三条 陸)
+Tetsuya Saruwatari
+Hiroshi Sasagawa
+Ryo Sasaki
+Ayato Sasakura
+Daisuke Satō (Co-creator of Highschool of the Dead)
+Shio Satō (佐藤 史生)
+Shōji Satō (Co-creator of Highschool of the Dead)
+Shūhō Satō
+Machiko Satonaka (里中 満智子)
+Yoshio Sawai (澤井 啓夫)
+Shizuru Seino (清野 静流)
+Kōji Seo
+Takako Shigematsu
+Shuichi Shigeno (しげの 秀一)
+Hiroshi Shiibashi (椎橋寛)
+Ayumi Shiina (椎名 あゆみ)
+Takashi Shiina
+Satoshi Shiki
+Mitsutoshi Shimabukuro
+Kazuhiko Shimamoto (島本 和彦)
+Reiko Shimizu (清水 玲子)
+Yuki Shimizu (志水 ゆき)
+Takako Shimura
+Rize Shinba (神葉 理世)
+Mayu Shinjo (新條まゆ)
+Chie Shinohara (篠原 千絵)
+Tōru Shinohara (篠原とおる)
+Mizuo Shinonome
+Hiromu Shinozuka
+Kaoru Shintani (新谷 かおる)
+Motoei Shinzawa (新沢 基栄)
+Etorouji Shiono (塩野干支郎次)
+Yuji Shiozaki
+Kaiu Shirai (白井 カイウ)
+Sanpei Shirato (白土 三平)
+Kotobuki Shiriagari (しりあがり 寿)
+Masamune Shirow (士郎 正宗)
+Yōko Shōji
+Kouyu Shurei (珠黎 こうゆ)
+Smelly
+Masahito Soda (曽田 正人)
+Toshinori Sogabe
+Kenichi Sonoda (園田 健一)
+Mitsuyoshi Sonoda (園田 光慶)
+Hideaki Sorachi (空知 英秋)
+Fuyumi Soryo (惣領 冬実)
+Keiko Suenobu
+Yuki Suetsugu
+Mitsuru Sugaya
+Ken Sugimori
+Yukiru Sugisaki (杉崎 ゆきる)
+Hinako Sugiura
+Shigeru Sugiura (杉浦 茂)
+Shiho Sugiura
+Natsuki Sumeragi (皇 なつき)
+Yukiko Sumiyoshi
+Hiro Suzuhira
+Jirō Suzuki
+Julietta Suzuki
+Nakaba Suzuki (鈴木 央)
+Atsushi Suzumi
+Karin Suzuragi
+T
+Yūki Tabata (田畠裕基)
+Higuchi Tachibana (樋口 橘)
+Yutaka Tachibana (橘裕)
+Haruko Tachiiri (たちいり ハルコ)
+Megumi Tachikawa (立川 恵)
+Kaoru Tada (多田 かおる)
+Gengoroh Tagame (田亀 源五郎)
+Suihō Tagawa (田河 水泡)
+Akemi Takada (高田明美)
+Rie Takada (高田 りえ)
+Yuzo Takada (高田 裕三)
+Nobuyuki Takagi (高木 信孝)
+Hiroshi Takahashi (高橋 ヒロシ)
+Kazuki Takahashi (高橋 和希)
+Koji Takahashi (高橋 幸慈)
+Rumiko Takahashi (高橋 留美子)
+Shin Takahashi (高橋 しん)
+Tsutomu Takahashi (高橋 ツトム)
+Yoichi Takahashi (高橋 陽一)
+Yoshihiro Takahashi (高橋よしひろ)
+Yōsuke Takahashi (高橋 葉介)
+Ryo Takamisaki (鷹岬 諒)
+Hinako Takanaga (高永 ひなこ)
+Mitsuba Takanashi (高梨 みつば)
+Shizue Takanashi (たかなししずえ)
+Ichigo Takano (高野苺)
+Hiroshi Takashige (たかしげ 宙)
+Kazusa Takashima (高嶋 上総)
+Misako Takashima, most known as Misako Rocks!
+Rica Takashima (高嶋 リカ)
+Natsuki Takaya (高屋 奈月)
+Yoshiki Takaya (高屋 良樹)
+Hiroyuki Takei (武井 宏之)
+Kentaro Takekuma (竹熊 健太郎)
+Keiko Takemiya (竹宮 惠子)
+Izumi Takemoto (竹本 泉)
+Mick Takeuchi (竹内未来)
+Naoko Takeuchi (武内 直子)
+Takashi Takeuchi (武内 崇)
+Tony Takezaki (トニーたけざき)
+Namuchi Takumi (たくみなむち)
+Hiroyuki Tamakoshi (玉越 博幸)
+Ryūhei Tamura (田村 隆平)
+Shigeru Tamura (田村 茂)
+Yumi Tamura (田村 由美)
+Yellow Tanabe (田辺イエロウ)
+Kunihiko Tanaka (田中 久仁彦)
+Masashi Tanaka (田中政志)
+Arina Tanemura (種村 有菜)
+Tomoko Taniguchi (たにぐち 智子)
+Jirō Taniguchi (谷口 ジロー)
+Makoto Tateno (立野 真琴)
+Retsu Tateo (館尾冽)
+Yoshihiro Tatsumi (辰巳 ヨシヒロ)
+Katsuya Terada (寺田 克也)
+Yuji Terajima (寺嶋 裕二)
+Buichi Terasawa (寺沢 武一)
+Daisuke Terasawa (寺沢大介)
+Reiko Terashima (寺島令子)
+Yū Terashima (寺島優)
+Takashi Teshirogi (てしろぎ たかし)
+Osamu Tezuka (手塚 治虫)
+Keiko Tobe (戸部 けいこ)
+Yana Toboso (枢 やな)
+Izumi Tōdō (東堂 いづみ)
+Yoshihiro Togashi (冨樫 義博)
+Hari Tokeino (時計野 はり)
+Kōichi Tokita (ときた 洸一)
+Masaya Tokuhiro (徳弘正也)
+Hitoshi Tomizawa (富沢 ひとし)
+Tono (との)
+Yoshiki Tonogai (外海良基)
+Miki Tori (とり·みき)
+Akira Toriyama (鳥山 明)
+Kei Toume (冬目 景)
+Ema Tōyama (遠山 えま)
+Masami Tsuda (津田 雅美)
+Mikiyo Tsuda (つだみきよ)
+Yoshiharu Tsuge (つげ 義春)
+Yumi Tsukirino (つきりの ゆみ)
+Sakura Tsukuba (筑波 さくら)
+Jirō Tsunoda (つのだ じろう)
+Tsunomaru (つの丸)
+Kenji Tsuruta (鶴田 謙二)
+Midorikawa Tsuyoshi (緑川毅志)
+U
+Shungicu Uchida
+Hajime Ueda
+Masashi Ueda (植田 まさし)
+Miwa Ueda (上田 美和)
+Rinko Ueda (上田 倫子)
+Toshiko Ueda
+Kimiko Uehara
+Riichi Ueshiba
+U-Jin (遊人)
+Haruto Umezawa
+Kazuo Umezu (楳図 かずお)
+Chica Umino (羽海野 チカ)
+Akinobu Uraka
+Naoki Urasawa (浦沢 直樹)
+Yuki Urushibara (漆原 友紀)
+Satoshi Urushihara
+Satoshi Urushihara (うるし原 智志)
+Yoshito Usui (臼井 儀人)
+Kyosuke Usuta
+Hiroyuki Utatane (うたたね ひろゆき)
+W
+Shinji Wada
+Tamiki Wakaki
+Masako Watanabe (わたなべ まさこ)
+Taeko Watanabe (渡辺 多恵子)
+Seizō Watase
+Yuu Watase (渡瀬 悠宇)
+Kaworu Watashiya
+Nobuhiro Watsuki (和月 伸宏)
+Y
+Yuu Yabuchi (やぶうち 優)
+Kentaro Yabuki (矢吹 健太朗)
+Chitose Yagami (八神千歳)
+Hiroki Yagami (八神 ひろき)
+Yu Yagami (矢上 裕)
+Norihiro Yagi (八木 教広)
+Kou Yaginuma (柳沼行)
+Akihiro Yamada (山田 章博)
+J-ta Yamada (山田J太)
+Keiko Yamada (山田 圭子)
+Murasaki Yamada (やまだ紫)
+Nanpei Yamada (山田 南平)
+Reiji Yamada (山田玲司)
+Ryoko Yamagishi (山岸 凉子)
+Masakazu Yamaguchi (山口 譲司)
+Tsubasa Yamaguchi (山口つばさ)
+Ebine Yamaji (やまねえびね)
+Hideo Yamamoto (山本 英夫)
+Naoki Yamamoto (山本 直樹)
+Satoshi Yamamoto (山本サトシ)
+Sumika Yamamoto (山本 鈴美香)
+Yamato Yamamoto (山本ヤマト)
+Yasuhito Yamamoto (山本康人)
+Ayano Yamane (やまね あやの or 山根 綾乃)
+Sharin Yamano (山野車輪)
+Jūzō Yamasaki (やまさき 十三)
+Ikuto Yamashita (山下 いくと)
+Kazumi Yamashita (manga artist)
+Waki Yamato (大和 和紀)
+Housui Yamazaki (山崎 峰水)
+Kimio Yanagisawa (柳沢 きみお)
+Takashi Yanase (やなせ たかし)
+Kentarō Yano (矢野 健太郎)
+Yasu (ヤス (イラストレーター)
+Suzuhito Yasuda (ヤスダ スズヒト)
+Yoshikazu Yasuhiko (安彦 良和)
+Kōichirō Yasunaga (安永航一郞)
+Chao Yat (草日)
+Ai Yazawa (矢沢 あい)
+Nao Yazawa (谷沢 直)
+Mitsuteru Yokoyama (横山 光輝)
+Hideyuki Yonehara (米原 秀幸)
+Yoshihiro Yonezawa (米澤 嘉博)
+Akimi Yoshida (吉田 秋生)
+Tatsuo Yoshida (吉田 竜夫)
+Miki Yoshikawa (吉河 美希)
+Kagami Yoshimizu (美水 かがみ)
+Fumi Yoshinaga (よしなが ふみ)
+Akihito Yoshitomi (吉富 昭仁)
+Mine Yoshizaki (吉崎 観音)
+Seimu Yoshizaki (芳崎 せいむ)
+Wataru Yoshizumi (吉住 渉)
+Toshiki Yui (唯 登詩樹)
+Kaori Yuki (由貴 香織里)
+Masami Yuki (ゆうき まさみ)
+Nobuteru Yūki (結城 信輝)
+Yukiwo (ユキヲ)
+Makoto Yukimura (幸村 誠)
+Sumomo Yumeka (夢花 李)
+Tsutae Yuzu (つたえ ゆず)
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a067c2381ff610f1087a5f7333be50ad3069a963
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books.txt
@@ -0,0 +1,16 @@
+__artists/illustrations/childrens_books/american_illustrators__
+__artists/illustrations/childrens_books/argentine_illustrators__
+__artists/illustrations/childrens_books/australian_illustrators__
+__artists/illustrations/childrens_books/austrian_illustrators__
+__artists/illustrations/childrens_books/belgian_illustrators__
+__artists/illustrations/childrens_books/brazilian_illustrators__
+__artists/illustrations/childrens_books/british_illustrators__
+__artists/illustrations/childrens_books/bulgarian_illustrators__
+__artists/illustrations/childrens_books/canadian_illustrators__
+__artists/illustrations/childrens_books/chinese_illustrators__
+__artists/illustrations/childrens_books/colombian_illustrators__
+__artists/illustrations/childrens_books/czech_illustrators__
+__artists/illustrations/childrens_books/danish_illustrators__
+__artists/illustrations/childrens_books/dutch_illustrators__
+__artists/illustrations/childrens_books/egyptian_ilustrators__
+__artists/illustrations/childrens_books/irish_illustrators__
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/american_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/american_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8bfc488c060ca52edef91fe21c0511a66634e66e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/american_illustrators.txt
@@ -0,0 +1,445 @@
+Aaron Becker
+Adam Rex
+Adrienne Adams
+Agnes Tait
+Al Hartley
+Alice and Martin Provensen
+Alice Bolam Preston
+Allen Say
+Alton Raible
+Al Wiseman
+Andy Luckey
+Anna Dewdney
+Ann Grifalconi
+Antonio Frasconi
+Antonio Sotomayor
+Anton Loeb
+Armstrong Sperry
+Arnold Lobel
+Arnold Spilka
+Ashley Bryan
+Austin Peck
+Barbara Cooney
+Barbara Latham
+Barbara McClintock
+Barry Johnson
+Beatien Yazz
+Ben Hatke
+Beni Montresor
+Bernarda Bryson Shahn
+Bernard Waber
+Berta and Elmer Hader
+Bessie Pease Gutmann
+Bethany Barton
+Beth Krommes
+Betsy Lewin
+Bill Peet
+Blair Lent
+Blanche Fisher Wright
+Bob Staake
+Bonibel Butler
+Bonnie Christensen
+Bonnie Shemie
+Brandon Dorman
+Brett Helquist
+Brian Biggs
+Brian Floca
+Brian Pinkney
+Brian Selznick
+Brock Cole
+Bruce Degen
+Carmen L. Browne
+Carole Byard
+Carol Heyer
+Carson Ellis
+Charles Buckles Falls
+Charles L. Bartholomew
+Charles Santore
+Charlotte Dean
+Charlotte Harding
+Chris Appelhans
+Chris Raschka
+Chris Soentpiet
+Christopher Denise
+Christopher Manson
+Christopher Myers
+Chris Van Allsburg
+Clara Elsene Peck
+Clare Turlay Newberry
+Clayton Knight
+Clement Hurd
+Clifford Beck
+Colleen Madden
+Corinne Malvern
+Corydon Bell
+Crockett Johnson
+Cyndy Szekeres
+Daniel Brustlein
+Dan Santat
+Dave Gantz
+Dave Keane
+David Biedrzycki
+David Catrow
+David Díaz
+David Macaulay
+David Shannon
+David Small
+David Wiesner
+David Wisniewski
+Dav Pilkey
+Denise Brunkus
+Denise Fleming
+Denys Cazet
+Diana Magnuson
+Diane Stanley
+Dirk Zimmer
+Donald Crews
+Donald Robertson
+Don Brown
+Don Freeman
+Don Tate
+Dorothy Grider
+Dorothy P. Lathrop
+Doug Cushman
+Dr. Seuss
+Dugald Stewart Walker
+Duncan Tonatiuh
+E. B. Bensell
+E. B. Lewis
+E. C. Stoner
+Ed Emberley
+Edgar Parin d'Aulaire
+Ed Young
+Eleanor Campbell
+Eleanore Barté
+Elenore Abbott
+Elizabeth Olds
+Elizabeth Orton Jones
+Elizabeth Shippen Green
+Eliza Wheeler
+Ellen Raskin
+Eloise Wilkin
+Emily Arnold McCully
+Emily Fiegenschuh
+Emily Winfield Martin
+Emma J. Virján
+Eric Rohmann
+Eric Shansby
+Erik P. Kraft
+Erin E. Stead
+Esther Averill
+Esther Brann
+Ethel Hays
+Eugene Yelchin
+Evaline Ness
+Ezra Jack Keats
+Fahmida Azim
+Fanny Cory
+Felicia Bond
+Feodor Stepanovich Rojankovsky
+Florence White Williams
+Frances Beem
+Francine Haskins
+Frank Tashlin
+Frederick Richardson
+Fritz Kredel
+Fritz Siebel
+Gahan Wilson
+Gail E. Haley
+Garth Williams
+Gene Barretta
+Geoffrey Hayes
+George and Doris Hauman
+Gerald Kelley
+Gerald McDermott
+Ginnie Hofmann
+Gisella Loeffler
+Glen Rounds
+Grace Paull
+Grant Snider
+Gris Grimly
+H. A. Rey
+Harold Berson
+Harry Bliss
+Helen Alden Knipe
+Helen Knipe Carpenter
+Helen Sewell
+Henry Cole
+Hilary Knight
+Hildegard Woodward
+Holly Keller
+Holly Meade
+Ida Waugh
+Ilse Plume
+Ingri and Edgar Parin d'Aulaire
+Innosanto Nagara
+Irene Lieblich
+Jackie Urbanovic
+Jack Kent
+Jacqueline Rogers
+James Daugherty
+James Horvath
+James Marshall
+James Ransome
+James Stevenson
+James Warhola
+Jan Berenstain
+Jan Brett
+Jane Aaron
+Jane Breskin Zalben
+Jane Dyer
+Janell Cannon
+Janina Domańska
+Jan Spivey Gilchrist
+Jason Chin
+Javaka Steptoe
+Jeanette Winter
+Jean Marzollo
+Jerome Lagarrigue
+Jerry Craft
+Jerry Pinkney
+Jessie Willcox Smith
+Jim Flora
+J. M. Condé
+Joan Holub
+John Alcorn
+John Parra
+John R. Neill
+John Robbins
+John Rocco
+John Schoenherr
+John Steptoe
+John Steven Gurney
+Jon J Muth
+Jon Klassen
+Joseph A. Smith
+Joseph Low
+J. Otto Seibold
+Joy Buba
+Judith Byron Schachner
+Judith Hunt
+Judith Inglese
+Julia Gran
+Kadir Nelson
+Karen Carr
+Karla Kuskin
+Karl Larsson
+Kate Seredy
+Katherine Milhous
+Kay Chorao
+Kaylani Juanita
+Keiko Kasza
+Kelly Murphy
+Kelly Oechsli
+Kevin Henkes
+Kinuko Y. Craft
+Kurt Werth
+Lane Smith
+Laura Freeman
+Laura Numeroff
+Laura Vaccaro Seeger
+Leo and Diane Dillon
+Leonard Everett Fisher
+Leonard Weisgard
+Leo Politi
+Leslie W. Bowman
+LeUyen Pham
+Lisa Brown
+Lois Ehlert
+Loren Long
+Lorin Morgan-Richards
+Loryn Brantz
+Louis Darling
+Louis Glanzman
+Louis Rhead
+Louis Slobodkin
+Lucy Fitch Perkins
+Ludwig Bemelmans
+Luther D. Bradley
+Lydia Louisa Anna Very
+Lynd Ward
+Lynne Avadenka
+Lynne Barasch
+Lynne Cherry
+Mabel Betsy Hill
+Maginel Wright Enright
+Maira Kalman
+Malcah Zeldis
+Manon Kahle
+Marc Brown
+Marcia Brown
+Marc Simont
+Margaret G. Hays
+Margot Austin
+Margot Tomes
+Margot Zemach
+Margret Rey
+Marie Hall Ets
+Marie Schubert
+Marjorie Priceman
+Marjorie Torrey
+Mark Buehner
+Mark Shasha
+Marla Frazee
+Martin Lemelman
+Mary Azarian
+Mary Blair
+Mary Jane Auch
+Mary R. Bassett
+Matthew Gray Gubler
+Matthew Reinhart
+Maud and Miska Petersham
+Maud Humphrey
+Maurice Sendak
+Maya Christina Gonzalez
+M. B. Goffstein
+Megan Lloyd
+Melissa Sweet
+Mercer Mayer
+Michaela Goade
+Michael Allen Austin
+Michael McCurdy
+Michael Paraskevas
+Mike Curato
+Mike Manley
+Mike Perry
+Mike Thaler
+Milo Winter
+Mischa Richter
+Molly Bang
+Molly Idle
+Molly Leach
+Monica Gesue
+Mordicai Gerstein
+Mo Willems
+Myrtle Sheldon
+Nancy Ekholm Burkert
+Nancy Elizabeth Wallace
+Natalie Babbitt
+Neecy Twinem
+Nicholas Mordvinoff
+Nicolas Sidjakov
+Nikki McClure
+Nikkolas Smith
+Noa Denmon
+Nonny Hogrogian
+Norman Bridwell
+Nura Woodson Ulreich
+Oge Mora
+Oskar Lebeck
+Patrice Barton
+Patricia Polacco
+Patrick O'Brien
+Paul Bransom
+Paul Galdone
+Paul Goble
+Paul O. Zelinsky
+Peggy Adler
+Peggy Rathmann
+Pete Oswald
+Peter Brown
+Peter Catalanotto
+Peter Newell
+Peter Parnall
+Peter Spier
+Peter Wells
+Petra Mathers
+Philip C. Stead
+Rachel Isadora
+Rachell Sumpter
+Rafael López
+Rainey Bennett
+Randy DuBurke
+Reginald Bathurst Birch
+Remy Charlip
+Reynold Ruffins
+R. Gregory Christie
+Ricardo Cortés
+Richard Cuffari
+Richard Egielski
+Richard Erdoes
+Richard Hefter
+Richard Staples Dodge
+Robert Byrd
+Robert Lawson
+Robert McCloskey
+Robert Sabuda
+Robert Waldo Brunelle Jr.
+Robert Weinstock
+Rob Gilbert
+Robin Preiss Glasser
+Roger Bollen
+Roger Duvoisin
+Ron Palillo
+Rosemary Wells
+Roy Doty
+Ruth Carroll
+Ruth Heller
+Ruth Rosekrans Hoffman
+Ruth Sanderson
+Sally J. Smith
+Salvatore Murdocca
+Sam Glanzman
+Sam Savitt
+Santiago Cohen
+Sarah McIntyre
+Sarah Stilwell Weber
+Scott Fischer
+Scott Gustafson
+SD Nelson
+S. D. Schindler
+Shane Evans
+Sheila Greenwald
+Simms Taback
+Sol Eytinge Jr.
+Stan Berenstain
+Steele Savage
+Stephen Gammell
+Steven Kellogg
+Stoo Hample
+Susan Guevara
+Susan Meddaugh
+Synthia Saint James
+Taro Yashima
+Tasha Tudor
+Ted CoConis
+Tedd Arnold
+Ted Lewin
+Thacher Hurd
+Thomas B. Allen
+Thomas Handforth
+Tibor Gergely
+Timothy B. Ering
+Tom Feelings
+Tomie dePaola
+Tony DiTerlizzi
+Tracy Dockray
+Trina Schart Hyman
+True Williams
+T. S. Sullivant
+Uri Shulevitz
+Vee Guthrie
+Ve Elizabeth Cadie
+Vera Williams
+Victo Ngai
+Victoria Jamieson
+Victor Juhasz
+Violet Moore Higgins
+Virginia Frances Sterrett
+Virginia Lee Burton
+Wallace Tripp
+Walter Francis Brown
+Walt McDougall
+Wanda Gág
+Wesley Dennis
+Wilfrid S. Bronson
+William Donahey
+William Joyce
+William Pène du Bois
+William Steig
+William Wallace Denslow
+Willie Ito
+Winifred Milius Lubell
+Wuanita Smith
+Yumi Heo
+Zina Saunders
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/argentine_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/argentine_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..529603540333450e8ad021f5c89a709b6b8c5d02
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/argentine_illustrators.txt
@@ -0,0 +1,2 @@
+Agi Lamm
+Isol
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/australian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/australian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b7664d8fdfbc88472254608d51640c534c861ca2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/australian_illustrators.txt
@@ -0,0 +1,37 @@
+Alison Lester
+Ann James
+Axel Poignant
+Bob Graham
+Deborah Niland
+Desmond Digby
+Elizabeth Honey
+Felice Arena
+Freya Blackwood
+Gabrielle Wang
+Gregory Rogers
+Harold Gaze
+Ida Rentoul Outhwaite
+Inga Moore
+Jane Tanner
+Jan Ormerod
+Jeannie Baker
+Jenny Hale
+Jeremy Geddes
+Judy Horacek
+Kaye Kessing
+Kerry Argent
+Kilmeny Niland
+Kim Gamble
+Leslie Gordon Chandler
+Margaret Horder
+Margaret Senior
+Narelle Oliver
+Pamela Lofts
+Patricia Mullins
+Peter Gouldthorpe
+Pixie O'Harris
+Robert Ingpen
+Shaun Tan
+Shirley Barber
+Sophie Blackall
+Tohby Riddle
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/austrian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/austrian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e0390f527cbce4cd689f5701808ff82ee808db4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/austrian_illustrators.txt
@@ -0,0 +1,12 @@
+Andreas Untersberger
+Bettina Ehrlich
+Elizabeth Burger Monath
+Emil Weiss
+Erwin Moser
+Felicitas Kuhn
+Fritz Wegner
+Helmut Kollars
+Johann Schönberg
+Lisbeth Zwerger
+Robert Sedlacek
+Uriel Birnbaum
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/belgian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/belgian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c30d669526d9c2956fd84381b70cd2cb67f99777
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/belgian_illustrators.txt
@@ -0,0 +1,11 @@
+André Sollie
+Carll Cneut
+Gabrielle Vincent
+Gerda Dendooven
+Ingrid Godon
+Jan Bosschaert
+Jeanne Hebbelynck
+Kitty Crowther
+Koen Fossey
+Marcel Marlier
+Ray Goossens
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/brazilian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/brazilian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b83ba6ef4cf673e13e2b1086d9b6172bbbbd447a
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/brazilian_illustrators.txt
@@ -0,0 +1,3 @@
+Elvira Vigna
+Eva Furnari
+Roger Mello
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/british_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/british_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1ca6f2a9a9528a7a94dbcd688bc78757e2d567b7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/british_illustrators.txt
@@ -0,0 +1,213 @@
+Agnes Clara Tatham
+Alan Marks
+Alfred Bestall
+Alfred Pearse
+Alice B. Woodward
+Andy Parker
+Angela Barrett
+Angie Sage
+Anita Jeram
+Anne Anderson
+Anne Grahame Johnstone
+Anthony Browne
+Anthony Lewis
+Archibald Webb
+Arthur Rackham
+Babette Cole
+Beatrix Potter
+Beryl Cook
+Bettina Ehrlich
+Brian Pilkington
+Brian Wildsmith
+Caroline Binch
+Catherine Rayner
+Cecil Mary Leslie
+Charles H. M. Kerr
+Charles Joseph Staniland
+Charles Mills Sheldon
+Charles Murray Padday
+Charles Robinson
+Charlotte Voake
+Chris Mould
+Chris Riddell
+Christian Birmingham
+Christine Roche
+Colin McNaughton
+Conrad Heighton Leigh
+C. Walter Hodges
+Dapo Adeola
+David Hughes
+David Macaulay
+David McKee
+David Roberts
+Dean & Son
+Debi Gliori
+Dee Shulman
+Denys Watkins-Pitchford
+Diane Goode
+Douglas Relf
+Edgar Alfred Holloway
+Edgar Giberne
+Edmund Evans
+Ed Vere
+Edward Ardizzone
+Edward Frank Gillett
+E. H. Shepard
+Eleanor Vere Boyle
+Elys Dolan
+Emily Gravett
+Emma Chichester Clark
+Emma Dodd
+Eric Hill
+Eric Winter
+Ernest Aris
+Ernest Prater
+Errol Le Cain
+Eve Garnett
+Florence Meyerheim
+Franciszka Themerson
+Frank C. Papé
+Fritz Wegner
+George Worsley Adamson
+Georgie Ripper
+Gerald Rose
+Gordon Browne
+Graham Howells
+Graham Oakley
+Guy Parker-Rees
+Hal Hurst
+Harold H. Piffard
+Harold Jones
+Harrison Weir
+Harry B. Neilson
+Harry Rountree
+Helen Binyon
+Helen Cooper
+Helen Oxenbury
+Helen Stratton
+Henry M. Paget
+Hilda Boswell
+Honor C. Appleton
+Horace William Petherick
+H. R. Millar
+Hugh Lofting
+Ionicus
+Ivy Wallace
+Jac Jones
+Jackie Morris
+Jacqui Hawkins
+Jago
+James Ayton Symington
+James Mayhew
+Jane Mary Dealy
+Jane Ray
+Janet Ahlberg
+Janet and Anne Grahame Johnstone
+Janet Grahame Johnstone
+Jan Pieńkowski
+Jean Adamson
+Jessica Ahlberg
+Jessie M. King
+Jim Kay
+Joan G. Robinson
+Joan Kiddell-Monroe
+Joanne Cole
+John Burningham
+John George Sowerby
+John Harris
+John Jellicoe
+John Kelly
+John Lawrence
+John Leigh-Pemberton
+John Reinhard Weguelin
+John Shelley
+John Strickland Goodall
+John Tenniel
+John Worsley
+Kate Greenaway
+Kate Pankhurst
+Kathleen Guthrie
+Kay Nixon
+Knife and Packer
+Korky Paul
+Lancelot Speed
+Lance Thackeray
+Lauren Beard
+Lauren Child
+Leslie Wood
+Liz Pichon
+Lynn Breeze
+Mabel Dearmer
+Magdalen Eldon
+Margaret Gordon
+Margaret Tarrant
+Margery Gill
+Mary Francis Ames
+Mary Shepard
+Mary Tourtel
+Maud Tindal Atkinson
+Melanie Walsh
+Michael Foreman
+Mike Perkins
+Mike Phillips
+Millicent Sowerby
+Mini Grey
+Molly Blake
+Molly Brett
+Monica Walker
+Morag Hood
+Neal Layton
+Nick Sharratt
+Oliver Jeffers
+Oscar Wilson
+Pat Hutchins
+Pauline Baynes
+Peggy Fortnum
+Penny Dann
+Peter Barrett
+Philip Reeve
+Phillida Gili
+Phyllis Chase
+Polly Dunbar
+Racey Helps
+Rebecca Cobb
+Rebecca Elgar
+Reginald Bathurst Birch
+Richard Caton Woodville Jr.
+Robert J. Kirkpatrick
+Robin Koontz
+Robin Lawrie
+Rodney Peppé
+Rosa C. Petherick
+Rosalie K. Fry
+Sally Gardner
+Sara Fanelli
+Sarah Gibb
+Sarah McIntyre
+Savile Lumley
+Sidney Paget
+Solomon Joseph Solomon
+Stanley Herbert
+Stanley L. Wood
+Stephen Biesty
+Sue Heap
+Susan Varley
+Sydney Prior Hall
+Thomas Crane
+Thomas Henry
+Thomas Taylor
+Tony Ross
+Trekkie Parsons
+V. H. Drummond
+Victor Ambrus
+Walter Ernest Webster
+Walter Paget
+Warwick Hutton
+Watson Charlton
+Wendy Meddour
+Will G. Mein
+William Barnes Wollen
+William Grill
+William Heysham Overend
+William Rainey
+William Stobbs
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/bulgarian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/bulgarian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d530e35a46a6865c3515f222e55be547c45a7f64
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/bulgarian_illustrators.txt
@@ -0,0 +1,2 @@
+Iassen Ghiuselev
+Todor Dinov
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/canadian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/canadian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..917e3daeb6b365ee7d0ae1c13dd3e9b03eb9bc2c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/canadian_illustrators.txt
@@ -0,0 +1,63 @@
+Alice Priestley
+Allen Sapp
+Ange Zhang
+Ann Blades
+Anne DeGrace
+Bonnie Shemie
+Brenda Clark
+Cécile Gagnon
+Charles van Sandwyk
+Christine Roche
+Danielle Simard
+Dayal Kaur Khalsa
+Douglas Tait
+Elise Gravel
+Elizabeth Cleaver
+F. C. Gordon
+Gary Clement
+Gina Calleja
+Ginette Anfousse
+Guillaume Perreault
+Heather Collins
+Hélène Desputeaux
+Ian Wallace
+Irene Luxbacher
+Janet Perlman
+Jan Thornhill
+Jillian Tamaki
+Joanne Fitzgerald
+Jon Klassen
+Julie Rocheleau
+Kady MacDonald Denton
+Kim LaFave
+Laura Fernandez
+Leanne Franson
+Leo Yerxa
+Ludmila Zeman
+Margaret Bloy Graham
+Marie-Louise Gay
+Michael Martchenko
+Muriel Wood
+Oleg Lipchenko
+Pam Hall
+Patrick Jenkins
+Philippe Béha
+Richard Jacobson
+Robert Lougheed
+Rob Gonsalves
+Rudolf Stussi
+Ruth Heller
+Scot Ritchie
+Sheldon Cohen
+Stéphane Jorisch
+Stéphane Poulin
+Suzanne Duranceau
+Sydney Smith
+Thao Lam
+The Fan Brothers
+Torill Kove
+Trisha Romance
+Tyler Clark Burke
+Wallace Edwards
+Willow Dawson
+Yayo
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/chinese_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/chinese_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..00a9520b926f5c8cf6a0625210300c16cc2b2283
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/chinese_illustrators.txt
@@ -0,0 +1,8 @@
+Dawu Yu
+Ed Young (illustrator)
+Feng Zikai
+He Zhihong
+Song Nan Zhang
+Xiong Liang
+Yu Rong
+Zhu Chengliang
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/colombian_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/colombian_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9d296f3500eaf16356a0cdee4a4055e6ddbdc156
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/colombian_illustrators.txt
@@ -0,0 +1 @@
+Claudia Rueda
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/czech_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/czech_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f9f4cc71f5862d7d8e8454767ee3f9fa2e73d111
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/czech_illustrators.txt
@@ -0,0 +1,10 @@
+Adolf Born
+Dagmar Berková
+Emil Weiss
+Helena Zmatlíková
+Jan Kubíček
+Květa Pacovská
+Ludmila Zeman
+Ondřej Sekora
+Štěpán Zavřel
+Vhrsti
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/danish_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/danish_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bd3bc2a2a9d57e06e3799319e2d573f8e72396fe
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/danish_illustrators.txt
@@ -0,0 +1,10 @@
+Bolatta Silis-Høegh
+Christel Marott
+Ib Spang Olsen
+Ingrid Vang Nyman
+Irene Hedlund
+Kay Nielsen
+Lilian Brøgger
+Louis Moe
+Ole Lund Kirkegaard
+Vilhelm Pedersen
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/dutch_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/dutch_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..626eba7d7a2e8dfc8143f34e13a56da3e3887cab
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/dutch_illustrators.txt
@@ -0,0 +1,36 @@
+Annemarie van Haeringen
+Annet Schaap
+Anton Pieck
+Carol Voges
+Daan Remmerts de Vries
+Dick Bruna
+Fiel van der Veen
+Fiep Westendorp
+Fleur van der Weel
+Flor Silvester
+Geerten Ten Bosch
+Harmen van Straaten
+Harmsen van der Beek
+Harriët van Reek
+Henrieke Goorhuis
+Henriette Willebeek le Mair
+Jaap Lamberton
+Jan Jutte
+Jan Kruis
+Jenny Dalenoord
+Jet Boeke
+Joke van Leeuwen
+Judith Ten Bosch
+Mance Post
+Margriet Heymans
+Marije Tolman
+Marjolein Bastin
+Martijn van der Linden
+Max Velthuijs
+Nans van Leeuwen
+Phiny Dick
+Rie Cramer
+Sijtje Aafjes
+Sylvia Weve
+Thé Tjong-Khing
+Tonke Dragt
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/egyptian_ilustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/egyptian_ilustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..88f31ae1431e101609e1f4fa598ed3b8e5a5ea55
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/egyptian_ilustrators.txt
@@ -0,0 +1 @@
+Bahgat Osman
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/irish_illustrators.txt b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/irish_illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..463ad4abd38ba493544dcb4d6f8faf72609f7b4b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/childrens_books/irish_illustrators.txt
@@ -0,0 +1,7 @@
+Elizabeth Shaw
+Jon Berkeley
+Marie-Louise Fitzpatrick
+Mary Arrigan
+Oliver Jeffers
+P. J. Lynch
+Sinéad Ní Uallacháin
diff --git a/ex/dynamic-prompts/collections/artists/illustrations/manga.txt b/ex/dynamic-prompts/collections/artists/illustrations/manga.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71c269130de5546fae9aae03c8c2c9f6bf2b82cf
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/illustrations/manga.txt
@@ -0,0 +1,99 @@
+Ai Morinaga
+Ai Yazawa
+Akimi Yoshida
+Akira Toriyama
+Bunjūrō Nakayama
+Chako Abeno
+Chie Shinohara
+Chiho Saito
+Eiki Eiki
+Ema Tōyama
+Fujihiko Hosono
+Fujiko Fujio
+Fumi Yoshinaga
+Go Nagai
+Gosho Aoyama
+Hakase Mizuki
+Hidefumi Kimura
+Hideo Azuma
+Hideyuki Kurata
+Hiro Mashima
+Hiromu Arakawa
+Hiroyuki Sawano
+Hiroyuki Takei
+Hisaichi Ishii
+Ichirō Sakaki
+Ikki Kajiwara
+Inio Asano
+Jiro Kuwata
+Jiro Taniguchi
+Kaiji Kawaguchi
+Kaori Yuki
+Kaoru Shintani
+Katsuhiro Otomo
+Kazuhiko Shimamoto
+Kazumasa Hirai
+Kazuo Koike
+Kei Sanbe
+Keiko Takemiya
+Ken Akamatsu
+Ken Ishikawa
+Kia Asamiya
+Kiyohiko Azuma
+Kōichi Tokita
+Kōji Kumeta
+Kōsuke Fujishima
+Leiji Matsumoto
+Masakazu Katsura
+Masami Kurumada
+Masami Yuki
+Masamune Shirow
+Mayu Shinjo
+Mikiyo Tsuda
+Mitsukazu Mihara
+Mitsuru Adachi
+Mitsuru Hattori
+Mitsuteru Yokoyama
+Moto Hagio
+Nanae Chrono
+Naoki Urasawa
+Natsuki Takaya
+Natsumi Itsuki
+Nisio Isin
+Nobuhiro Watsuki
+Nobuyuki Fukumoto
+Oh! great
+Oji Hiroi
+Osamu Tezuka
+Peach-Pit
+Riyoko Ikeda
+Rumiko Takahashi
+Ryoichi Ikegami
+Ryukishi
+Ryōji Minagawa
+Satoru Akahori
+Setona Mizushiro
+Shigeru Mizuki
+Shin Kibayashi
+Shotaro Ishinomori
+Shunji Enomoto
+Shūzō Oshimi
+Suehiro Maruo
+Taiyō Matsumoto
+Takao Saito
+Takehiko Inoue
+Takeshi Obata
+Tamayo Akiyama
+Tatsuya Egawa
+Tooru Fujisawa
+Tsukasa Hojo
+Tsutomu Nihei
+Yoshihiro Tatsumi
+Yoshihiro Togashi
+Yoshiyuki Okamura
+You Higuri
+Yukari Higa
+Yukiru Sugisaki
+Yun Kōga
+Yuu Watase
+Yū Koyama
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/abstract.txt b/ex/dynamic-prompts/collections/artists/unfiled/abstract.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f8366010801ddcb1ea561d52d5ad404d51c10c65
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/abstract.txt
@@ -0,0 +1,13 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Abstract
+Albert Gleizes
+Alexander Calder
+Asger Jorn
+Bob Orsillo
+Clyfford Still
+Gerhard Richter
+Jackson Pollock
+Jim Harris
+Kandinsky
+Kazimir Malevich
+Mikalojus Konstantinas Čiurlionis
+Tavar Zawacki
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/alternative.txt b/ex/dynamic-prompts/collections/artists/unfiled/alternative.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6bc4a751a9c4c982d78dbdfb43398e2261e939dd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/alternative.txt
@@ -0,0 +1,10 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Alternative_Mediums
+Alexander Calder
+Anselm Kiefer
+Dale Chihuly
+Jean Tinguely
+Lotte Reiniger
+Louis Comfort Tiffany
+Mihoko Ogaki
+Ruth Asawa
+William Morris
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/architecture.txt b/ex/dynamic-prompts/collections/artists/unfiled/architecture.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a7b71959bcb30459ece374d785c6716054d1a96e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/architecture.txt
@@ -0,0 +1,16 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Architecture
+Ai Weiwei
+Anthony Million
+Canaletto
+Edwin Deakin
+Ferdinand Knab
+François Schuiten
+Friedensreich Hundertwasser
+Giles Gilbert Scott
+Giovanni Paulo Panini
+Guido Borelli
+Hugh Ferriss
+I. M. Pei
+Jim Buckels
+Le Corbusier
+Mark Fearnley
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/cartoonists.txt b/ex/dynamic-prompts/collections/artists/unfiled/cartoonists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f571c690f96b71f22da237dbc5c932a081992681
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/cartoonists.txt
@@ -0,0 +1,45 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Cartoonists
+Alex Hirsch
+Alex Toth
+Bill Peet
+Bill Watterson
+Charles Addams
+Charles Schulz
+Dav Pilkey
+David Revoy
+Don Bluth
+Doug TenNapel
+Gary Panter
+Herge
+Honoré Daumier
+J. G. Quintel
+Jamie Hewlett
+Jim Davis
+Josh Bayer
+Katsuhiro Otomo
+Lotte Reiniger
+Louis Glackens
+Mad Magazine
+Makoto Shinkai
+Matt Groening
+Mitsuru Adachi
+Naoko Takeuchi
+Nick Park
+Osamu Tezuka
+Quentin Blake
+Ralph Bakshi
+Rebecca Sugar
+Richard Williams
+Rose O’Neill
+Roz Chast
+Rube Goldberg
+Scott McCloud
+Sergio Aragones
+Seth MacFarlane
+Spike Milligan
+Tex Avery
+TheOdd1sOut
+Thomas Nast
+Tomer Hanuka
+Walt Disney
+Winsor McCay
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/childrensbooks.txt b/ex/dynamic-prompts/collections/artists/unfiled/childrensbooks.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f11f13bffe564614036ac461d7e3632dbab57d14
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/childrensbooks.txt
@@ -0,0 +1,34 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Children%27s_Books
+Alexander Jansson
+Anne Yvonne Gilbert
+Arthur Rackham
+Beatrix Potter
+Bill Peet
+Charles Schulz
+Chris Van Allsburg
+Clement Hurd
+Dav Pilkey
+Edward Ardizzone
+E. H. Shepard
+Eleanor Vere Boyle
+Emilia Dziubak
+Eric Carle
+Ernest Howard Shepard
+Floyd Cooper
+Herge
+Howard Pyle
+Ida Rentoul Outhwaite
+Jim Harris
+John Kenn Mortensen
+Julia Donaldson
+Lisa Frank
+Mark Crilley
+Maurice Sendak
+Oliver Jeffers
+Quentin Blake
+Richard Scarry
+Stan and Jan Berenstain
+Stephen Gammell
+Tim Jacobus
+Walter Crane
+William Steig
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/colourful.txt b/ex/dynamic-prompts/collections/artists/unfiled/colourful.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a38ee0ea1730bc47157d09065a5041a0964e7e19
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/colourful.txt
@@ -0,0 +1,73 @@
+# originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Colorful
+Adrian Cox
+Alex Horley Orlandelli
+Ali Nemah o Neema
+Amanda Sage
+Andre Masson
+Andy Warhol
+Anna and Elena Balbusso
+Bob Eggleton
+Charley Harper
+Clement Hurd
+Dale Chihuly
+Dan Mumford
+Eric Carle
+Esao Andrews
+Franz Marc
+Friedensreich Hundertwasser
+Georgia O'Keeffe
+Georgy Kurasov
+Gustavo Silva Nuñez
+Henri Matisse
+Henri Rousseau
+Herge
+Jackson Pollock
+Jacob Lawrence
+James Christensen
+James Gurney
+Jeff Lee Johnson
+Jim Buckels
+Jim Burns
+Jim Harris
+Jim Murray
+John Register
+John Stephens
+Jonathan Green
+Josephine Wall
+Joyce Ballantyne Brand
+Juan Gris
+Kamal Rao
+Kandinsky
+Kaori Someya
+Katharina Grosse
+Kerem Beyit
+Kusama
+Lisa Frank
+Loish
+Louis Comfort Tiffany
+Mad Magazine
+Marianne North
+Mark Crilley
+Mark Ryden
+Martine Johanna
+Matt Groening
+Michael Cheval
+Michael Whelan
+Mike Davis
+Moebius
+Natalia Rak
+NEVERCREW
+Nicola Scott
+Noah Bradley
+P. Craig Russell
+Phil Epp
+Picasso
+Quentin Blake
+Takashi Murakami
+Tenhundred
+Tim Mcdonagh
+Tim White
+Tom Everhart
+Wil Cormier
+Yoshitaka Amano
+Yuko Shimizu
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/comicbooks.txt b/ex/dynamic-prompts/collections/artists/unfiled/comicbooks.txt
new file mode 100644
index 0000000000000000000000000000000000000000..824112eaff3887e00600818662a79e2df9992818
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/comicbooks.txt
@@ -0,0 +1,42 @@
+# originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Comic_Books
+Aleksi Briclot
+Alex Horley Orlandelli
+Alex Ross
+Alex Toth
+Artgerm
+Bernie Wrightson
+Bill Sienkiewicz
+Bob Eggleton
+CAFU
+Dave McKean
+Doug TenNapel
+Fiona Staples
+François Schuiten
+Fumi Yoshinaga
+Geof Darrow
+Herge
+Jack Kirby
+Jeffrey Smith
+Jim Davis
+Josh Bayer
+Juan Giménez
+Junji Ito
+Kaja Foglio
+Kengo Hanazawa
+Mad Magazine
+Michael Kaluta
+Mitsuru Adachi
+Moebius
+Neil Gaiman
+Nicola Scott
+Osamu Tezuka
+OsamuTezuka
+P. Craig Russell
+Phillipe Druillet
+Riccardo Federici
+Simon Bisley
+Steve Dillon
+Steve Ditko
+Wally Wood
+Walt Simonson
+Will Eisner
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/digitalart.txt b/ex/dynamic-prompts/collections/artists/unfiled/digitalart.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e1caab790cb2ecb67088f316af8fb41d54dff8e5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/digitalart.txt
@@ -0,0 +1,21 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Digital_Art
+Alexander Jansson
+Anato Finnstark
+Anna Dittmann
+Antoine Collignon
+Aykut Aydogdu
+Bastien Lecouffe Deharme
+Brian Despain
+Charles Csuri
+Christian Schloe
+Dan Mumford
+David Revoy
+Juhani Jokinen
+Kerem Beyit
+Loish
+Marc Simonetti
+Michael Vincent Manalo
+Peter Mohrbacher
+Ross Tran
+Shigeru Miyamoto
+TheOdd1sOut
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/fantasy_scifi.txt b/ex/dynamic-prompts/collections/artists/unfiled/fantasy_scifi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b44a402a4c8f325fc8e60f87908d141000cb6969
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/fantasy_scifi.txt
@@ -0,0 +1,78 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Fantasy_/_Sci-Fi
+Alan Lee
+Aleksi Briclot
+Alex Horley Orlandelli
+Anato Finnstark
+Anne Stokes
+Anne Yvonne Gilbert
+Antoine Collignon
+Barclay Shaw
+Bastien Lecouffe Deharme
+Bob Eggleton
+Boris Vallejo
+Brian Despain
+Brian Froud
+Chris Foss
+Dan Mumford
+Dariusz Zawadzki
+David A. Hardy
+David Mattingly
+David Revoy
+Drew Struzan
+Edmund Dulac
+Frank Frazetta
+Georges Méliès
+Gerald Brom
+Greg Rutkowski
+Gustave Dore
+H. R. Giger
+Ida Rentoul Outhwaite
+Igor Kieryluk
+Ivan Bilibin
+J.R.R. Tolkien
+James Christensen
+James Gurney
+Jan Urschel
+Jeff Lee Johnson
+Jim Burns
+Jim Murray
+Johannes Voss
+John Harris
+John Stephens
+Jon Foster
+Josephine Wall
+Juan Giménez
+Juhani Jokinen
+Kaja Foglio
+Kelly Freas
+Kerem Beyit
+Marc Simonetti
+Michael C. Hayes
+Michael Parkes
+Michael Whelan
+Noah Bradley
+Peter Mohrbacher
+Phillipe Druillet
+Ralph McQuarrie
+Rodney Matthews
+Simon Stålenhag
+Ray Harryhausen
+Raymond Swanland
+Rebecca Guay
+Rob Gonsalves
+Roger Dean
+Ron Spears
+Ron Spencer
+Scott M. Fischer
+Stephan Martiniere
+Syd Mead
+Tim Hildebrandt
+Tim Mcdonagh
+Tim White
+Todd Lockwood
+Vladimir Gvozdariki
+Wil Cormier
+Winona Nelson
+Wojciech Siudmak
+Yoshitaka Amano
+Zack Stella
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/figurative.txt b/ex/dynamic-prompts/collections/artists/unfiled/figurative.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c8831e2e0a681b170191c667aee9f826a171cce
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/figurative.txt
@@ -0,0 +1,108 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Portraiture/Figurative
+Alan Lee
+Albert Dorne
+Alberto Vargas
+Alex Ross
+Ali Nemah o Neema
+Alphonse Mucha
+Amanda Sage
+Andrea Kowch
+Andrew Wyeth
+Anna and Elena Balbusso
+Anna Dittmann
+Anna Marinova
+Anne Stokes
+Anne Yvonne Gilbert
+Archibald Motley Jr.
+Arnold Friberg
+Artemisia Gentileschi
+Artgerm
+Auguste Renoir
+Aykut Aydogdu
+Bastien Lecouffe Deharme
+Bill Sienkiewicz
+Boris Vallejo
+Brent Lynch
+Bruce Wolfe
+C215
+Caravaggio
+Carl Heinrich Bloch
+Charles Edward Chambers
+Christian Schloe
+Dan Witz
+David Revoy
+Derek Gores
+Diego Velázquez
+Drew Struzan
+Egon Schiele
+Eurika Urbonaviciute
+Floyd Cooper
+Fra Angelico
+Francisco de Goya
+Frank Frazetta
+Frida Kahlo
+Georgy Kurasov
+Gerald Brom
+Giuseppe Arcimboldo
+Grant Wood
+Greg Olsen
+Greg Rutkowski
+Gustav Klimt
+Gustavo Silva Nuñez
+Hannah Hoch
+Hans Holbein the younger
+Henry Fuseli
+Honoré Daumier
+Howard Chandler Christy
+Jacques-Louis David
+James Elliott Bama
+Jan Van Eyck
+Jan Vermeer
+Jeff Lee Johnson
+John Butler Yeats
+Jon Foster
+Josephine Wall
+Joyce Ballantyne Brand
+Józef Mehoffer
+Julie Heffernan
+Kaja Foglio
+Kamal Rao
+Käthe Kollwitz
+Kengo Hanazawa
+Kerem Beyit
+Lawrence Alma-Tadema
+Leonardo da Vinci
+Loish
+Maarten van Heemskerck
+Mad Magazine
+Margaret Keane
+Mark Arian
+Mark Crilley
+Mark Ryden
+Mark Spain
+Martine Johanna
+Matt Groening
+Michael C. Hayes
+Michael Parkes
+Michelangelo
+Mort Künstler
+Natalia Rak
+Nicola Scott
+Norman Rockwell
+Odd Nerdrum
+Peter Lindbergh
+Philip Pearlstein
+Pino Daeni
+Poen de Wijs
+Raphael
+Richard Westmacott
+Rolf Armstrong
+Ross Tran
+Sam Spratt
+Sandra Kuck
+Sandro Botticelli
+Simon Dewey
+Stephen Mackey
+Titian
+Vladimir Tretchikoff
+Wang Niandong
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/graffiti.txt b/ex/dynamic-prompts/collections/artists/unfiled/graffiti.txt
new file mode 100644
index 0000000000000000000000000000000000000000..651e22430df112e3c8c78de0d4a811bcbf8dc008
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/graffiti.txt
@@ -0,0 +1,9 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Graffiti
+Banksy
+C215
+David Choe
+ETAM Cru
+Jean-Michel Basquiat
+Natalia Rak
+NEVERCREW
+Tenhundred
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/graphic.txt b/ex/dynamic-prompts/collections/artists/unfiled/graphic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e53cc233b38e9a4409ed1488f1a920d33bf8a6d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/graphic.txt
@@ -0,0 +1,34 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Graphic_(Line,_Pattern,_Color)
+A.B. Frost
+Aaron Douglas
+Albert Dorne
+Alphonse Mucha
+Andy Warhol
+Anne Yvonne Gilbert
+Aubrey Beardsley
+Banksy
+C215
+Charley Harper
+Dan Mumford
+Dave McKean
+Egon Schiele
+Emory Douglas
+ETAM Cru
+Frank Miller
+Gorillaz
+H. R. Giger
+Jean-Michel Basquiat
+Jeffrey Smith
+Josh Bayer
+Käthe Kollwitz
+Le Gun
+Mark Fearnley
+Natalia Rak
+Neil Gaiman
+Rick Griffin
+Saul Bass
+Shepard Fairey
+Takashi Murakami
+Tim Mcdonagh
+Tom Everhart
+Victor Moscoso
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/h.txt b/ex/dynamic-prompts/collections/artists/unfiled/h.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c905eea207a7e4e334c3a9976409751e35f55f0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/h.txt
@@ -0,0 +1,6 @@
+Johannes Warnardus,Bilders
+Barend Cornelis,Koekkoek
+Andreas,Schelfhout
+Hendrik,Van de Sande Bakhuysen
+Bartholomeus,Van Hove
+Hubertus,Van Hove
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/hyperreaslism.txt b/ex/dynamic-prompts/collections/artists/unfiled/hyperreaslism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4bf9eca7bc08df2fe9db034442fcc3cc33054ead
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/hyperreaslism.txt
@@ -0,0 +1,29 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_(Hyper)_Realism
+Andrea Kowch
+Andrew Wyeth
+Anna Marinova
+Dan Witz
+Duane Hanson
+Édouard Manet
+Edward Hopper
+Everett Shinn
+George Ault
+Gustavo Silva Nuñez
+Ilya Repin
+Ivan Shishkin
+James Elliott Bama
+James Gurney
+John Register
+Kamal Rao
+Lucien Rudaux
+Mark Arian
+Michael C. Hayes
+Mort Künstler
+Norman Rockwell
+Philip Pearlstein
+Poen de Wijs
+Rob Gonsalves
+Ron Mueck
+Thomas Hart Benton
+Thomas Kinkade
+William Glackens
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/illustrators.txt b/ex/dynamic-prompts/collections/artists/unfiled/illustrators.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0416b3f99508d56f295e6bb4c9f94c730661b4d6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/illustrators.txt
@@ -0,0 +1,117 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Illustrators
+Alan Lee
+Albert Dorne
+Alberto Vargas
+Aleksi Briclot
+Alex Horley Orlandelli
+Alexander Jansson
+Alphonse Mucha
+Anato Finnstark
+Anna and Elena Balbusso
+Anna Dittmann
+Anne Yvonne Gilbert
+Arnold Friberg
+Artgerm
+Arthur Rackham
+Aubrey Beardsley
+Bastien Lecouffe Deharme
+Beatrix Potter
+Bill Watterson
+Brian Froud
+Charles Edward Chambers
+Charley Harper
+Chris Van Allsburg
+Clement Hurd
+Daniel Merriam
+Daniel Minter
+Dave McKean
+David Choe
+David Mattingly
+Drew Struzan
+E. H. Shepard
+Edmund Dulac
+Edward Ardizzone
+Eleanor Vere Boyle
+Emilia Dziubak
+Emory Douglas
+Eric Carle
+Ernest Howard Shepard
+Ernst Haeckel
+Everett Shinn
+Fiona Staples
+Floyd Cooper
+Frank Frazetta
+Franklin Booth
+Fumi Yoshinaga
+Gary Panter
+Geof Darrow
+Gorillaz
+Gustave Dore
+Henri Rousseau
+Herge
+Hokusai
+Howard Pyle
+Igor Kieryluk
+Ivan Bilibin
+J.R.R. Tolkien
+James Gurney
+Jeff Lee Johnson
+Jim Burns
+Jim Davis
+Jim Harris
+Jim Murray
+Johannes Voss
+John Kenn Mortensen
+Jon Foster
+Josephine Wall
+Kate Greenaway
+Kay Nielsen
+Kerem Beyit
+Lisa Frank
+Loish
+Mad Magazine
+Marc Simonetti
+Maria Sibylla Merian
+Mark Crilley
+Mark Ryden
+Mary Hallock Foote
+Maurice Sendak
+Maxfield Parrish
+Michael Whelan
+Mort Künstler
+Natalia Rak
+Norman Rockwell
+P. Craig Russell
+Peter Mohrbacher
+Phillipe Druillet
+Pino Daeni
+Quentin Blake
+Rafal Olbinski
+Raymond Swanland
+Rebecca Guay
+Rob Jefferson
+Rockwell Kent
+Rodney Matthews
+Roger Dean
+Rolf Armstrong
+Ron Spears
+Ron Spencer
+Rose O’Neill
+Sam Spratt
+Santiago Caruso
+Scott M. Fischer
+Stephen Gammell
+Sydney Prior Hall
+Tadahiro Uesugi
+Tim Jacobus
+Tim Mcdonagh
+Todd Lockwood
+Tomer Hanuka
+Victo Ngai
+Walter Crane
+Wendell Minor
+William Blake
+Winona Nelson
+Yoshitaka Amano
+Yuko Shimizu
+Zack Stella
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/landscapes.txt b/ex/dynamic-prompts/collections/artists/unfiled/landscapes.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06098949e878d27b329cda0b94c840be19f924ec
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/landscapes.txt
@@ -0,0 +1,45 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Landscapes
+Agnes Lawrence Pelton
+Albert Bierstadt
+Alfred Jacob Miller
+Andrew Wyeth
+Anthony Million
+Bob Ross
+Bruegel the Elder
+Caspar David Friedrich
+Claude Lorrain
+Claude Monet
+Edwin Deakin
+Emily Carr
+Ferdinand Knab
+George Inness
+Georgia O'Keeffe
+Giovanni Paulo Panini
+Hokusai
+Ivan Aivazovsky
+Ivan Shishkin
+J.R.R. Tolkien
+Jacques-Laurent Agasse
+Jakub Schikaneder
+Jim Buckels
+Joachim Patinir
+John Constable
+Juhani Jokinen
+Lucien Rudaux
+Marc Simonetti
+Marianne North
+Martin Johnson Heade
+Max Ernst
+Max Liebermann
+Noah Bradley
+Peter Doig
+Phil Epp
+Philipp Otto Runge
+Pieter Bruegel the Elder
+Rockwell Kent
+Roger Brown
+Roger Dean
+Simon Bening
+Terry Redlin
+Thomas Cole
+William Turner
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/mixedmedia.txt b/ex/dynamic-prompts/collections/artists/unfiled/mixedmedia.txt
new file mode 100644
index 0000000000000000000000000000000000000000..685247e192e5305e41025bdad82b50f86ab07eb9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/mixedmedia.txt
@@ -0,0 +1,18 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Collage/Mixed_Media
+Alexander Jansson
+Anselm Kiefer
+Bill Sienkiewicz
+Daniel Minter
+Dave McKean
+Derek Gores
+Eric Carle
+Floyd Cooper
+Georges Braque
+Giuseppe Arcimboldo
+Hannah Hoch
+Joseph Cornell
+Kara Walker
+Max Ernst
+Michael Vincent Manalo
+Otto Dix
+Toshiyuki Enoki
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/modern_greek.txt b/ex/dynamic-prompts/collections/artists/unfiled/modern_greek.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35c50bdd8dc7346c512380570bae8c8dd55f1a10
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/modern_greek.txt
@@ -0,0 +1,23 @@
+Constantine Andreou
+Thodoros Papadimitriou
+Giorgio de Chirico
+Jannis Kounellis
+Electros Vekris
+Theodoros Stamos
+{Panayiotis Vassilakis|Takis}
+Chryssa Vardea-Mavromichali
+Constantin Xenakis
+Hermon di Giovanno
+Panayiotis Varotsos
+Dimitris Mytaras
+Spyros Vassiliou
+Alekos Fassianos
+Theocharis Mores
+Dimitris Koukos
+Nikos Stratakis
+Steven Antonakos
+Kostas Tsoklis
+Nikos Hadjikyriakos-Ghikas
+Thanassis Stephopoulos
+Aggelika Korovessi
+Yiannis Melanitis
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/modern_pop.txt b/ex/dynamic-prompts/collections/artists/unfiled/modern_pop.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7328c657dd74261340750323969f05d854400b6c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/modern_pop.txt
@@ -0,0 +1,57 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Modern_Art/Pop_Art
+Aaron Douglas
+Agnes Lawrence Pelton
+Ai Weiwei
+Albert Gleizes
+Ali Nemah o Neema
+Andre Masson
+Andy Warhol
+Anselm Kiefer
+Archibald Motley Jr.
+Asger Jorn
+Brent Lynch
+Charles Csuri
+Charley Harper
+Constantin Brâncuși
+Diego Rivera
+Édouard Manet
+Edvard Munch
+Edward Hopper
+Egon Schiele
+El Anatsui
+Emil Nolde
+Emily Carr
+Franz Marc
+Franz Sedlacek
+Frida Kahlo
+Friedensreich Hundertwasser
+Georges Braque
+Georgia O'Keeffe
+Gerhard Richter
+Gorillaz
+Grant Wood
+Gustav Klimt
+Hannah Hoch
+Henri Matisse
+Jackson Pollock
+Jacob Lawrence
+James Ensor
+Jean-Michel Basquiat
+Jonathan Green
+Joseph Cornell
+Juan Gris
+Kandinsky
+Katharina Grosse
+Leonid Afremov
+Lisa Frank
+Mark Ryden
+Max Ernst
+Otto Dix
+Peter Doig
+Picasso
+Pierre Bonnard
+Roy Lichtenstein
+Takashi Murakami
+Tom Everhart
+Wifredo Lam
+William Glackens
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/pen_ink.txt b/ex/dynamic-prompts/collections/artists/unfiled/pen_ink.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cb30f0f0567186b0473848c4430c5434607f4744
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/pen_ink.txt
@@ -0,0 +1,42 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Pen_and_Ink/Prints
+A.B. Frost
+Aaron Douglas
+Albert Dorne
+Albrecht Dürer
+Alex Toth
+Arthur Rackham
+Aubrey Beardsley
+Bernie Wrightson
+Bruegel the Elder
+CAFU
+Charles Schulz
+Edward Ardizzone
+Ernest Howard Shepard
+Fiona Staples
+Frank Miller
+Franklin Booth
+Geof Darrow
+Gustave Dore
+Honoré Daumier
+Hokusai
+John Kenn Mortensen
+Jonathan Green
+Josh Bayer
+Junji Ito
+Kara Walker
+Käthe Kollwitz
+Katsushika Ōi
+Kengo Hanazawa
+Laurie Lipton
+Le Gun
+Leonardo da Vinci
+Louis Maurer
+M. C. Escher
+Mary Hallock Foote
+Neil Gaiman
+Osamu Tezuka
+Otto Dix
+Rembrandt
+Rube Goldberg
+Stuart Patience
+William Blake
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/photography.txt b/ex/dynamic-prompts/collections/artists/unfiled/photography.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b6cd314dd36da1337fe8503641072d65607e3e26
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/photography.txt
@@ -0,0 +1,20 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Photography
+Anthony Million
+Bob Orsillo
+Dan Witz
+David Fincher
+Denis Villeneuve
+Dmitriy Yoav Reinshtein
+Georges Méliès
+Gregory Crewdson
+Jeff Wall
+Mark Fearnley
+Nick Park
+Peter Lindbergh
+Ray Harryhausen
+Robert Capa
+Roger Ballen
+Sally Mann
+Tim Burton
+Wes Anderson
+Wim Wenders
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/plants_animals.txt b/ex/dynamic-prompts/collections/artists/unfiled/plants_animals.txt
new file mode 100644
index 0000000000000000000000000000000000000000..79b2c14b5b61548adeb7ccb5b7172fc9dd1bfd6f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/plants_animals.txt
@@ -0,0 +1,22 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Plants_and_Animals
+Archibald Thorburn
+Beatrix Potter
+Charley Harper
+Courtney Mattison
+Dmitriy Yoav Reinshtein
+Emil Nolde
+Eric Carle
+Ernst Haeckel
+Franz Marc
+Georgia O'Keeffe
+Giuseppe Arcimboldo
+Henri Rousseau
+Jacques-Laurent Agasse
+James Gurney
+Louis Maurer
+Louis Wain
+Maria Sibylla Merian
+Marianne North
+Shaun Tan
+Sophie Ryder
+Terry Redlin
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/scifi.txt b/ex/dynamic-prompts/collections/artists/unfiled/scifi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..45abd5dbc6cd3ef290e2ee739601d1343724da74
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/scifi.txt
@@ -0,0 +1,69 @@
+# Originally sourced from https://www.scifi-art.info/scifi-artists.html
+Alan Gutierrez
+Alan Pollack
+Arthur Haas
+Barclay Shaw
+Bob Eggleton
+Boris Vallejo
+Bruce Jensen
+Bruce Pennington
+Chris Foss
+Chris Moore
+Darrel K. Sweet
+Dave Seeley
+David B. Mattingly
+David Palumbo
+David Schleinkofer
+Dawid Michalczyk
+Dominic Harman
+Donato Giancola
+Don Maitz
+Duane Myers
+Duncan Long
+Eric Wilkerson
+Franco Brambilla
+Frank Kelly Freas
+Fred Gambino
+Gabor Szikszai
+Gary Tonge
+Greg Bridges
+Henry Richard van Dongen
+Hubert Rogers
+James Beveridge
+James Warhola
+Jerome Podwil
+Jim Burns
+John Berkey
+John Harris
+John Schoenherr
+John Zeleznik
+Julie Dillon
+Kevin Ward
+Les Edwards
+Marc Gabbana
+Marek Okon
+Mark Salwowski
+Matt Stawicki
+Melvyn Grant
+Michael Whelan
+Pascal Blanche
+Patrick J. Jones
+Patrick Turner
+Paul Alexander
+Paul Lehr
+Paul Youll
+Peter Andrew Jones
+Peter Elson
+Philippe Bouchet
+Richard Hescox
+Romas Kukalis
+Ron Walotsky
+Scott Grimando
+Stephan Martiniere
+Stephen Hickman
+Stephen Youll
+Tim White
+Vicente Segrelles
+Vincent Di Fate
+Wayne Haag
+Zoltan Boros
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/sculpture.txt b/ex/dynamic-prompts/collections/artists/unfiled/sculpture.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ca265a08a5e014be4ae3629d891e74651a5998b3
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/sculpture.txt
@@ -0,0 +1,24 @@
+# Originally sourced from https://aiartcreation.fandom.com/wiki/Collection:_Sculpture
+Ai Weiwei
+Alexander Calder
+Anselm Kiefer
+Auguste Rodin
+Bruce Wolfe
+Constantin Brâncuși
+Courtney Mattison
+Dale Chihuly
+Duane Hanson
+El Anatsui
+Ernst Barlach
+Jean Tinguely
+Kara Walker
+Katharina Grosse
+Kusama
+Michelangelo
+Mihoko Ogaki
+Nick Park
+Ray Harryhausen
+Richard Westmacott
+Ron Mueck
+Ruth Asawa
+Sophie Ryder
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/surreal.txt b/ex/dynamic-prompts/collections/artists/unfiled/surreal.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71f6060415b954f4f46140fffa3a708e56e31a61
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/surreal.txt
@@ -0,0 +1,53 @@
+# Origianlly sourced from https://aiartcreation.fandom.com/wiki/Collection:_Surreal/Symbolic
+Adrian Cox
+Aleister Crowley
+Alex Grey
+Alexander Calder
+Amanda Sage
+Andre Masson
+Aykut Aydogdu
+Brian Despain
+Christian Schloe
+Daniel Merriam
+Edvard Munch
+Esao Andrews
+Eurika Urbonaviciute
+Francis Bacon
+Franz Sedlacek
+Frida Kahlo
+George Ault
+Giorgio de Chirico
+Giuseppe Arcimboldo
+Gustav Klimt
+Hieronymus Bosch
+James Christensen
+James Ensor
+Jeffrey Smith
+John Stephens
+Joseph Cornell
+Josephine Wall
+Julie Heffernan
+Le Gun
+Leonora Carrington
+Margaret Keane
+Mark Ryden
+Max Ernst
+Michael Cheval
+Mikalojus Konstantinas Čiurlionis
+Mike Davis
+Odilon Redon
+Picasso
+Rafal Olbinski
+Remedios Varo
+Roberto Matta
+Salvador Dalí
+Santiago Caruso
+Siegfried Zademack
+Stuart Patience
+Tomasz Setowski
+Valeriy Kot
+Vladimir Kush
+William Blake
+William Morris
+Yves Tanguy
+Zdzisław Beksinski
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/symbolism.txt b/ex/dynamic-prompts/collections/artists/unfiled/symbolism.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0f7a6c8a20d54cd3e3f978259cc5543bd2cdb379
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/symbolism.txt
@@ -0,0 +1,70 @@
+Alexander Nikolaevich Volkov
+Alexandru Bogdan-Pitești
+Ancell Stronach
+Anselmo Bucci
+Arkady Rylov
+Arnold Böcklin
+Arthur Bowen Davies
+Artur Fonvizin
+August Malmström
+Beda Stjernschantz
+Bela Čikoš Sesija
+Carl Rabus
+Cecile Walton
+Cesare Laurenti
+Charles Conder
+Constantin Kousnetzoff
+Eduard Puterbrot
+Edvard Munch
+Eleanor Spiess-Ferris
+Elihu Vedder
+Erwin Puchinger
+Erwin Stolz
+Fedir Krychevsky
+Gaetano Previati
+Gaston Bussière
+George Frederic Watts
+George Washington Lambert
+Giovanni Segantini
+Guido Marussig
+Gustav Klimt
+Helmer Osslund
+Henri Fantin-Latour
+Herbert Crowley
+Hugo Simberg
+Ignat Bednarik
+Ion Theodorescu-Sion
+Ivan Milev
+Jacek Malczewski
+Jan Frans De Boever
+Jan Toorop
+Jens Lund
+Joan Brull
+John Duncan
+Josefina Mařáková
+Josef Váchal
+Kahlil Gibran
+Karel Hlaváček
+Kazimierz Stabrowski
+Louis Welden Hawkins
+Mahirwan Mamtani
+Marcel Janco
+Max Kurzweil
+Mikalojus Konstantinas Čiurlionis
+Mikhail Nesterov
+Mikhail Vrubel
+Nicholas Roerich
+Octavian Smigelschi
+Olaf Lange
+Paul Ranson
+Pierre Marcel-Béronneau
+Rex Slinkard
+Romaine Brooks
+Rupert Bunny
+Ștefan Luchian
+Stewart Carmichael
+Sydney Long
+Tivadar Csontváry Kosztka
+Victor Borisov-Musatov
+Viktor Vasnetsov
+Ze'ev Raban
diff --git a/ex/dynamic-prompts/collections/artists/unfiled/the_ancients.txt b/ex/dynamic-prompts/collections/artists/unfiled/the_ancients.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ddfb5a469203d7d4dbf0004e4c9e32c8cc2f7cc
--- /dev/null
+++ b/ex/dynamic-prompts/collections/artists/unfiled/the_ancients.txt
@@ -0,0 +1,10 @@
+Edward Calvert
+Frederick Tatham
+Samuel Palmer
+George Richmond
+Francis Oliver Finch
+Henry Walter
+Welby Sherman
+John Giles
+Arthur Tatham
+Julia Tatham
diff --git a/ex/dynamic-prompts/collections/devilkkw/README.md b/ex/dynamic-prompts/collections/devilkkw/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..6144b2b43c5186c4af50bbf4fe4b33565df2c174
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/README.md
@@ -0,0 +1,11 @@
+A large wildcards library kindly contributed by [@devilkkw](https://github.com/devilkkw).
+
+Find their other work below:
+
+#### HuggingFace
+###### [KKW FANTAREAL V1.0](https://huggingface.co/devilkkw/KKW_FANTAREAL_V1.0 "kkw models")
+
+#### Civitai
+###### [KKW FANTAREAL V1.0](https://civitai.com/models/3782/kkw-fantareal-v10 "kkw models")
+
+
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_categories.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_categories.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bb9afa7659fcbc5bbbf1f92243d8531f7b3baeb4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_categories.txt
@@ -0,0 +1,9 @@
+Bird
+Bug
+Cat
+Crustacean
+Dog
+Fish
+Bug
+Reptile
+Whale
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_cambrian.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_cambrian.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b8875f46490dbf052237ec8a4eb37ba8bd0b4f95
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_cambrian.txt
@@ -0,0 +1,5 @@
+Anomalocaris
+Hallucigenia
+Opabinia
+Pambdelurion
+Xidazoon
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_crustacean.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_crustacean.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ce40ce399f8137c38cb3f46165aa4aee8a727d7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_crustacean.txt
@@ -0,0 +1,8 @@
+Crab
+Crayfish
+Hermit crab
+Horseshoe crab
+Isopod
+Cymothoa exigua
+Lobster
+Shrimp
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_fish.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_fish.txt
new file mode 100644
index 0000000000000000000000000000000000000000..60cdb7d17a6667f722a872ed72d7f6376621b165
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_fish.txt
@@ -0,0 +1,44 @@
+Alligator gar
+Angelfish
+Anglerfish
+Arapaima
+Arowana
+Bichir
+Butterflyfish
+Catfish
+Carp
+Goldfish
+Koi
+Clownfish
+Coelacanth
+Dunkleosteus
+Eel
+Leopard eel
+Moray eel
+Flying fish
+Lamprey
+Leafy Seadragon
+Manta ray
+Needlefish
+Oarfish
+Oilfish
+Puffer fish
+Sailfish
+Saury
+Sawfish
+Seahorse
+Shark
+Edestus
+Goblin shark
+Great white shark
+Hammerhead shark
+Helicoprion
+Saw shark
+Whale shark
+Siamese fighting fish
+Swordfish
+Sunfish
+Surgeonfish
+Regal blue tang
+Yellow tang
+Tuna
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_invertebrate.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_invertebrate.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ba7673487b2593f8bf404e5c9f373ea06a3af4cb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_invertebrate.txt
@@ -0,0 +1,12 @@
+Abalone
+Clam
+Coral
+Cuttlefish
+Octopus
+Oyster
+Sea anemone
+Sea cucumber
+Sea slug
+Sea urchin
+Squid
+Starfish
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_whale.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_whale.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4308edb29b0a2cd564379533b4408bf2ad809b23
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_aquatic_whale.txt
@@ -0,0 +1,6 @@
+Beluga whale
+Blue whale
+Dolphin
+Humpback whale
+Narwhal
+Orca
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_cat.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_cat.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4e291c60edddc4e48a183994739012d209080471
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_cat.txt
@@ -0,0 +1,7 @@
+Black cat
+Kitten
+Cheetah
+Leopard
+Lion
+Panther
+Tiger
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_dog.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_dog.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e671960aecf2cc9efd6617629644fa05e90390cd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_dog.txt
@@ -0,0 +1,2 @@
+Puppy
+Wolf
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_insects.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_insects.txt
new file mode 100644
index 0000000000000000000000000000000000000000..793a23ead5afc1b6b26d5764ce9c0aa72e757221
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_insects.txt
@@ -0,0 +1,29 @@
+Ant
+Bee
+Beetle
+Butterfly
+Caterpillar
+Centipede
+Cicada
+Cockroach
+Cricket
+Cave cricket
+Dragonfly
+Firefly
+Fireflies
+Fly
+Grasshopper
+Ladybug
+Leucochloridium paradoxum
+Millipede
+Mosquito
+Moth
+Pillbug
+Wasp
+Arachnid
+Spider
+Scorpion
+Camel spider
+Amblypygi
+Larva
+Maggot
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_large.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_large.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d316314707d43fc97dfcbdafcd60d4ee609fae4d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_large.txt
@@ -0,0 +1,12 @@
+Alpaca
+Bear
+Bull
+Cow
+Deer
+Elephant
+Giraffe
+Gorilla
+Horse
+Kangaroo
+Mammoth
+Panda
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_medium.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_medium.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7170d13e89648fc2a207b96843d7871ec64937e1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_medium.txt
@@ -0,0 +1,14 @@
+Boar
+Echidna
+Fox
+Red fox
+Goat
+Hedgehog
+Monkey
+Platypus
+Pig
+Piglet
+Rabbit
+Angora rabbit
+Sheep
+Lamb
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_reptile_and_amphibian.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_reptile_and_amphibian.txt
new file mode 100644
index 0000000000000000000000000000000000000000..238e3702a37e7b34aec33a2857360923ce604327
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_reptile_and_amphibian.txt
@@ -0,0 +1,11 @@
+Crocodile
+Frog
+Tadpole
+Iguana
+Lizard
+Frill-necked lizard
+Snake
+Turtle
+Salamander
+Axolotl
+Hellbender
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_rodent.txt b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_rodent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..31fdc0f34a117b820df36a0c47253bdffb99ae4c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/animals_types_rodent.txt
@@ -0,0 +1,10 @@
+Beaver
+Capybara
+Chipmunk
+Ferret
+Guinea pig
+Hamster
+Mouse
+Naked mole rat
+Squirrel
+Weasel
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/birds_main.txt b/ex/dynamic-prompts/collections/devilkkw/animals/birds_main.txt
new file mode 100644
index 0000000000000000000000000000000000000000..016bc96260e06931be7986d570e362caa3a23ce2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/birds_main.txt
@@ -0,0 +1 @@
+bird
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/birds_mythological.txt b/ex/dynamic-prompts/collections/devilkkw/animals/birds_mythological.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9b2050ee8ab745b3745c9b4183ccf9d0d90f2b6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/birds_mythological.txt
@@ -0,0 +1 @@
+Phoenix
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/birds_real.txt b/ex/dynamic-prompts/collections/devilkkw/animals/birds_real.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9590ac42697ce0fe8191118367a3dcc725a23277
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/birds_real.txt
@@ -0,0 +1,179 @@
+Albatross
+Southern Royal Albatross
+Barred Buttonquail
+Blue Jay
+Bluebird
+Blue-footed Booby
+Cassowary
+Southern Cassowary
+Chick
+Chicken
+Rooster
+Cockatiel
+Cockatoo
+Blue-eyed Cockatoo
+Major Mitchell's Cockatoo
+Palm Cockatoo
+Sulphur-crested Cockatoo
+Yellowtip Cockatoo
+Condor
+Andean Condor
+Cormorant
+Crane (animal)
+Black Crowned Crane
+Grey Crowned Crane
+Red-crowned Crane
+Siberian Crane
+Crow
+Carrion Crow
+Cuckoo
+Dodo (bird)
+Duck
+Duckling
+Mallard
+Dusky Thrush
+Eagle
+Bald Eagle
+Haast's Eagle
+Little Egret
+Emu
+Falcon
+Peregrine Falcon
+Finch
+Eurasian Bullfinch
+Japanese Grosbeak
+Double-barred Finch
+Gouldian Finch
+Java Sparrow
+Zebra Finch
+Flamingo
+Frogmouth
+Blue-and-white Flycatcher
+Hill Blue Flycatcher
+Narcissus Flycatcher
+Verditer Flycatcher
+Yellow-rumped Flycatcher
+Goose
+Greater White-Fronted Goose
+Canada goose
+Hawk
+Goshawk
+Japanese Sparrowhawk
+Harris's Hawk
+Heron
+Chinese Pond Heron
+Great Blue Heron
+Grey Heron
+Hummingbird
+Japanese Bush Warbler
+Japanese Robin
+Japanese White-eye
+Common Kingfisher
+Crested Kingfisher
+Kookaburra
+Kiwi
+Southern Brown Kiwi
+Kori Bustard
+Lilac-breasted Roller
+Long-tailed Widowbird
+Magpie
+Azure-winged Magpie
+Black-throated Magpie-Jay
+Taiwan Blue Magpie
+Meadow Bunting
+Moa (animal)
+South Island Giant Moa
+Nightingale (bird)
+Northern Cardinal
+Northern Lapwing
+Nuthatch
+Oriental Dollarbird
+Black-headed Oriole
+Black-naped Oriole
+Osprey
+Ostrich
+Owl
+Snowy Owl
+Southern Boobook
+Parakeet
+Golden Parakeet
+Jandaya Parakeet
+Rose-ringed Parakeet
+Parrot
+African Grey Parrot
+Black-headed Parrot
+Eclectus Parrot
+Kakapo
+Kea (animal)
+Lovebird
+Macaw
+Blue-and-yellow Macaw
+Hyacinth Macaw
+Red-and-green Macaw
+Scarlet Macaw
+Pacific Parrotlet
+Yellow-headed Amazon
+Peacock
+Pelican
+Penguin
+Adelie Penguin
+African Penguin
+Emperor Penguin
+Fiordland Penguin
+Galapagos Penguin
+Humboldt Penguin
+Little Penguin
+Rockhopper Penguin
+Yellow-eyed Penguin
+Anthropornis
+Pheasant
+Copper Pheasant
+Ijima Copper Pheasant
+Golden Pheasant
+Green Pheasant
+Lady Amherst's Pheasant
+Pheasant-tailed Jacana
+Pigeon
+Dove
+Fantail Pigeon
+Passenger Pigeon
+White-bellied Green Pigeon
+Plover (animal)
+Puffin
+Quail
+Japanese Quail
+Raggiana Bird-of-paradise
+Red-flanked Bluetail
+Blue-fronted Redstart
+Daurian Redstart
+Resplendent Quetzal
+Roadrunner (animal)
+Ryukyu Minivet
+Seagull
+Secretarybird
+Shoebill
+Siberian Rubythroat
+Sparrow
+Eurasian Tree Sparrow
+House Sparrow
+Stork
+Oriental Stork
+Swallow
+Tree Swallow
+Swan
+Black Swan (bird)
+Takahe
+Great Tit
+Japanese Tit
+Long-tailed Tit
+Toucan
+Vulture
+Black-backed Wagtail
+Grey Wagtail
+White Wagtail
+Japanese Wagtail
+White-bellied Go-away-bird
+White-cheeked Starling
+Woodpecker
+Great Spotted Woodpecker
+Yellow Bittern
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_behavior.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_behavior.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6a6fb7ed5862688636e60542df695b4e672ecb66
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_behavior.txt
@@ -0,0 +1,5 @@
+cat loaf
+kneading
+nuzzling
+scratching
+stretching
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_breeds.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_breeds.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c87b0175e342a2df0e57b2731609b071a0e3655f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_breeds.txt
@@ -0,0 +1,4 @@
+norwegian forest cat
+persian cat
+ragdoll (cat)
+siamese cat
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_coat.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_coat.txt
new file mode 100644
index 0000000000000000000000000000000000000000..01c26e61a9c25838953c4dcd469746549d453734
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_coat.txt
@@ -0,0 +1,9 @@
+black cat
+brown cat
+calico
+grey cat
+orange cat
+pink cat
+purple cat
+tortoiseshell cat
+white cat
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_felines.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_felines.txt
new file mode 100644
index 0000000000000000000000000000000000000000..171daad5c06c6094860991416b5ca5be70f9e0e6
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_felines.txt
@@ -0,0 +1,10 @@
+black panther
+cheetah
+cougar
+jaguar
+leopard
+leopard cat
+chinese leopard cat
+lion
+serval
+tiger
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_main.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_main.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5d5b306e57150daee82d4324efba33bca060dbfe
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_main.txt
@@ -0,0 +1 @@
+cat
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_misc.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..92dcca73e7867c878d7a5dbda921cdba5d218552
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_misc.txt
@@ -0,0 +1,4 @@
+cathead
+giant cat
+kitten
+too many cats
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_places.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_places.txt
new file mode 100644
index 0000000000000000000000000000000000000000..97eade7ba6147700b4ab7e3bfc39f6373925b630
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_places.txt
@@ -0,0 +1,7 @@
+cat between legs
+cat in mouth
+cat on ass
+cat on head
+cat on lap
+cat on person
+cat on shoulder
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/cats_related.txt b/ex/dynamic-prompts/collections/devilkkw/animals/cats_related.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3ac9fec530c8453baa8e5f6ab9728d6ec8552a91
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/cats_related.txt
@@ -0,0 +1,45 @@
+cat bag
+cat band
+cat band footwear
+cat band gloves
+cat ear legwear
+cat boy
+cat bra
+cat button
+cat choker
+cat costume
+cat cutout
+cat cutout panties
+cat ear bikini
+cat ear headphones
+cat ear panties
+cat earrings
+cat ears
+slit pupils
+cat feet
+cat girl
+cat gloves
+cat hair
+cat hair ornament
+cat hat
+cat helmet
+cat hood
+cat lingerie
+cat mask
+cat nose
+cat ornament
+cat pajamas
+cat panties
+cat pasties
+cat paw
+cat paws
+cat pendant
+cat print
+cat skull
+cat slippers
+cat symbol
+cat tail
+cat thigh strap
+barbed tongue
+cat zipper
+whiskers
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/dog_breeds.txt b/ex/dynamic-prompts/collections/devilkkw/animals/dog_breeds.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8159035c6a9f1d9e19471e219c472c32a935f759
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/dog_breeds.txt
@@ -0,0 +1,38 @@
+Afghan hound
+Akita Inu
+Australian Kelpie
+Beagle
+Bernese mountain dog
+Border collie
+Borzoi
+Boston terrier
+Briard
+Bulldog
+Bull terrier
+Chihuahua
+Chinese crested dog
+Chow Chow
+Dachshund
+Dalmatian
+Dingo
+Doberman
+English springer spaniel
+German shepherd
+Golden retriever
+Great Dane
+Greyhound
+Husky
+Irish setter
+Japanese spitz
+Maltese
+Mastiff
+Old English Sheepdog
+Papillon
+Pomeranian
+Poodle
+Pug
+Shar Pei
+Shiba inu
+St. Bernard
+Welsh corgi
+Yorkshire Terrier
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/dog_canines.txt b/ex/dynamic-prompts/collections/devilkkw/animals/dog_canines.txt
new file mode 100644
index 0000000000000000000000000000000000000000..699eedc3b343f4c1f7d939007e7e8f18bdd91d89
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/dog_canines.txt
@@ -0,0 +1,2 @@
+Hyena
+Wolf
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/dog_misc.txt b/ex/dynamic-prompts/collections/devilkkw/animals/dog_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..99f2c4188996c266f2ab38c4dbbc6c29f4d59bb8
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/dog_misc.txt
@@ -0,0 +1,9 @@
+animal
+pet
+animalization
+dog on head
+dog walking
+guide dog
+no humans
+pack of dogs
+puppy
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/dog_related.txt b/ex/dynamic-prompts/collections/devilkkw/animals/dog_related.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e5aefd7a8a9f5dd447559f77508ba850edd0de9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/dog_related.txt
@@ -0,0 +1,5 @@
+dog costume
+dog ears
+dog hat
+dog paws
+dog tail
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/dogs_main.txt b/ex/dynamic-prompts/collections/devilkkw/animals/dogs_main.txt
new file mode 100644
index 0000000000000000000000000000000000000000..edca36dbf175e05aa8a8ec594f22cbf219725111
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/dogs_main.txt
@@ -0,0 +1 @@
+dog
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/ears_animal.txt b/ex/dynamic-prompts/collections/devilkkw/animals/ears_animal.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b7d9ebdcb674b5954ba6f9adde17d7c72c0fd7ef
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/ears_animal.txt
@@ -0,0 +1,27 @@
+animal ears
+bat ears
+bear ears
+rabbit ears
+cat ears
+cow ears
+deer ears
+dog ears
+fake animal ears
+ferret ears
+fox ears
+goat ears
+horse ears
+kemonomimi mode
+lion ears
+monkey ears
+mouse ears
+panda ears
+pikachu ears
+pig ears
+raccoon ears
+sheep ears
+squirrel ears
+tiger ears
+wolf ears
+fake animal ears
+hair ears
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/animals/groups_animals.txt b/ex/dynamic-prompts/collections/devilkkw/animals/groups_animals.txt
new file mode 100644
index 0000000000000000000000000000000000000000..828b84779bac94d87ae72e4cd5e73901e2d4d0c7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/animals/groups_animals.txt
@@ -0,0 +1,2 @@
+pack of dogs
+too many cats
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_headwear.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_headwear.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b405aae427e305326f9a25ca0990e465d6a0c5fa
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_headwear.txt
@@ -0,0 +1,15 @@
+balaclava
+crown
+hair bow
+hair ribbon
+hairband
+headband
+forehead protector
+sweatband
+hachimaki
+mongkhon
+headdress
+maid headdress
+tiara
+veil
+honggaitou
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_head_and_face.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_head_and_face.txt
new file mode 100644
index 0000000000000000000000000000000000000000..faeafb9b734c872f36baf576ea6fdb6ffbc818b4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_head_and_face.txt
@@ -0,0 +1,12 @@
+earrings
+hoop earrings
+stud earrings
+earclip
+glasses
+monocle
+hair ornament
+hairclip
+hairpin
+mask
+plague doctor mask
+surgical mask
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_limbs.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_limbs.txt
new file mode 100644
index 0000000000000000000000000000000000000000..77141889a7f329c6592dcef30d2a819d7ccda3c0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_limbs.txt
@@ -0,0 +1,29 @@
+anklet
+arm belt
+armband
+armlet
+bracelet
+bangle
+spiked bracelet
+bridal gauntlets
+detached sleeves
+arm warmers
+fingernails
+gloves
+boxing gloves
+elbow gloves
+fingerless gloves
+bridal gauntlets
+spiked gloves
+yugake
+mittens
+leg belt
+ring
+claw ring
+wedding ring
+wedding ring
+thighlet
+wide sleeves
+wristband
+wrist cuffs
+wrist scrunchie
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_neck_and_shoulders.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_neck_and_shoulders.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4c4ba7117387b637b482cf9cc925be0165fed393
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_neck_and_shoulders.txt
@@ -0,0 +1,17 @@
+ascot
+bowtie
+choker
+collar
+epaulettes
+feather boa
+lapels
+lapel pin
+neck ruff
+neckerchief
+necklace
+necktie
+tie clip
+neck ribbon
+scarf
+shawl
+stole
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_torso_and_misc.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_torso_and_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4638299e1672aa25d2cccfd52ac2f19b197ccc5d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_jewelry_and_accessories_torso_and_misc.txt
@@ -0,0 +1,20 @@
+aiguillette
+badge
+belly chain
+belt
+buckle
+sam browne belt
+boutonniere
+brooch
+buttons
+large buttons
+button badge
+corsage
+pentacle
+piercing
+sarong
+suspenders
+tassel
+watch
+pocket watch
+zipper
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_legs_and_feet.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_legs_and_feet.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e47dd4be39112e7bfa0abdd0ae62122966767915
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_legs_and_feet.txt
@@ -0,0 +1,18 @@
+garter belt
+garter straps
+legwear garter
+kneehighs
+leggings
+leg warmers
+over-kneehighs
+pantyhose
+thighband pantyhose
+socks
+ankle socks
+bobby socks
+loose socks
+tabi
+toe socks
+tube socks
+thighhighs
+thigh strap
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_other.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_other.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bbb655b7f622cb3ac3f878a806a2d324814a3340
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_other.txt
@@ -0,0 +1,12 @@
+dress flower
+flower trim
+frills
+fur trim
+gathers
+gold trim
+lace trim
+ribbon trim
+see-through
+silver trim
+taut shirt
+torn clothes
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_pants_and_bottomwear.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_pants_and_bottomwear.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35260324e6b6fce9a66ac70984c8ede1f5c864fa
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_pants_and_bottomwear.txt
@@ -0,0 +1,36 @@
+bloomers
+buruma
+chaps
+kilt
+pants
+bell-bottoms
+capri pants
+detached pants
+jeans
+cutoff jeans
+lowleg pants
+pants rolled up
+pelvic curtain
+petticoat
+sarong
+shorts
+bike shorts
+denim shorts
+dolphin shorts
+gym shorts
+lowleg shorts
+micro shorts
+short shorts
+shorts under skirt
+skirt
+bubble skirt
+high-waist skirt
+high-low skirt
+long skirt
+lowleg skirt
+microskirt
+miniskirt
+overall skirt
+plaid skirt
+pleated skirt
+suspender skirt
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_shirts_and_topwear.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_shirts_and_topwear.txt
new file mode 100644
index 0000000000000000000000000000000000000000..298b7e13aca58ab027c9bbd05cee0b954bf99294
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_shirts_and_topwear.txt
@@ -0,0 +1,66 @@
+blouse
+frilled shirt
+sleeveless shirt
+bustier
+crop top
+camisole
+cardigan
+cardigan vest
+coat
+duffel coat
+fur coat
+fur-trimmed coat
+long coat
+overcoat
+peacoat
+raincoat
+yellow raincoat
+transparent raincoat
+trench coat
+winter coat
+compression shirt
+corset
+dress
+halterneck
+criss-cross halter
+halterneck
+hoodie
+jacket
+blazer
+cropped jacket (bolero)
+letterman jacket
+safari jacket
+suit jacket
+sukajan
+trench coat
+poncho
+raglan sleeves
+sash
+shoulder sash
+stole
+shirt
+collared shirt
+dress shirt
+off-shoulder shirt
+sleeveless shirt
+striped shirt
+t-shirt
+shrug
+surcoat
+sweater
+pullover
+turtleneck
+sleeveless turtleneck
+sweater dress
+ribbed sweater
+aran sweater
+tabard
+tailcoat
+tank top
+stringer
+tube top
+bandeau
+underbust
+vest
+sweater vest
+waistcoat
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_shoes_and_footwear.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_shoes_and_footwear.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b861399920eec2cf4fe1aecddc2419e24343a0b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_shoes_and_footwear.txt
@@ -0,0 +1,44 @@
+boots
+ankle boots
+armored boots
+knee boots
+high heel boots
+lace-up boots
+rubber boots
+thigh boots
+cowboy boots
+spurs
+cross-laced footwear
+flats
+footwear ribbon
+high heels
+loafers
+kiltie loafers
+mary janes
+platform footwear
+pointy footwear
+pumps
+sandals
+clog sandals
+cross-laced sandals
+flip-flops
+gladiator sandals
+geta
+okobo
+waraji
+zouri
+oxfords
+saddle shoes
+monk shoes
+slippers
+animal slippers
+ballet slippers
+crocs
+uwabaki
+sneakers
+high tops
+converse
+toeless footwear
+uwabaki
+winged footwear
+wedge heels
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_patterns.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_patterns.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3dbaa386206aec8685f5486ed712e3cb03b4cb39
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_patterns.txt
@@ -0,0 +1,10 @@
+argyle
+camouflage
+checkered
+floral print
+pinstripe pattern
+plaid
+polka dot
+striped
+multicolored stripes
+double vertical stripe
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_prints.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_prints.txt
new file mode 100644
index 0000000000000000000000000000000000000000..41d3a05619e602fbf3b3b3a1247815d184f2dc86
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_styles_and_patterns_prints.txt
@@ -0,0 +1,40 @@
+animal print
+bat print
+bear print
+butterfly print
+cow print
+leopard print
+tiger print
+snake print
+clover print
+crescent print
+floral print
+rose print
+cherry blossom print
+sunflower print
+morning glory print
+food print
+fruit pattern
+apple print
+blueberry print
+cherry print
+kiwi print
+lemon print
+pineapple print
+orange print
+strawberry print
+watermelon print
+leaf print
+maple leaf print
+moon print
+musical note print
+paw print
+petal print
+piano print
+sparkle print
+triangle print
+space print
+starry sky print
+star print
+wave print
+wing print
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_swimsuits_and_bodysuits.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_swimsuits_and_bodysuits.txt
new file mode 100644
index 0000000000000000000000000000000000000000..70c98b2cc8f857e63e275f8f651696aba982b572
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_swimsuits_and_bodysuits.txt
@@ -0,0 +1,36 @@
+bikesuit
+racing suit
+bodystocking
+bodysuit
+jumpsuit
+short jumpsuit
+leotard
+strapless leotard
+playboy bunny
+swimsuit
+competition swimsuit
+slingshot swimsuit
+school swimsuit
+bikini
+leaf bikini
+string bikini
+micro bikini
+side-tie bikini bottom
+lowleg bikini
+thong bikini
+venus bikini
+sports bikini
+tankini
+criss-cross halter
+swim briefs
+jammers
+legskin
+rash guard
+robe
+bathrobe
+open robe
+kesa
+romper
+sarong
+tunic
+unitard
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_traditional_clothing.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_traditional_clothing.txt
new file mode 100644
index 0000000000000000000000000000000000000000..22a18844b20e87b6dc252f6db40a6c060e2da06f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_traditional_clothing.txt
@@ -0,0 +1,42 @@
+chinese clothes
+changpao
+china dress
+fengguan
+hanfu
+longpao
+tangzhuang
+dirndl
+japanese clothes
+fundoshi
+yamakasa
+geta
+hakama
+hakama skirt
+hakama short skirt
+hakama pants
+kimono
+furisode
+layered kimono
+short kimono
+uchikake
+yukata
+haori
+happi
+chanchanko
+dotera
+hanten
+kimono skirt
+miko
+nontraditional miko
+sarashi
+Midriff sarashi
+Chest sarashi
+Budget sarashi
+Undone sarashi
+straw cape
+mino boushi
+tabi
+tasuki
+korean clothes
+hanbok
+vietnamese dress
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/attire/attire_uniforms_and_costumes.txt b/ex/dynamic-prompts/collections/devilkkw/attire/attire_uniforms_and_costumes.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bfcddd4f0d56333ac39a734fe9dd69249599b0b1
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/attire/attire_uniforms_and_costumes.txt
@@ -0,0 +1,64 @@
+apron
+armor
+armored dress
+bikini armor
+band uniform
+cape
+capelet
+hood
+shoulder cape
+cassock
+cheerleader
+costume
+ghost costume
+gym uniform
+buruma
+habit
+harem outfit
+loincloth
+hazmat suit
+hev suit
+kigurumi
+animal costume
+bear costume
+boar costume
+cat costume
+cow costume
+dog costume
+monkey costume
+mouse costume
+panda costume
+penguin costume
+pig costume
+rabbit costume
+reindeer costume
+seal costume
+sheep costume
+tiger costume
+maid
+miko
+nontraditional miko
+military uniform
+overalls
+pajamas
+pilot suit
+plugsuit
+sailor
+santa costume
+school uniform
+serafuku
+sailor dress
+gakuran
+meiji schoolgirl uniform
+shosei
+suit
+business suit
+pant suit
+skirt suit
+tuxedo
+track suit
+sweatpants
+sweatshirt
+tutu
+waitress
+cowboy western
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_genre.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_genre.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7ead14669f1ba3212284e1a87b912ee0c9cdea75
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_genre.txt
@@ -0,0 +1,4 @@
+Heavy Metal
+Jazz
+K-pop
+Punk
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_brass.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_brass.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6a94c3345e05248469d9c6e0ddb5a880be7aa264
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_brass.txt
@@ -0,0 +1,9 @@
+bugle
+euphonium
+flugelhorn
+french horn
+sousaphone
+trombone
+bass trombone
+trumpet
+tuba
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_keyboard.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_keyboard.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b421731fa150b6e04c88c49545eb1d5e5d76b555
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_keyboard.txt
@@ -0,0 +1,16 @@
+accordion
+concertina
+melodica
+harpsichord
+keyboard
+keytar
+synthesizer
+organ
+electric organ
+pipe organ
+piano
+piano keys
+clavia nord
+fender rhodes
+grand piano
+upright piano
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_other.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_other.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7344e2bb95999849a34478adaddfd7cbc2b563da
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_other.txt
@@ -0,0 +1,2 @@
+jaw harp
+theremin
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_percussion.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_percussion.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dad6f1b135898a188b7cd2171af9688ab3d1b523
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_percussion.txt
@@ -0,0 +1,20 @@
+bell
+cowbell
+handbell
+jingle bell
+castanets
+cymbals
+drum
+bongo drums
+conga drums
+drumsticks
+taiko drum
+timpani
+tsuzumi
+maracas
+marimba
+pyeongyeong
+sistrum
+tambourine
+triangle
+xylophone
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_strings.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_strings.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cda526924b633557e997346599527d2588aef361
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_strings.txt
@@ -0,0 +1,33 @@
+banjo
+balalaika
+bass guitar
+bow
+cello
+double bass
+electric double bass
+erhu
+gayageum
+guitar
+acoustic guitar
+electric guitar
+guqin
+guzheng
+harp
+lyre
+kantele
+kokyuu
+koto
+lute
+biwa lute
+mandolin
+morin khuur
+pipa
+ruan
+sitar
+shamisen
+tonkori
+ukulele
+viola
+violin
+wolgeum
+yueqin
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_woodwinds.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_woodwinds.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8916ef6ccfe28769a06086c4a8e93073d1454059
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_instruments_woodwinds.txt
@@ -0,0 +1,13 @@
+bagpipes
+bassoon
+clarinet
+crumhorn
+electric wind instrument
+flute
+bass flute
+fife
+harmonica
+oboe
+ocarina
+recorder
+saxophone
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_misc.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1417ec3169d11a2ca6da89bb7e0f0b692ee6d102
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_misc.txt
@@ -0,0 +1,17 @@
+audio visualizer
+horn
+vuvuzela
+instrument
+instrument case
+guitar case
+playing instrument
+music
+notes
+musical note
+spoken musical note
+treble clef
+bass clef
+sheet music
+music stand
+singing
+karaoke
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_places.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_places.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6547b73f8cde1bdd0273a6ce7407e3bcdb94ec90
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_places.txt
@@ -0,0 +1,4 @@
+concert
+radio booth
+recording studio
+stage
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_media.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_media.txt
new file mode 100644
index 0000000000000000000000000000000000000000..474bc9dc9e7516a527f4287d6157356f287df740
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_media.txt
@@ -0,0 +1,3 @@
+cassette tape
+cd
+record
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_other.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_other.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7af6aa64d65125b767c9b5bfa7c316387d9c02aa
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_other.txt
@@ -0,0 +1,10 @@
+amplifier
+tube amplifier
+megaphone
+microphone
+microphone stand
+pop filter
+studio microphone
+vintage microphone
+boom microphone
+mixing console
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_players.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_players.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e51f6b0f4713b6aecacc63a8b08e1f0a9095c8b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_players.txt
@@ -0,0 +1,9 @@
+cd player
+digital media player
+ipod
+iphone
+phonograph
+turntable
+radio
+stereo
+walkman
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_speakers_and_headphones.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_speakers_and_headphones.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0d3baefdc68320ebdc4109da967ee6458763c865
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_playback_speakers_and_headphones.txt
@@ -0,0 +1,12 @@
+earphones
+earbuds
+earpiece
+ear protection
+earmuffs
+headphones
+behind-the-head headphones
+bunny headphones
+cat ear headphones
+headphones for animal ears
+headset
+speaker
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/audio/audio_professions.txt b/ex/dynamic-prompts/collections/devilkkw/audio/audio_professions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..93c8eb9e986bd43e44749ab85819c38b1c6566fb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/audio/audio_professions.txt
@@ -0,0 +1,4 @@
+conductor
+dj
+guitar girl
+idol
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_colors.txt b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_colors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4b4a541b9c16c39e0cbfdfba04a9b19724b36100
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_colors.txt
@@ -0,0 +1,16 @@
+aqua background
+beige background
+black background
+blue background
+brown background
+green background
+grey background
+lavender background
+orange background
+pink background
+purple background
+red background
+sepia background
+tan background
+white background
+yellow background
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_multiple_colors.txt b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_multiple_colors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a812871b4fe19c0ba00ff009027d27825dae4cfd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_multiple_colors.txt
@@ -0,0 +1,5 @@
+gradient background
+multicolored background
+rainbow background
+heaven condition
+two-tone background
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_other.txt b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_other.txt
new file mode 100644
index 0000000000000000000000000000000000000000..29789fc24d17b2490fe190185b51398af958a8cf
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_other.txt
@@ -0,0 +1,22 @@
+background text
+backlighting
+blending
+blurry background
+card background
+chibi inset
+drama layer
+fiery background
+flag background
+floral background
+fruit background
+heart background
+imageboard colors
+lace background
+mosaic background
+paneled background
+photo background
+projected inset
+simple background
+starry background
+transparent background
+zoom layer
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_patterns.txt b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_patterns.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7ddfc64b07e2918ed5c583f495bb130889174395
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/background/backgrounds_patterns.txt
@@ -0,0 +1,14 @@
+argyle background
+checkered background
+food-themed background
+halftone background
+honeycomb background
+paw print background
+plaid background
+polka dot background
+simple background
+snowflake background
+spiral background
+strawberry background
+striped background
+sunburst background
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anatomy.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anatomy.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2b190a14eedc17b68829fe525933c8983e90ad1c
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anatomy.txt
@@ -0,0 +1,8 @@
+ass
+ass expansion
+bad ass
+flat ass
+huge ass
+spread ass
+butt crack
+wedgie
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_hands.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_hands.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0866d23bc590e7ac3d9a5e9c9e304be96d9eeabb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_hands.txt
@@ -0,0 +1,8 @@
+anal fingering
+anal fisting
+ass grab
+ass smack
+covering anus
+covering ass
+groping
+hand on own ass
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_heads.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_heads.txt
new file mode 100644
index 0000000000000000000000000000000000000000..da25ed06df3d59e3a853a87629d520c10be5ad22
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_and_heads.txt
@@ -0,0 +1,3 @@
+ass biting
+smelling ass
+head on ass
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anus_anatomy.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anus_anatomy.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b6c0eb2dbc8c954cabe932448e657a463cb21efe
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_anus_anatomy.txt
@@ -0,0 +1,5 @@
+anal hair
+anus
+no anus
+spread anus
+tiny anus
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_misc.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f65cf50f0ee603e4c1d52ce84caa19347dc13ffb
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_misc.txt
@@ -0,0 +1,10 @@
+anal
+anal hook
+ass-to-ass
+ass cutout
+ass on glass
+ass ache
+ass focus
+ass shake
+ass visible through thighs
+x anus
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ass_with_cum.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_with_cum.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eb6d44a8b0ec5e8380fb2d98071c06431ee79840
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ass_with_cum.txt
@@ -0,0 +1,2 @@
+cum in ass
+cum on ass
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_appendages.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_appendages.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6864b7c05f20094b454a1a169886fa449f4da905
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_appendages.txt
@@ -0,0 +1,24 @@
+thick arms
+biceps
+feet
+bad feet
+barefoot
+dirty feet
+soles
+hands
+palms
+doll joints
+robot joints
+knees
+kneepits
+legs
+long legs
+slim legs
+tail
+tentacles
+thighs
+groin tendon
+thick thighs
+toes
+ninja toes
+wings
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_head.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_head.txt
new file mode 100644
index 0000000000000000000000000000000000000000..001f473bae3b19479d021fd1f003df0afc9faf68
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_head.txt
@@ -0,0 +1,11 @@
+ear focus
+face
+forehead
+forehead mark
+beard
+mustache
+head wings
+lips
+nape
+tongue
+long tongue
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_lower.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_lower.txt
new file mode 100644
index 0000000000000000000000000000000000000000..61c0a09c0632eae2d50b0851e2a0c01e94bbfdd9
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_lower.txt
@@ -0,0 +1,43 @@
+anus
+ass
+cloaca
+dimples of venus
+groin
+wide hips
+intestines
+liver
+narrow waist
+pubic hair
+pussy
+cleft of venus
+clitoris
+fat mons
+labia
+mons pubis
+no pussy
+penis
+bulge
+disembodied penis
+erection
+extra penises
+foreskin
+flaccid
+gigantic penis
+large penis
+small penis
+multiple penises
+huge penis
+veiny penis
+perineum
+prostate
+pseudopenis
+stomach
+abs
+belly
+navel
+obliques
+stomach (organ)
+testicles
+no testicles
+uterus
+cervix
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_upper.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_upper.txt
new file mode 100644
index 0000000000000000000000000000000000000000..804ff4f6273d759f85123dbf1eba0de579f052a7
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/body_parts_torso_upper.txt
@@ -0,0 +1,19 @@
+areolae
+large areolae
+glands of montgomery
+armpits
+back
+breasts
+collarbone
+heart
+lungs
+neck
+long neck
+nipples
+covered nipples
+inverted nipples
+no nipples
+puffy nipples
+small nipples
+pectorals
+ribs
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_docking.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_docking.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9fc18cf65996b6bf47bf85ac65c97e473e42c091
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_docking.txt
@@ -0,0 +1,3 @@
+asymmetrical docking
+symmetrical docking
+nipple-to-nipple
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_hands.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_hands.txt
new file mode 100644
index 0000000000000000000000000000000000000000..00bed9c27c14218bfca44b29fc14a333e2c3633f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_hands.txt
@@ -0,0 +1,21 @@
+breast hold
+breast grab
+flat chest grab
+guided breast grab
+breast lift
+breast poke
+breast press
+breast pull
+breast punch
+breast slap
+breast squeeze
+breast suppress
+groping
+arm between breasts
+hand in bra
+nipple flick
+nipple press
+nipple push
+nipple pull
+nipple rub
+nipple tweak
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_head.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_head.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e91ab812816743338398c9900dc05e29a9a558ba
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_head.txt
@@ -0,0 +1,6 @@
+breast smother
+breast pillow
+breasts on head
+face to breasts
+face to pecs
+head between breasts
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_mouth.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_mouth.txt
new file mode 100644
index 0000000000000000000000000000000000000000..86509ee8b9ba35166a267c7356c36c3c718e3c23
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_mouth.txt
@@ -0,0 +1,8 @@
+breast biting
+breastfeeding
+breast sucking
+self breast sucking
+mutual breast sucking
+nursing handjob
+nipple biting
+licking nipple
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_penis.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_penis.txt
new file mode 100644
index 0000000000000000000000000000000000000000..681289917f3d1528ff975bb7db48eee8c817e842
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_penis.txt
@@ -0,0 +1,9 @@
+paizuri
+cooperative paizuri
+naizuri
+cooperative naizuri
+paizuri under clothes
+paizuri over clothes
+penis to breast
+penis under breasts
+nipple penetration
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_toys.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_toys.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4bd547473254a6b9d646a72e8fa9296777ebb32b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_and_other_body_parts_toys.txt
@@ -0,0 +1,17 @@
+nipple clamps
+nipple leash
+nipple piercing
+areola piercing
+nipple bar
+nipple bells
+nipple chain
+nipple lock
+nipple rings
+nipple stretcher
+nipple tag
+nipple plug
+nipple sleeves
+nipple torture
+tied nipples
+nipple ribbon
+vibrator on nipple
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_clothes_for.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_clothes_for.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7a958827022004c7d8e9f97f21c775128aacd5ee
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_clothes_for.txt
@@ -0,0 +1,27 @@
+bandeau
+bikini
+bikini bottom only
+cupless bikini
+bra
+cupless bra
+hand in bra
+no bra
+nursing bra
+shelf bra
+breastless clothes
+breast curtain
+bustier
+center opening
+chest binder
+Cinderella bust
+cleavage cutout
+corset
+framed breasts
+nipple cutout
+nippleless clothes
+panties on breasts
+plunging neckline
+rei no himo
+sarashi
+taut shirt
+underbust
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_descriptions.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_descriptions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7c542d9b0c324c80ee5e834a99cf7508438f17b2
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_descriptions.txt
@@ -0,0 +1,10 @@
+asymmetrical breasts
+bouncing breasts
+breasts apart
+floating breasts
+hanging breasts
+perky breasts
+sagging breasts
+unaligned breasts
+veiny breasts
+pointy breasts
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_main.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_main.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06b07ad92507d4980b2d33cc35331adaf5d1b6fc
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_main.txt
@@ -0,0 +1 @@
+breasts
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_misc.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f6c69f29c47b4fe3fcbca43bfee93c4c99328469
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_misc.txt
@@ -0,0 +1,32 @@
+alternate breast size
+between breasts
+card between breasts
+arm between breasts
+head between breasts
+necktie between breasts
+person between breasts
+breast bondage
+tied breast
+breast mousepad
+breast implants
+breast rest
+carried breast rest
+breasts on glass
+bust cup
+covering breasts
+cum on breasts
+food on breasts
+chocolate on breasts
+lactation
+breast milk
+breast pump
+lactating into cup
+lactation through clothes
+milking machine
+nipple injection
+object on breast
+bubble tea challenge
+headphones on breasts
+Tawawa challenge
+object on pectorals
+oppai challenge
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_ranges.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_ranges.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7a8fe5943927180bc3eeee8a3c941409bc2fd71d
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_ranges.txt
@@ -0,0 +1,6 @@
+flat chest
+small breasts
+medium breasts
+large breasts
+huge breasts
+gigantic breasts
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_scenes_revolving_around.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_scenes_revolving_around.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9ed06b4a91d35dd8d77f20684270b8754460259e
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_sizes_scenes_revolving_around.txt
@@ -0,0 +1,16 @@
+breast conscious
+breast envy
+breast awe
+flat envy
+breast expansion
+breast reduction
+breast padding
+breast size switch
+bust chart
+bust measuring
+flying button
+looking at breasts
+convenient breasts
+inconvenient breasts
+oversized breast cup
+weighing breasts
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_parts.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_parts.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8283536862e8c02a2c819dfe1e6c542772c04e4b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_parts.txt
@@ -0,0 +1,21 @@
+areolae
+areola slip
+dark areolae
+glands of montgomery
+large areolae
+light areolae
+backboob
+bursting breasts
+cleavage
+nipples
+dark nipples
+covered nipples
+inverted nipples
+long nipples
+nipple slip
+no nipples
+puffy nipples
+small nipples
+nipple hair
+sideboob
+underboob
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_whole.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_whole.txt
new file mode 100644
index 0000000000000000000000000000000000000000..66aa2dfa1680931b1201ecd797eaedd80aabb42b
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/breasts_visibilty_whole.txt
@@ -0,0 +1,5 @@
+breast slip
+breastless clothes
+breasts out
+impossible shirt
+one breast out
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ears_misc.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_misc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71bf21c706c20cc38d1df5ee11d9061151b2a6fa
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_misc.txt
@@ -0,0 +1,8 @@
+covering ears
+ear biting
+ear grab
+ear pull
+ear wiggle
+hand on ear
+holding ears
+licking ear
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ears_number.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_number.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6dd31ba815bb69c795118d712c4499651d56680f
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_number.txt
@@ -0,0 +1 @@
+extra ears
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ears_objects.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_objects.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9bd9729932e5fbdff5b72206fa69cbdf1c63a813
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_objects.txt
@@ -0,0 +1,6 @@
+ear piercing
+ear protection
+earrings
+single earring
+headphones
+behind ear
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/ears_other.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_other.txt
new file mode 100644
index 0000000000000000000000000000000000000000..107def8a43f4326f81f443d73ce02142a3603bfe
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/ears_other.txt
@@ -0,0 +1,3 @@
+pointy ears
+long pointy ears
+robot ears
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_accessories.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_accessories.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2b52e63f43a16ee02197de134ccff7ee4a02b9d4
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_accessories.txt
@@ -0,0 +1,16 @@
+covering eyes
+hair over eyes
+hair over one eye
+bandage over one eye
+blindfold
+hat over eyes
+eyepatch
+eyelashes
+colored eyelashes
+fake eyelashes
+eyes visible through hair
+glasses
+makeup
+eyeliner
+eyeshadow
+mascara
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_around.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_around.txt
new file mode 100644
index 0000000000000000000000000000000000000000..63eac617e9fe7be35c91c7b7403390ad4679e4bd
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_around.txt
@@ -0,0 +1,7 @@
+bags under eyes
+aegyo sal
+bruised eye
+flaming eyes
+glowing eyes
+glowing eye
+mako eyes
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_closed.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_closed.txt
new file mode 100644
index 0000000000000000000000000000000000000000..860e6e93b9c626eb25a363a1194aa5b2c859b2c0
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_closed.txt
@@ -0,0 +1,7 @@
+blinking
+closed eyes
+wince
+one eye closed
+;<
+;>
+;p
\ No newline at end of file
diff --git a/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_emotions_and_expressions.txt b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_emotions_and_expressions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..762d551d9bfa3bd6f357c2c48feb9f1a4fc451c5
--- /dev/null
+++ b/ex/dynamic-prompts/collections/devilkkw/body-1/eyes_emotions_and_expressions.txt
@@ -0,0 +1,17 @@
+> <
+X3
+XD
+DX
+O o
+0 0
+3 3
+6 9
+@ @
+^ ^
+^o^
+| |
+|| ||
+= =
++ +
+. .
+