Skip to content
GitLab
菜单
为什么选择 GitLab
定价
联系销售
探索
为什么选择 GitLab
定价
联系销售
探索
登录
获取免费试用
主导航
搜索或转到…
项目
S
Stable Diffusion Webui
管理
动态
成员
代码
仓库
分支
提交
标签
仓库图
比较修订版本
部署
模型注册表
分析
模型实验
帮助
帮助
支持
GitLab 文档
比较 GitLab 各版本
社区论坛
为极狐GitLab 提交贡献
提交反馈
隐私声明
快捷键
?
新增功能
4
代码片段
群组
项目
显示更多面包屑
Hunter0726
Stable Diffusion Webui
提交
9ed04e75
提交
9ed04e75
编辑于
2 years ago
作者:
AUTOMATIC
浏览文件
操作
下载
补丁
差异文件
use HTTP request to fetch metadata for Lora cards instead of including it into the main page
上级
724a6371
No related branches found
No related tags found
无相关合并请求
变更
3
隐藏空白变更内容
行内
左右并排
显示
3 个更改的文件
javascript/extraNetworks.js
+36
-0
36 个添加, 0 个删除
javascript/extraNetworks.js
modules/ui_extra_networks.py
+35
-12
35 个添加, 12 个删除
modules/ui_extra_networks.py
style.css
+1
-0
1 个添加, 0 个删除
style.css
有
72 个添加
和
12 个删除
javascript/extraNetworks.js
+
36
−
0
浏览文件 @
9ed04e75
...
@@ -139,3 +139,39 @@ function extraNetworksShowMetadata(text){
...
@@ -139,3 +139,39 @@ function extraNetworksShowMetadata(text){
popup
(
elem
);
popup
(
elem
);
}
}
function
requestGet
(
url
,
data
,
handler
,
errorHandler
){
var
xhr
=
new
XMLHttpRequest
();
var
args
=
Object
.
keys
(
data
).
map
(
function
(
k
){
return
encodeURIComponent
(
k
)
+
'
=
'
+
encodeURIComponent
(
data
[
k
])
}).
join
(
'
&
'
)
xhr
.
open
(
"
GET
"
,
url
+
"
?
"
+
args
,
true
);
xhr
.
onreadystatechange
=
function
()
{
if
(
xhr
.
readyState
===
4
)
{
if
(
xhr
.
status
===
200
)
{
try
{
var
js
=
JSON
.
parse
(
xhr
.
responseText
);
handler
(
js
)
}
catch
(
error
)
{
console
.
error
(
error
);
errorHandler
()
}
}
else
{
errorHandler
()
}
}
};
var
js
=
JSON
.
stringify
(
data
);
xhr
.
send
(
js
);
}
function
extraNetworksRequestMetadata
(
extraPage
,
cardName
){
showError
=
function
(){
extraNetworksShowMetadata
(
"
there was an error getting metadata
"
);
}
requestGet
(
"
./sd_extra_networks/metadata
"
,
{
"
page
"
:
extraPage
,
"
item
"
:
cardName
},
function
(
data
){
if
(
data
&&
data
.
metadata
){
extraNetworksShowMetadata
(
data
.
metadata
)
}
else
{
showError
()
}
},
showError
)
}
此差异已折叠。
点击以展开。
modules/ui_extra_networks.py
+
35
−
12
浏览文件 @
9ed04e75
...
@@ -22,21 +22,37 @@ def register_page(page):
...
@@ -22,21 +22,37 @@ def register_page(page):
allowed_dirs
.
update
(
set
(
sum
([
x
.
allowed_directories_for_previews
()
for
x
in
extra_pages
],
[])))
allowed_dirs
.
update
(
set
(
sum
([
x
.
allowed_directories_for_previews
()
for
x
in
extra_pages
],
[])))
def
add_pages_to_demo
(
app
):
def
fetch_file
(
filename
:
str
=
""
):
def
fetch_file
(
filename
:
str
=
""
):
from
starlette.responses
import
FileResponse
from
starlette.responses
import
FileResponse
if
not
any
([
Path
(
x
).
absolute
()
in
Path
(
filename
).
absolute
().
parents
for
x
in
allowed_dirs
]):
raise
ValueError
(
f
"
File cannot be fetched:
{
filename
}
. Must be in one of directories registered by extra pages.
"
)
ext
=
os
.
path
.
splitext
(
filename
)[
1
].
lower
()
if
ext
not
in
(
"
.png
"
,
"
.jpg
"
,
"
.webp
"
):
raise
ValueError
(
f
"
File cannot be fetched:
{
filename
}
. Only png and jpg and webp.
"
)
# would profit from returning 304
return
FileResponse
(
filename
,
headers
=
{
"
Accept-Ranges
"
:
"
bytes
"
})
def
get_metadata
(
page
:
str
=
""
,
item
:
str
=
""
):
from
starlette.responses
import
JSONResponse
if
not
any
([
Path
(
x
).
absolute
()
in
Path
(
filename
).
absolute
().
parents
for
x
in
allowed_dirs
]):
page
=
next
(
iter
([
x
for
x
in
extra_pages
if
x
.
name
==
page
]),
None
)
raise
ValueError
(
f
"
File cannot be fetched:
{
filename
}
. Must be in one of directories registered by extra pages.
"
)
if
page
is
None
:
return
JSONResponse
({})
ext
=
os
.
path
.
splitext
(
filename
)[
1
].
lower
(
)
metadata
=
page
.
metadata
.
get
(
item
)
if
ext
not
in
(
"
.png
"
,
"
.jpg
"
,
"
.webp
"
)
:
if
metadata
is
None
:
raise
ValueError
(
f
"
File cannot be fetched:
{
filename
}
. Only png and jpg and webp.
"
)
return
JSONResponse
({}
)
# would profit from returning 304
return
JSONResponse
({
"
metadata
"
:
metadata
})
return
FileResponse
(
filename
,
headers
=
{
"
Accept-Ranges
"
:
"
bytes
"
})
def
add_pages_to_demo
(
app
):
app
.
add_api_route
(
"
/sd_extra_networks/thumb
"
,
fetch_file
,
methods
=
[
"
GET
"
])
app
.
add_api_route
(
"
/sd_extra_networks/thumb
"
,
fetch_file
,
methods
=
[
"
GET
"
])
app
.
add_api_route
(
"
/sd_extra_networks/metadata
"
,
get_metadata
,
methods
=
[
"
GET
"
])
class
ExtraNetworksPage
:
class
ExtraNetworksPage
:
...
@@ -45,6 +61,7 @@ class ExtraNetworksPage:
...
@@ -45,6 +61,7 @@ class ExtraNetworksPage:
self
.
name
=
title
.
lower
()
self
.
name
=
title
.
lower
()
self
.
card_page
=
shared
.
html
(
"
extra-networks-card.html
"
)
self
.
card_page
=
shared
.
html
(
"
extra-networks-card.html
"
)
self
.
allow_negative_prompt
=
False
self
.
allow_negative_prompt
=
False
self
.
metadata
=
{}
def
refresh
(
self
):
def
refresh
(
self
):
pass
pass
...
@@ -66,6 +83,8 @@ class ExtraNetworksPage:
...
@@ -66,6 +83,8 @@ class ExtraNetworksPage:
view
=
shared
.
opts
.
extra_networks_default_view
view
=
shared
.
opts
.
extra_networks_default_view
items_html
=
''
items_html
=
''
self
.
metadata
=
{}
subdirs
=
{}
subdirs
=
{}
for
parentdir
in
[
os
.
path
.
abspath
(
x
)
for
x
in
self
.
allowed_directories_for_previews
()]:
for
parentdir
in
[
os
.
path
.
abspath
(
x
)
for
x
in
self
.
allowed_directories_for_previews
()]:
for
x
in
glob
.
glob
(
os
.
path
.
join
(
parentdir
,
'
**/*
'
),
recursive
=
True
):
for
x
in
glob
.
glob
(
os
.
path
.
join
(
parentdir
,
'
**/*
'
),
recursive
=
True
):
...
@@ -92,6 +111,10 @@ class ExtraNetworksPage:
...
@@ -92,6 +111,10 @@ class ExtraNetworksPage:
"""
for
subdir
in
subdirs
])
"""
for
subdir
in
subdirs
])
for
item
in
self
.
list_items
():
for
item
in
self
.
list_items
():
metadata
=
item
.
get
(
"
metadata
"
)
if
metadata
:
self
.
metadata
[
item
[
"
name
"
]]
=
metadata
items_html
+=
self
.
create_html_for_item
(
item
,
tabname
)
items_html
+=
self
.
create_html_for_item
(
item
,
tabname
)
if
items_html
==
''
:
if
items_html
==
''
:
...
@@ -127,8 +150,7 @@ class ExtraNetworksPage:
...
@@ -127,8 +150,7 @@ class ExtraNetworksPage:
metadata_button
=
""
metadata_button
=
""
metadata
=
item
.
get
(
"
metadata
"
)
metadata
=
item
.
get
(
"
metadata
"
)
if
metadata
:
if
metadata
:
metadata_onclick
=
'"'
+
html
.
escape
(
f
"""
extraNetworksShowMetadata(
{
json
.
dumps
(
metadata
)
}
); return false;
"""
)
+
'"'
metadata_button
=
f
"
<div class=
'
metadata-button
'
title=
'
Show metadata
'
onclick=
'
extraNetworksRequestMetadata(
{
json
.
dumps
(
self
.
name
)
}
,
{
json
.
dumps
(
item
[
'
name
'
])
}
)
'
></div>
"
metadata_button
=
f
"
<div class=
'
metadata-button
'
title=
'
Show metadata
'
onclick=
{
metadata_onclick
}
></div>
"
args
=
{
args
=
{
"
preview_html
"
:
"
style=
'
background-image: url(
\"
"
+
html
.
escape
(
preview
)
+
"
\"
)
'"
if
preview
else
''
,
"
preview_html
"
:
"
style=
'
background-image: url(
\"
"
+
html
.
escape
(
preview
)
+
"
\"
)
'"
if
preview
else
''
,
...
@@ -215,6 +237,7 @@ def create_ui(container, button, tabname):
...
@@ -215,6 +237,7 @@ def create_ui(container, button, tabname):
with
gr
.
Tabs
(
elem_id
=
tabname
+
"
_extra_tabs
"
)
as
tabs
:
with
gr
.
Tabs
(
elem_id
=
tabname
+
"
_extra_tabs
"
)
as
tabs
:
for
page
in
ui
.
stored_extra_pages
:
for
page
in
ui
.
stored_extra_pages
:
with
gr
.
Tab
(
page
.
title
):
with
gr
.
Tab
(
page
.
title
):
page_elem
=
gr
.
HTML
(
page
.
create_html
(
ui
.
tabname
))
page_elem
=
gr
.
HTML
(
page
.
create_html
(
ui
.
tabname
))
ui
.
pages
.
append
(
page_elem
)
ui
.
pages
.
append
(
page_elem
)
...
...
此差异已折叠。
点击以展开。
style.css
+
1
−
0
浏览文件 @
9ed04e75
...
@@ -641,6 +641,7 @@ footer {
...
@@ -641,6 +641,7 @@ footer {
text-shadow
:
2px
2px
3px
black
;
text-shadow
:
2px
2px
3px
black
;
padding
:
0.25em
;
padding
:
0.25em
;
font-size
:
22pt
;
font-size
:
22pt
;
width
:
1.5em
;
}
}
.extra-network-cards
.card
:hover
.metadata-button
,
.extra-network-thumbs
.card
:hover
.metadata-button
{
.extra-network-cards
.card
:hover
.metadata-button
,
.extra-network-thumbs
.card
:hover
.metadata-button
{
display
:
inline-block
;
display
:
inline-block
;
...
...
此差异已折叠。
点击以展开。
预览
0%
加载中
请重试
或
添加新附件
.
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
保存评论
取消
想要评论请
注册
或
登录