Settings are stored in your browser through the Local Storage API and will persist across sessions. Use this section to either reset, load, or save your current configuration.
No file chosen
Display Settings
Summary Fields
Specify the name of the fields to be displayed in the summary section, separated by commas. To include fields from the CivitAI metadata, add "civitai." prefix (ie. "civitai.trainedWords"). To include custom fields, add "custom." prefix (ie. "custom.training_time").
Specify the name of the fields to be displayed in the summary section, separated by commas. To include fields from the CivitAI metadata, add "civitai." prefix (ie. "civitai.trainedWords"). To include custom fields, add "custom." prefix (ie. "custom.training_time").
Custom Summary Template
This section defines the template to be used in the custom summary layout in HTML format. The fields to be displayed must be defined within {{}}. ( ie: {{ss_output_name}} ). To include file metadata fields, simply specify the field name. To include fields from the CivitAI metadata, add "civitai." prefix (ie. "civitai.trainedWords"). To include custom fields, add "custom." prefix (ie. "custom.training_time").
This section defines the template to be used in the custom summary layout in HTML format. The fields to be displayed must be defined within {{}}. ( ie: {{ss_output_name}} ). To include file metadata fields, simply specify the field name. To include fields from the CivitAI metadata, add "civitai." prefix (ie. "civitai.trainedWords"). To include custom fields, add "custom." prefix (ie. "custom.training_time").
Metadata Editor Fields
Specify the name of the fields to be displayed in the simple view of the metadata editor section, separated by commas.
Specify the name of the fields to be displayed in the simple view of the metadata editor section, separated by commas.
Custom Fields
This section defines the list of custom fields that may be displayed in the summary section. Calculations are defined as javascript expressions. Data from the following are available for calculations: Safetensors File metadata (fileMetadata), CivitAI resource info (civitaiMetadata), and previously defined custom fields (customMetadata). Keep in mind that custom fields are created in the same order they are defined in the list, meaning you may use a custom field in a calculation only if it was defined in a previous row.
This section defines the list of custom fields that may be displayed in the summary section. Calculations are defined as javascript expressions. Data from the following are available for calculations: Safetensors File metadata (fileMetadata), CivitAI resource info (civitaiMetadata), and previously defined custom fields (customMetadata). Keep in mind that custom fields are created in the same order they are defined in the list, meaning you may use a custom field in a calculation only if it was defined in a previous row.
| Name | Calculation | |
|---|---|---|
Resource Lookup
HTTP Proxy
Required for Arc En Ciel resource lookup due to site security restrictions. If enabled, requests to Arc En Ciel will be routed through the proxy URL.
Local HTTP Proxy (Optional)
Alternatively, a proxy web server may be hosted locally with the following minimal python script. To run the proxy locally, download/copy the following 'proxy.py' python script, place the file in the same folder as this application's .html file, and execute the script with the following command python proxy.py --port 8008 . Running the command will launch the app at http://localhost:8008. Replace the "Proxy URL" setting above with http://localhost:8008/?url= to use the local instance.
proxy.py - Download
import http.server
import socketserver
import webbrowser
import argparse
from urllib.parse import urlparse, parse_qs, unquote
import urllib.request
import urllib.error
import os
parser = argparse.ArgumentParser()
parser.add_argument('--port', type=int, default=8008)
parser.add_argument('--html_file', type=str, default="index.html")
args = parser.parse_args()
PORT = args.port
HTML_FILE = args.html_file
if not os.path.exists(HTML_FILE):
raise FileNotFoundError(f"{HTML_FILE} not found")
class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', 'GET,POST,OPTIONS')
self.send_header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type')
super().end_headers()
def do_GET(self):
parsed = urlparse(self.path)
query = parse_qs(parsed.query)
target = query.get('url', [None])[0]
if target:
try:
print(f'Fetching: {target}')
req = urllib.request.Request(
unquote(target),
headers={ 'User-Agent': 'Mozilla/5.0', 'Accept': '*/*' }
)
with urllib.request.urlopen(req) as resp:
self.send_response(resp.status)
for k, v in resp.getheaders():
self.send_header(k, v)
self.end_headers()
self.wfile.write(resp.read())
except urllib.error.HTTPError as e:
self.send_response(e.code)
for k, v in e.headers.items():
self.send_header(k, v)
self.end_headers()
self.wfile.write(e.read())
except Exception as e:
self.send_response(500)
self.end_headers()
self.wfile.write(str(e).encode())
else:
super().do_GET()
os.chdir(os.path.dirname(os.path.abspath(HTML_FILE)))
with socketserver.TCPServer(('', PORT), CORSRequestHandler) as httpd:
print(f"Serving on http://localhost:{PORT}")
webbrowser.open(f"http://localhost:{PORT}/{HTML_FILE}")
httpd.serve_forever()