aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAUTOMATIC1111 <16777216c@gmail.com>2023-05-09 08:12:13 +0000
committerGitHub <noreply@github.com>2023-05-09 08:12:13 +0000
commit7e02a00c81a2643de0924a325b6b55f990bd69a9 (patch)
treeb559ab0c70b1ff901407c1eca28be135f67c90fc
parent11ae5399f667aec3fa00d99a0e5eeeeb3bafeb43 (diff)
parentf9abe4cddcdc6704be02633d9d5ed9640d6b9008 (diff)
downloadstable-diffusion-webui-gfx803-7e02a00c81a2643de0924a325b6b55f990bd69a9.tar.gz
stable-diffusion-webui-gfx803-7e02a00c81a2643de0924a325b6b55f990bd69a9.tar.bz2
stable-diffusion-webui-gfx803-7e02a00c81a2643de0924a325b6b55f990bd69a9.zip
Merge pull request #10194 from DumoeDss/dev
Add api method to get LoRA models with prompt
-rw-r--r--extensions-builtin/Lora/lora.py7
-rw-r--r--extensions-builtin/Lora/scripts/api.py31
2 files changed, 37 insertions, 1 deletions
diff --git a/extensions-builtin/Lora/lora.py b/extensions-builtin/Lora/lora.py
index d488b5ae..05162e41 100644
--- a/extensions-builtin/Lora/lora.py
+++ b/extensions-builtin/Lora/lora.py
@@ -3,6 +3,7 @@ import os
import re
import torch
from typing import Union
+import scripts.api as api
from modules import shared, devices, sd_models, errors, scripts
@@ -443,9 +444,13 @@ def infotext_pasted(infotext, params):
if added:
params["Prompt"] += "\n" + "".join(added)
-
available_loras = {}
available_lora_aliases = {}
loaded_loras = []
list_available_loras()
+try:
+ import modules.script_callbacks as script_callbacks
+ script_callbacks.on_app_started(api.api)
+except:
+ pass \ No newline at end of file
diff --git a/extensions-builtin/Lora/scripts/api.py b/extensions-builtin/Lora/scripts/api.py
new file mode 100644
index 00000000..f1f2e2fc
--- /dev/null
+++ b/extensions-builtin/Lora/scripts/api.py
@@ -0,0 +1,31 @@
+from fastapi import FastAPI
+import gradio as gr
+import json
+import os
+import lora
+
+def get_lora_prompts(path):
+ directory, filename = os.path.split(path)
+ name_without_ext = os.path.splitext(filename)[0]
+ new_filename = name_without_ext + '.civitai.info'
+ try:
+ new_path = os.path.join(directory, new_filename)
+ if os.path.exists(new_path):
+ with open(new_path, 'r') as f:
+ data = json.load(f)
+ trained_words = data.get('trainedWords', [])
+ if len(trained_words) > 0:
+ result = ','.join(trained_words)
+ return result
+ else:
+ return ''
+ else:
+ return ''
+ except Exception as e:
+ return ''
+
+def api(_: gr.Blocks, app: FastAPI):
+ @app.get("/sdapi/v1/loras")
+ async def get_loras():
+ return [{"name": name, "path": lora.available_loras[name].filename, "prompt": get_lora_prompts(lora.available_loras[name].filename)} for name in lora.available_loras]
+