Fix the issue of model detection failure for Lora, Lycoris, and other models.

Former-commit-id: 44784a0adfd21834284192eb548252b1ebc41727
This commit is contained in:
Physton
2023-05-25 02:36:28 +08:00
parent 6ad707e599
commit 6d61759d5a
6 changed files with 67 additions and 52 deletions

View File

@@ -1 +1 @@
78056fe09060f4b42be6de021963a5b5adc5624d
196fbc8499f21aa333d5a2422972b65cde24fc46

View File

@@ -1 +1 @@
5ff530d7d33e2d7fb15d09f76b1f2c5d6fa1bcad
221c1d74c832469a2b4d85f554cffbc0f5dc530f

View File

@@ -0,0 +1,17 @@
from modules import script_callbacks, extra_networks, prompt_parser, shared, ui_extra_networks
def get_extra_networks():
result = []
try:
for extra_page in ui_extra_networks.extra_pages:
resultItem = {
'name': extra_page.name,
'title': extra_page.title,
'items': []
}
for item in extra_page.list_items():
resultItem['items'].append(item)
result.append(resultItem)
except Exception as e:
pass
return result

View File

@@ -13,6 +13,7 @@ from scripts.translate import translate
from scripts.history import history
from scripts.csv import get_csvs, get_csv
from scripts.styles import getStyleFullPath, getExtensionCssList
from scripts.get_extra_networks import get_extra_networks
VERSION = '0.0.1'
@@ -217,6 +218,10 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
async def _get_extension_css_list():
return {"css_list": getExtensionCssList()}
@app.get("/physton_prompt/get_extra_networks")
async def _get_extra_networks():
return {"extra_networks": get_extra_networks()}
try:
script_callbacks.on_app_started(on_app_started)
print('sd-webui-prompt-all-in-one background API service started successfully.')

View File

@@ -33,7 +33,7 @@
:loras="loras"
:lycos="lycos"
:embeddings="embeddings"
></physton-prompt>
></physton-prompt>
</template>
<translate-setting ref="translateSetting" v-model:language-code="languageCode"
:translate-apis="translateApis" :languages="languages"
@@ -74,7 +74,8 @@
</div>
<div class="paste-popup-title">{{ pasteTitle }}</div>
<div class="paste-popup-body">
<textarea class="paste-content" v-model="pasteContent" :placeholder="getLang('please_enter_the_content_here')"></textarea>
<textarea class="paste-content" v-model="pasteContent"
:placeholder="getLang('please_enter_the_content_here')"></textarea>
<div v-if="!pasteLoading" class="paste-submit" @click="onClickPasteSubmit">Submit</div>
<div v-else class="paste-submit">
<icon-svg name="loading"/>
@@ -380,57 +381,45 @@ export default {
getLang(key) {
return common.getLang(key, this.languageCode, this.languages)
},
watchVars() {
// loras、lycos、embeddings
let txt2img_textual_inversion_cards = null
let txt2img_textual_inversion_cards_html = ''
let text2img_lora_cards = null
let text2img_lora_cards_html = ''
let txt2img_lycoris_cards = null
let txt2img_lycoris_cards_html = ''
getExtraNetworks() {
this._getExtraNetworks()
setInterval(() => {
if (!txt2img_textual_inversion_cards) txt2img_textual_inversion_cards = document.getElementById('txt2img_textual_inversion_cards')
if (txt2img_textual_inversion_cards && txt2img_textual_inversion_cards_html !== txt2img_textual_inversion_cards.innerHTML) {
let embeddings = []
txt2img_textual_inversion_cards_html = txt2img_textual_inversion_cards.innerHTML
let cards = txt2img_textual_inversion_cards.querySelectorAll('.card')
cards.forEach(card => {
let name = card.querySelector('.name')
if (!name) return
embeddings.push(name.innerText.trim())
})
this.embeddings = embeddings
}
if (!text2img_lora_cards) text2img_lora_cards = document.getElementById('txt2img_lora_cards')
if (text2img_lora_cards && text2img_lora_cards_html !== text2img_lora_cards.innerHTML) {
let loras = []
text2img_lora_cards_html = text2img_lora_cards.innerHTML
let cards = text2img_lora_cards.querySelectorAll('.card')
cards.forEach(card => {
let name = card.querySelector('.name')
if (!name) return
loras.push(name.innerText.trim())
})
this.loras = loras
}
if (!txt2img_lycoris_cards) txt2img_lycoris_cards = document.getElementById('txt2img_lycoris_cards')
if (txt2img_lycoris_cards && txt2img_lycoris_cards_html !== txt2img_lycoris_cards.innerHTML) {
let lycos = []
txt2img_lycoris_cards_html = txt2img_lycoris_cards.innerHTML
let cards = txt2img_lycoris_cards.querySelectorAll('.card')
cards.forEach(card => {
let name = card.querySelector('.name')
if (!name) return
lycos.push(name.innerText.trim())
})
this.lycos = lycos
}
}, 1000)
this._getExtraNetworks()
}, 5000)
},
_getExtraNetworks() {
this.gradioAPI.getExtraNetworks().then(res => {
if (!res) return
res.forEach(extraNetwork => {
if (extraNetwork.name === 'textual inversion') {
let list = []
extraNetwork.items.forEach(item => {
list.push(item.name)
})
this.embeddings = list
} else if (extraNetwork.name === 'lora' || extraNetwork.name === 'lycoris') {
let list = []
extraNetwork.items.forEach(item => {
list.push(item.name)
if (typeof item.metadata === 'string' && item.metadata) {
item.metadata = JSON.parse(item.metadata)
if (!item.metadata) return
if (item.metadata.ss_output_name) {
list.push(item.metadata.ss_output_name)
}
}
})
if (extraNetwork.name === 'lora') {
this.loras = list
} else {
this.lycos = list
}
}
})
})
},
init() {
this.watchVars()
this.getExtraNetworks()
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto']
this.prompts.forEach(item => {
dataListsKeys.push(item.hideDefaultInputKey)

View File

@@ -146,4 +146,8 @@ export default class GradioAPI {
async getExtensionCssList() {
return (await this.api.get("/get_extension_css_list")).data.css_list
}
async getExtraNetworks() {
return (await this.api.get("/get_extra_networks")).data.extra_networks
}
}