mirror of
https://github.com/Physton/sd-webui-prompt-all-in-one.git
synced 2026-04-30 19:21:43 +00:00
Function Optimization #67
Former-commit-id: 4fd4bd2a95c68a4012817c47a5e131cf76833b1b
This commit is contained in:
@@ -1 +1 @@
|
||||
9bfe45c736ff2add9d4c3d78746551fd905d605a
|
||||
30a45a509ed9cfefba253accd927614a629673f5
|
||||
@@ -1 +1 @@
|
||||
5114642d3aa7d6bbe3e00ced201b79913eed2272
|
||||
6375861de14396709c1487cd10fbc21fb15b0c48
|
||||
@@ -1,4 +1,16 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
from modules import script_callbacks, extra_networks, prompt_parser, shared, ui_extra_networks
|
||||
import json
|
||||
import os
|
||||
|
||||
filters = [
|
||||
'filename',
|
||||
'description',
|
||||
'search_term',
|
||||
'local_preview',
|
||||
'metadata',
|
||||
]
|
||||
|
||||
def get_extra_networks():
|
||||
result = []
|
||||
@@ -10,7 +22,44 @@ def get_extra_networks():
|
||||
'items': []
|
||||
}
|
||||
for item in extra_page.list_items():
|
||||
# 解析metadata
|
||||
output_name = None
|
||||
try:
|
||||
if 'metadata' in item and item['metadata']:
|
||||
metadata = json.loads(item['metadata'])
|
||||
if metadata and 'ss_output_name' in metadata:
|
||||
output_name = metadata['ss_output_name']
|
||||
except Exception as e:
|
||||
pass
|
||||
item['output_name'] = output_name
|
||||
|
||||
# 获取civitai.info
|
||||
item['civitai_info'] = {}
|
||||
try:
|
||||
if 'filename' in item and item['filename']:
|
||||
if extra_page.name == 'textual inversion':
|
||||
base, ext = os.path.splitext(item['filename'])
|
||||
info_file = base + '.civitai.info'
|
||||
else:
|
||||
info_file = item['filename'] + '.civitai.info'
|
||||
if os.path.isfile(info_file):
|
||||
with open(info_file, 'r') as f:
|
||||
info = json.load(f)
|
||||
info = {
|
||||
'name': info.get('name', ''),
|
||||
'model': info.get('model', {}),
|
||||
}
|
||||
item['civitai_info'] = info
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
# 过滤掉不需要的字段
|
||||
for filter in filters:
|
||||
if filter in item:
|
||||
del item[filter]
|
||||
|
||||
resultItem['items'].append(item)
|
||||
|
||||
result.append(resultItem)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
v-model:only-csv-on-auto="onlyCsvOnAuto"
|
||||
@click:select-language="onSelectLanguageClick"
|
||||
@click:select-theme="onSelectThemeClick"
|
||||
:extra-networks="extraNetworks"
|
||||
:loras="loras"
|
||||
:lycos="lycos"
|
||||
:embeddings="embeddings"
|
||||
@@ -218,6 +219,7 @@ export default {
|
||||
historyCurrentPrompt: '',
|
||||
favoriteCurrentPrompt: '',
|
||||
|
||||
extraNetworks: [],
|
||||
loras: [],
|
||||
lycos: [],
|
||||
embeddings: [],
|
||||
@@ -381,45 +383,8 @@ export default {
|
||||
getLang(key) {
|
||||
return common.getLang(key, this.languageCode, this.languages)
|
||||
},
|
||||
getExtraNetworks() {
|
||||
this._getExtraNetworks()
|
||||
/*setInterval(() => {
|
||||
this._getExtraNetworks()
|
||||
}, 10000)*/
|
||||
},
|
||||
_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.getExtraNetworks()
|
||||
this.loadExtraNetworks()
|
||||
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto']
|
||||
this.prompts.forEach(item => {
|
||||
dataListsKeys.push(item.hideDefaultInputKey)
|
||||
|
||||
@@ -1 +1 @@
|
||||
b47996aceaed675d704a6c6247569d484d955020
|
||||
40f7ebef450921afc2fc90af81341f14c6dba7cd
|
||||
@@ -14,6 +14,52 @@ export default {
|
||||
this.gradioAPI = new GradioAPI()
|
||||
},
|
||||
methods: {
|
||||
loadExtraNetworks() {
|
||||
this.gradioAPI.getExtraNetworks().then(res => {
|
||||
if (!res) return
|
||||
this.extraNetworks = res
|
||||
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 (item.output_name) {
|
||||
list.push(item.output_name)
|
||||
}
|
||||
})
|
||||
list = [...new Set(list)]
|
||||
if (extraNetwork.name === 'lora') {
|
||||
this.loras = list
|
||||
} else {
|
||||
this.lycos = list
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getExtraNetworkFullName(name, type = 'lora') {
|
||||
if (typeof this.extraNetworks !== 'object') return name
|
||||
for (let extraNetwork of this.extraNetworks) {
|
||||
if (extraNetwork.name !== type) continue
|
||||
for (let item of extraNetwork.items) {
|
||||
if (item.name === name || item.output_name === name) {
|
||||
if (!item.civitai_info || !item.civitai_info.name) return name
|
||||
if (item.civitai_info.model && item.civitai_info.model.name && item.civitai_info.model.name !== item.civitai_info.name) {
|
||||
return '[' + item.civitai_info.name + ']' + item.civitai_info.model.name
|
||||
} else {
|
||||
return item.civitai_info.name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return name
|
||||
},
|
||||
loraExists(name) {
|
||||
if (typeof this.loras !== 'object') return name
|
||||
for (let key in this.loras) {
|
||||
|
||||
Reference in New Issue
Block a user