Skip to content

Commit d836c15

Browse files
authored
Merge pull request #642 from zanllp/feat/add-novelai-support
feat: Add support for NovelAI
2 parents 5519fce + 9edd750 commit d836c15

26 files changed

+73
-24
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ https://github.com/zanllp/sd-webui-infinite-image-browsing/assets/25872019/807b8
2020
| Stable Diffusion web UI| Supported | -- |
2121
| ComfyUI | Partially supported | -- |
2222
| Fooocus | Supported | -- |
23-
| NovelAI | Not supported | Planned |
23+
| NovelAI | Supported | -- |
2424
| StableSwarmUI | Not supported | Planned |
2525

2626

javascript/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Promise.resolve().then(async () => {
1313
<link rel="icon" href="/favicon.ico" />
1414
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
1515
<title>Infinite Image Browsing</title>
16-
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-dfe671d9.js"></script>
16+
<script type="module" crossorigin src="/infinite_image_browsing/fe-static/assets/index-e8d50841.js"></script>
1717
<link rel="stylesheet" href="/infinite_image_browsing/fe-static/assets/index-f6de8b10.css">
1818
</head>
1919

scripts/iib/parsers/index.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from scripts.iib.parsers.comfyui import ComfyUIParser
22
from scripts.iib.parsers.sd_webui import SdWebUIParser
33
from scripts.iib.parsers.fooocus import FooocusParser
4+
from scripts.iib.parsers.novelai import NovelAIParser
45
from scripts.iib.parsers.model import ImageGenerationInfo
56
from scripts.iib.logger import logger
67
from PIL import Image
78
import traceback
89

910

1011
def parse_image_info(image_path: str) -> ImageGenerationInfo:
11-
parsers = [ComfyUIParser, FooocusParser, SdWebUIParser]
12+
parsers = [ComfyUIParser, FooocusParser, NovelAIParser, SdWebUIParser]
1213
with Image.open(image_path) as img:
1314
for parser in parsers:
1415
if parser.test(img, image_path):

scripts/iib/parsers/novelai.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import json
2+
from PIL import Image
3+
4+
from scripts.iib.tool import (
5+
parse_generation_parameters,
6+
)
7+
from scripts.iib.parsers.model import ImageGenerationInfo, ImageGenerationParams
8+
9+
def replace_punctuation(input_string):
10+
return input_string.replace(',', ' ').replace('\n', ' ')
11+
12+
class NovelAIParser:
13+
def __init__(self):
14+
pass
15+
16+
@classmethod
17+
def parse(clz, img, file_path):
18+
info = ""
19+
params = None
20+
if not clz.test(img, file_path):
21+
raise Exception("The input image does not match the current parser.")
22+
data = json.loads(img.info.get('Comment'))
23+
meta_kv = [f"""Steps: {data["steps"]}, Source Identifier: NovelAI"""]
24+
for key, value in data.items():
25+
if key not in ["prompt"]:
26+
value = replace_punctuation(str(value))
27+
meta_kv.append(f"{key}: {value}")
28+
meta = ', '.join(meta_kv)
29+
info = data["prompt"] + '\n' + meta
30+
31+
params = parse_generation_parameters(info)
32+
33+
return ImageGenerationInfo(
34+
info,
35+
ImageGenerationParams(
36+
meta=params["meta"], pos_prompt=params["pos_prompt"]
37+
),
38+
)
39+
40+
@classmethod
41+
def test(clz, img: Image, file_path: str) -> bool:
42+
try:
43+
return img.info.get('Software') == 'NovelAI' and isinstance(img.info.get('Comment'), str)
44+
except Exception:
45+
return False

vue/dist/assets/FileItem-c350046e.js renamed to vue/dist/assets/FileItem-536e74b1.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/assets/ImgSliPagePane-990edb2f.js renamed to vue/dist/assets/ImgSliPagePane-cef121c3.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/assets/MatchedImageGrid-974277e9.js renamed to vue/dist/assets/MatchedImageGrid-359d2c8c.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/assets/MultiSelectKeep-93de3cf5.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

vue/dist/assets/MultiSelectKeep-a15d3283.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)