|
|
|
|
|
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(): |
|
|
|
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 |
|
|
|
|
|
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 |
|
|