Function Optimization #67

Former-commit-id: 4fd4bd2a95c68a4012817c47a5e131cf76833b1b
This commit is contained in:
Physton
2023-05-26 12:59:07 +08:00
parent 9d5c34fe69
commit d5f215ba4b
6 changed files with 101 additions and 41 deletions

View File

@@ -1 +1 @@
9bfe45c736ff2add9d4c3d78746551fd905d605a
30a45a509ed9cfefba253accd927614a629673f5

View File

@@ -1 +1 @@
5114642d3aa7d6bbe3e00ced201b79913eed2272
6375861de14396709c1487cd10fbc21fb15b0c48

View File

@@ -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

View File

@@ -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)

View File

@@ -1 +1 @@
b47996aceaed675d704a6c6247569d484d955020
40f7ebef450921afc2fc90af81341f14c6dba7cd

View File

@@ -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) {