File size: 2,320 Bytes
8a469fd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# -*- 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 = []
try:
for extra_page in ui_extra_networks.extra_pages:
result_item = {
'name': extra_page.name,
'title': extra_page.title,
'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]
result_item['items'].append(item)
result.append(result_item)
except Exception as e:
pass
return result
|