From 1bb4820f18e073c8d3a5e1a0a079b4af99642025 Mon Sep 17 00:00:00 2001 From: butaixianran Date: Wed, 27 Sep 2023 04:14:00 +0800 Subject: [PATCH] catch up with latest sd webui --- README.cn.md | 46 ++------- README.kr.md | 1 - README.md | 66 +++---------- about_version2.md | 29 ++++++ claim_wall.md | 91 ------------------ img/model_card.jpg | Bin 22256 -> 38846 bytes img/other_setting.jpg | Bin 28417 -> 21934 bytes javascript/civitai_helper.js | 180 +++++------------------------------ scripts/ch_lib/setting.py | 12 +-- scripts/civitai_helper.py | 102 ++++++++++++-------- 10 files changed, 138 insertions(+), 389 deletions(-) create mode 100644 about_version2.md delete mode 100644 claim_wall.md diff --git a/README.cn.md b/README.cn.md index 0ec7bed..b263415 100644 --- a/README.cn.md +++ b/README.cn.md @@ -1,6 +1,5 @@ ## 关于Civitai Helper2: Model Info Helper -Civitai助手2将改名为**Model Info助手**。目前还在缓慢开发中。你可以查看它的UI演示视频,了解它会是什么样子: -[https://youtu.be/mPcKwQDDH8s](https://youtu.be/mPcKwQDDH8s) +近况请参考:[about_version2](about_version2.md) # Civitai Helper @@ -9,9 +8,7 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci [Civitai Url](https://civitai.com/models/16768/civitai-helper-sd-webui-civitai-extension) # 注意 -**本插件现在非常稳定,很多人用得很好,如果碰到问题,先看[常见问题](#常见问题),并检查命令行窗口的详情。** -开issue前,请先看文档。找茬行为的用户将会被拉黑,参考:[找茬行为会被拉黑](https://github.com/butaixianran/Stable-Diffusion-Webui-Civitai-Helper/issues/96#issuecomment-1500310981) - +**本插件需要最新版SD webui,使用前请更新你的SD webui版本。安装本插件后,需要重启SD webui,而不光是重新加载UI,如果碰到问题,先看[常见问题](#常见问题),并检查命令行窗口的详情。** # 功能 [中文介绍视频(非官方)](https://youtu.be/x4tPWPmeAgM?t=373) @@ -23,12 +20,9 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci * 批量检查本地模型,在civitai上的新版本 * 直接下载新版本模型到SD模型目录内(含信息和预览图) * 修改了内置的"Extra Network"模型卡片,每个卡片增加了如下功能按钮: - - 🖼: 修改文字"replace preview"为这个图标 - 🌐: 在新标签页打开这个模型的Civitai页面 - 💡: 一键添加这个模型的触发词到关键词输入框 - 🏷: 一键使用这个模型预览图所使用的关键词 -* 以上额外功能按钮支持thumbnail模式 -* 增加一直显示按钮的选项,以供触屏用户使用 # 安装 @@ -42,10 +36,7 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci # 使用方法 ## 更新你的SD webui -本扩展需要取到 Extra Network的卡片列表id。**这个是2023-02-06,才添加到SD webui里面的。** - -所以,如果你用的版本比这个早,你就需要先更新你的SD Webui! - +请更新SD webui到最新版 ## 扫描模型 前往扩展页面"Civitai Helper",有个按钮叫:"Scan Model" @@ -70,8 +61,7 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci ![](img/extra_network.jpg) -移动鼠标到模型卡片底部,就会显示4个按钮: - - 🖼: 修改文字"replace preview"为这个图标 +移动鼠标到模型卡片顶部,就会显示3个额外的按钮: - 🌐: 在新标签页打开这个模型的Civitai页面 - 💡: 一键添加这个模型的触发词到关键词输入框 - 🏷: 一键使用这个模型预览图所使用的关键词 @@ -84,11 +74,6 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci 每次当Extra Network刷新,他都会删除掉额外的修改,我们的按钮就会消失。这时你就需要点击`Refresh Civitai Helper`把这些功能添加回去。 - -### 小图模式 -以上功能按钮支持小图模式,但受制于SD Webui的CSS问题,目前,只能要么一直显示,要么一直不显示,不能鼠标滑过才显示。 -![](img/thumb_mode.jpg) - ## 下载 **(单任务,下载完一个再下另一个)** 通过Civitai模型页面Url下载模型,要3个步骤: @@ -127,24 +112,11 @@ Stable Diffusion Webui 扩展Civitai助手,用于更轻松的管理和使用Ci ![](img/get_one_model_info.jpg) -## 代理 -**如果你是刚更新新版本,你需要重启SD webui再来使用** - -代理输入框在插件页面最下方。 - -**每次填入或清除代理后,都要保存,并用SDwebui设置页面的Reload UI按钮刷新UI** - -然后所有发到civitai的请求就会用代理。 +## 设置 +现在所有设置被移动到 Setting 页面->Civitai Helper区域中。 +代理输入框也在其中。 有些sock5代理, 需要使用socks5h开头的形式"socks5h://xxxxx"才能生效。 - - - -## 其他设置 -**保存设置按钮, 会保存扫描模型区域,以及其他设置 这两个区域的选项** - -* "一直显示按钮" 是为了方便触屏。 -* "小图模式显示功能按钮" 会开关功能按钮在小图模式的显示 ![](img/other_setting.jpg) ## 预览图 @@ -184,9 +156,6 @@ Enjoy! ## 常见问题 ### 4个卡片按钮不显示 -#### 汉化原因 -下载新版,最新版已经处理汉化导致的问题。**双语汉化插件需要v1.6.1.1之后的版本才开始支持。** - #### 使用了云端汉化功能 如果是秋叶启动器,就关闭启动器“云端汉化”功能。如果是专门的云端汉化插件,就换用普通汉化插件。 @@ -203,7 +172,6 @@ git在很多时候,会拒绝升级,并告诉你有些冲突需要你手动 ### Request model info from civitai 意思就是正在连接civitai,如果没有后面的信息,就是连不上,请挂代理。 - ### 扫描或获取模型信息失败 这个插件现在很稳定,所以,这个问题的原因,基本是是因为Civitai拒绝了你的连接请求。 diff --git a/README.kr.md b/README.kr.md index 1217da7..301af9a 100644 --- a/README.kr.md +++ b/README.kr.md @@ -17,7 +17,6 @@ Stable Diffusion Webui는 Civitai 모델을 더 쉽게 관리하고 사용하기 * 로컬 모델에서 Civitai에 새 버전이 있는지 일괄 확인 * 새 버전 모델을 SD 모델 디렉토리에 직접 다운로드(정보 및 미리보기 이미지 포함) * "Extra Network" 모델 카드 내부를 수정하여 다음과 같은 기능 버튼을 추가: - - 🖼: "replace preview" 텍스트를 이 아이콘으로 변경 - 🌐: 해당 모델의 Civitai 페이지를 새 탭에서 열기 - 💡: 이 모델의 트리거 단어를 키워드 입력란에 일괄 추가 - 🏷: 이 모델 미리보기 이미지에 사용된 키워드 사용 diff --git a/README.md b/README.md index 9d393fc..91fa22f 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,11 @@ [한국어(ChatGPT)](README.kr.md) ## About Civitai Helper2: Model Info Helper -Civitai Helper 2 will be renamed to **ModelInfo Helper**. It is under development, you can watch its UI demo video to see how it gonna look like: -[YouTube](https://youtu.be/mPcKwQDDH8s) +check here for Civitai Helper 2's update: +[about_version2](about_version2.md) # Notice -**This extension now is very stable and works well for many people. If you have an issue, check console log window's detail and read [common issue](#common-issue) part** - -If you want to claim it doesn't work, check this first: [Claim Wall](claim_wall.md) - +**This extension request latest SD webui, update it before using this extension. And also re-lanuch SD webui after installing this extension(not just reload UI). If you have an issue, check console log window's detail and read [common issue](#common-issue) part** # Civitai Helper Stable Diffusion Webui Extension for Civitai, to handle your models much more easily. @@ -26,13 +23,9 @@ Civitai: [Civitai Url](https://civitai.com/models/16768/civitai-helper-sd-webui- * Checking all your local model's new version from Civitai * Download a new version directly into SD model folder (with info+preview) * Modified Built-in "Extra Network" cards, to add the following buttons on each card: - - 🖼️: Modified "replace preview" text into this icon - 🌐: Open this model's Civitai url in a new tab - 💡: Add this model's trigger words to prompt - - 🏷️: Use this model's preview image's prompt -* Above buttons support thumbnail mode of Extra Network -* Option to always show additional buttons, to work with touchscreen. - + - 🏷: Use this model's preview image's prompt # Install Go to SD webui's extension tab, go to `Install from url` sub-tab. @@ -47,8 +40,7 @@ Done. # How to Use ## Update Your SD Webui -This extension need to get extra network's cards id. Which is added since **2023-02-06**. -**If your SD webui is an earlier version, you need to update it!** +**Update SD webui before using this extension!** ## Scanning Models Go to extension tab "Civitai Helper". There is a button called "Scan model". @@ -70,29 +62,20 @@ When you have some new models, just click scan button again, to get new model's ## Model Card **(Use this only after scanning finished)** -Open SD webui's build-in "Extra Network" tab, to show model cards. +Go to a Model's tab to show model cards. -![](img/extra_network.jpg) - - -Move your mouse on to the bottom of a model card. It will show 4 icon buttons: - - 🖼: Replace preview (a build-in button, modified from text to icon) +Move your mouse on to the **Top** of a model card. It will show 3 additional icon buttons: - 🌐: Open this model's Civitai url in a new tab - 💡: Add this model's trigger words to prompt - 🏷: Use this model's preview image's prompt ![](img/model_card.jpg) -**If these additional buttons are not there**, click the `Refresh Civitai Helper` button to bring them back. +**If these additional buttons are not there**, click the `Refresh Civitai Helper` button to bring them back. ![](img/refresh_ch.jpg) Everytime after Extra Network tab refreshed, it will remove all these additional buttons. So, you need to click `Refresh Civitai Helper` button to bring them back. -### Thumbnail Mode -Additional buttons work on thumbnail too, but due to SD webui's CSS issue, for now, they must be always displayed on thumbnail or don't display at all. -![](img/thumb_mode.jpg) - - ## Download To download a model by Civitai Model Page's Url, you need 3 steps: * Fill url, click button to get model info @@ -133,30 +116,14 @@ After clicking button, extension will download that civitai model's info and pre ![](img/get_one_model_info.jpg) -## Proxy -**If you are updating to new version, you need to re-lanuch SD webui before using it.** +## Settings +Now all settings are moved into Setting tab->civitai helper section. -Proxy textbox is at the bottom of extension tab. +For some sock5 proxy, need to be used as "socks5h://127.0.0.1:port". -**Each time you fill or clear a proxy value, you need to save setting, and Re-load UI with setting tab's reload button.** - -Then all requests to civitai will use the proxy. - -For some sock5 proxy, need to be used as "socks5h://xxxxx". - - - - -## Other Setting -**The Save Setting button, will save both "Scan Model"'s setting and other setting.** - -* "Always Display Button" is good for touch screen. -* "Show Buttons on Thumb Mode" will turn on/off additional Buttons on thumbnail. ![](img/other_setting.jpg) - - ## Preview Image Extra network uses both `model_file.png` and `model_file.preview.png` as preview image. But `model_file.png` has higher priority, because it is created by yourself. @@ -192,9 +159,6 @@ Enjoy! ## Common Issue ### 4 Buttons on card didn't show -#### Localization -There was a Localization issue if you are not using English version of SD webui. This is fixed in the latest version of this extension. **Bilingual localization extension is supported by PR since v1.6.1.1.** - ##### Using cloud based localization extension Turn off cloud based localization extension, use normal localization extension. @@ -230,8 +194,6 @@ Also, you can report those models with wrong sha256 to civitai at following page Please report that model to civitai, so they can fix it. - - ### Scanning fail when using colab First of, search your error message with google. Most likely, it will be a colab issue. @@ -243,9 +205,11 @@ Since v1.5.5, we've already optimized the SHA256 function to the top. So the onl - - # Change Log +## v1.7.0 +* Fix all issues for latest sd webui +* Move all settings to Setting tab + ## v1.6.4 * Add "Download All files" checkbox for downloading model section. Uncheck means only download 1 file. diff --git a/about_version2.md b/about_version2.md new file mode 100644 index 0000000..457434f --- /dev/null +++ b/about_version2.md @@ -0,0 +1,29 @@ +## About Civitai Helper2: Model Info Helper +The first version of "Civitai Helper2" is already finished and I have used it for a while on my local machine. It works exactly as in the demo video I have released before. + +[https://www.youtube.com/watch?v=mPcKwQDDH8s](https://www.youtube.com/watch?v=mPcKwQDDH8s) + +But the developing process is extremely painful. Its maintenance will also be difficult and hard to hand it over to other developers. If I release it, with all those requests and issues from users, my life gonna be in hell. + +The reason for this is, the whole client side is based on javascript, almost no gradio code at all. + +Gradio is not suitable for a professional level's management system. But under gradio's framework and SD webui's design, a lot of javascript stuff won't work well. + +So, it is too painful that I don't want to do any further maintenance and development. And I realize SD webui itself is not that good since it uses gradio. + +In the meantime, a lot of alternatives become popular. For example, the latest InvokeAI, powerful, easy to use and has build-in node system. It is so good that in most cases we have no reason to use SD webui any more. + +If you are not familiar with InvokeAI, you can check this video: +[https://www.youtube.com/watch?v=8cVnooYgpDc](https://www.youtube.com/watch?v=8cVnooYgpDc) + +For Model Info Helper, I'm re-designing it into a stand alone model management system, not an extension of SD webui. + +Since it won't be released as estimated, I have updated the old civitai helper 1.x to work with latest SD webui. + + + + + + + + diff --git a/claim_wall.md b/claim_wall.md deleted file mode 100644 index e707ed1..0000000 --- a/claim_wall.md +++ /dev/null @@ -1,91 +0,0 @@ -# Claim Wall - -Since this extension got a little hot, some users come to **claim many other issues to this extension**. - -Following is a wall, to show a few examples how they claim this extension doesn't work, because they don't read document or forget what they did before. - -If you are looking for guideline, go to section [What you should do](#what-you-should-do) - -# Wall - -### Didn't even update SD Webui and claim "tried everything" - -![](img/user_claim_wall/have_not_update_sdwebui.jpg) - - -### Havn't even scanned model -After 4 replies, find that out, and modified his comment. - -![](img/user_claim_wall/have_not_scan_model.jpg) - -### Claim "pretty sure" this extension breaks his UI, takes 2days to find out it is not -Then removed his comment from civitai, but his post on reddit is still there, so you can know what's really going on there. - -1. Claim "pretty sure" this extension breaks his UI - -![](img/user_claim_wall/css_issue_part1.jpg) - -![](img/user_claim_wall/css_issue_part2.jpg) - -2. Find out it is not, after 2 days - -![](img/user_claim_wall/css_issue_part3.jpg) - -3. Still don't remember what he did with other extensions, until another user tells him, about 4 days later. - -![](img/user_claim_wall/css_issue_part4.jpg) - -### **Blame SD Webui's modification to this extension** -Latest SD webui removed a button from UI, they claim this extension did that, and want it back by this extension - -![](img/user_claim_wall/blame_sdweui_update_to_this_ext.jpg) - -### Claim other extension's error to this extension -Just because both extensions have "Civitai" in extension's name - -![](img/user_claim_wall/do_not_even_use_this_ext.jpg) - - -### **Didn't even use this extension and request a feature it already has** - -![](img/user_claim_wall/request_a_feature_it_already_has.jpg) - -### **Renamed model folder's name carelessly and forgot that** -Takes about 8 hours to find out why this extension doesn't work on his SDwebui and ready to re-install SD webui from beginning. - -1. claim this extension can not open civitai url on checkpoint models - -![](img/user_claim_wall/changed_model_folder_name_then_forget_part1.jpg) - -2. I reply that model he mentioned works well in my SDwebui - -![](img/user_claim_wall/changed_model_folder_name_then_forget_part2.jpg) - -3. After 6 hours' trying, find out his model folder's name is modified. - -![](img/user_claim_wall/changed_model_folder_name_then_forget_part3.jpg) - -![](img/user_claim_wall/changed_model_folder_name_then_forget_part4.jpg) - - -# What you should do -Above are just a very small piece of this kind of claims. Those claims won't help you. If you have an issue, following is the guidline: - -* If you want to make your extension work, read the document. - -* If your SD webui is broken, before you claim it is caused by this extension, you can disable it and try again. - -* If you followed document, but it still doesn't work well, you can check console log's msg to find out the reason. If you can not understand those msg, you can come and ask for help, with console log's msg or screenshot. - -* If you are using colab, and get an error from colab, then search that error msg in google. Because it's a colab's issue or limitation. - -* If you checked console log window's msg and understand what it means, you are welcome to submit your issue. - - - - - - - - - diff --git a/img/model_card.jpg b/img/model_card.jpg index 6ceb33f68f91f3bf3eef625bc18ee427e1002456..3984ee7ad1dbe312bf6bda2ba52a4a34aaafdfb5 100644 GIT binary patch delta 38518 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 E*@WwNyZ`_I delta 21798 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 diff --git a/img/other_setting.jpg b/img/other_setting.jpg index 9b9a342410e65bcf616978530c79a636ab173f4e..62e6cf9e1c90725b704619b80fab70c4e4aeb6b3 100644 GIT binary patch literal 21934 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 diff --git a/javascript/civitai_helper.js b/javascript/civitai_helper.js index 4454d0d..f9280be 100644 --- a/javascript/civitai_helper.js +++ b/javascript/civitai_helper.js @@ -386,35 +386,17 @@ onUiLoaded(() => { if (!replace_preview_text) { replace_preview_text = "replace preview"; } - - - - // get component - let ch_always_display_ckb = gradioApp().querySelector("#ch_always_display_ckb input"); - let ch_show_btn_on_thumb_ckb = gradioApp().querySelector("#ch_show_btn_on_thumb_ckb input"); - let ch_always_display = false; - let ch_show_btn_on_thumb = false; - if (ch_always_display_ckb) { - ch_always_display = ch_always_display_ckb.checked; - } - if (ch_show_btn_on_thumb_ckb) { - ch_show_btn_on_thumb = ch_show_btn_on_thumb_ckb.checked; - } //change all "replace preview" into an icon let extra_network_id = ""; let extra_network_node = null; - let metadata_button = null; - let additional_node = null; - let replace_preview_btn = null; - let ul_node = null; + let button_row = null; let search_term_node = null; let search_term = ""; let model_type = ""; let cards = null; let need_to_add_buttons = false; - let is_thumb_mode = false; //get current tab let active_tab_type = getActiveTabType(); @@ -487,111 +469,30 @@ onUiLoaded(() => { extra_network_id = tab_prefix+"_"+js_model_type+"_"+cardid_suffix; // console.log("searching extra_network_node: " + extra_network_id); extra_network_node = gradioApp().getElementById(extra_network_id); - // check if extr network is under thumbnail mode - is_thumb_mode = false - if (extra_network_node) { - if (extra_network_node.className == "extra-network-thumbs") { - console.log(extra_network_id + " is in thumbnail mode"); - is_thumb_mode = true; - // if (!ch_show_btn_on_thumb) {continue;} - } - } else { - console.log("can not find extra_network_node: " + extra_network_id); - continue; - } + // console.log("find extra_network_node: " + extra_network_id); // get all card nodes cards = extra_network_node.querySelectorAll(".card"); for (let card of cards) { - //metadata_buttoncard - metadata_button = card.querySelector(".metadata-button"); - //additional node - additional_node = card.querySelector(".actions .additional"); - //get ul node, which is the parent of all buttons - ul_node = card.querySelector(".actions .additional ul"); - // replace preview text button - replace_preview_btn = card.querySelector(".actions .additional a"); - - // check thumb mode - if (is_thumb_mode) { - additional_node.style.display = null; - - if (ch_show_btn_on_thumb) { - ul_node.style.background = btn_thumb_background; - } else { - //reset - ul_node.style.background = null; - // console.log("remove existed buttons"); - // remove existed buttons - if (ul_node) { - // find all .a child nodes - let atags = ul_node.querySelectorAll("a"); - - for (let atag of atags) { - //reset display - atag.style.display = null; - //remove extension's button - if (ch_btn_txts.indexOf(atag.innerHTML)>=0) { - //need to remove - ul_node.removeChild(atag); - } else { - //do not remove, just reset - atag.innerHTML = replace_preview_text; - atag.style.display = null; - atag.style.fontSize = null; - atag.style.position = null; - atag.style.backgroundImage = null; - } - } - - //also remove br tag in ul - let brtag = ul_node.querySelector("br"); - if (brtag) { - ul_node.removeChild(brtag); - } - - } - //just reset and remove nodes, do nothing else - continue; - - } - - } else { - // full preview mode - if (ch_always_display) { - additional_node.style.display = "block"; - } else { - additional_node.style.display = null; - } - - // remove br tag - let brtag = ul_node.querySelector("br"); - if (brtag) { - ul_node.removeChild(brtag); - } - + //get button row + button_row = card.querySelector(".button-row"); + + if (!button_row){ + console.log("can not find button_row"); + continue; } - // change replace preview text button into icon - if (replace_preview_btn) { - if (replace_preview_btn.innerHTML !== "🖼️") { - need_to_add_buttons = true; - replace_preview_btn.innerHTML = "🖼️"; - if (!is_thumb_mode) { - replace_preview_btn.style.fontSize = btn_fontSize; - replace_preview_btn.style.margin = btn_margin; - } else { - replace_preview_btn.style.display = btn_thumb_display; - replace_preview_btn.style.fontSize = btn_thumb_fontSize; - replace_preview_btn.style.position = btn_thumb_pos; - replace_preview_btn.style.backgroundImage = btn_thumb_backgroundImage; - } - - } + let atags = button_row.querySelectorAll("a"); + if (atags && atags.length) { + console.log("find atags: " + atags.length); + } else { + console.log("no atags"); + need_to_add_buttons = true; } if (!need_to_add_buttons) { + console.log("do not need to add buttons"); continue; } @@ -605,46 +506,26 @@ onUiLoaded(() => { } // get search_term - search_term = search_term_node.innerHTML; + search_term = search_term_node.innerHTML.trim(); if (!search_term) { console.log("search_term is empty for cards in " + extra_network_id); continue; } - - - // if (is_thumb_mode) { - // ul_node.style.background = btn_thumb_background; - // } - + console.log("adding buttons"); // then we need to add 3 buttons to each ul node: let open_url_node = document.createElement("a"); open_url_node.href = "#"; open_url_node.innerHTML = "🌐"; - if (!is_thumb_mode) { - open_url_node.style.fontSize = btn_fontSize; - open_url_node.style.margin = btn_margin; - } else { - open_url_node.style.display = btn_thumb_display; - open_url_node.style.fontSize = btn_thumb_fontSize; - open_url_node.style.position = btn_thumb_pos; - open_url_node.style.backgroundImage = btn_thumb_backgroundImage; - } + open_url_node.className = "card-button"; + open_url_node.title = "Open this model's civitai url"; open_url_node.setAttribute("onclick","open_model_url(event, '"+model_type+"', '"+search_term+"')"); let add_trigger_words_node = document.createElement("a"); add_trigger_words_node.href = "#"; add_trigger_words_node.innerHTML = "💡"; - if (!is_thumb_mode) { - add_trigger_words_node.style.fontSize = btn_fontSize; - add_trigger_words_node.style.margin = btn_margin; - } else { - add_trigger_words_node.style.display = btn_thumb_display; - add_trigger_words_node.style.fontSize = btn_thumb_fontSize; - add_trigger_words_node.style.position = btn_thumb_pos; - add_trigger_words_node.style.backgroundImage = btn_thumb_backgroundImage; - } + add_trigger_words_node.className = "card-button"; add_trigger_words_node.title = "Add trigger words to prompt"; add_trigger_words_node.setAttribute("onclick","add_trigger_words(event, '"+model_type+"', '"+search_term+"')"); @@ -652,26 +533,15 @@ onUiLoaded(() => { let use_preview_prompt_node = document.createElement("a"); use_preview_prompt_node.href = "#"; use_preview_prompt_node.innerHTML = "🏷️"; - if (!is_thumb_mode) { - use_preview_prompt_node.style.fontSize = btn_fontSize; - use_preview_prompt_node.style.margin = btn_margin; - } else { - use_preview_prompt_node.style.display = btn_thumb_display; - use_preview_prompt_node.style.fontSize = btn_thumb_fontSize; - use_preview_prompt_node.style.position = btn_thumb_pos; - use_preview_prompt_node.style.backgroundImage = btn_thumb_backgroundImage; - } + use_preview_prompt_node.className = "card-button"; + use_preview_prompt_node.title = "Use prompt from preview image"; use_preview_prompt_node.setAttribute("onclick","use_preview_prompt(event, '"+model_type+"', '"+search_term+"')"); //add to card - ul_node.appendChild(open_url_node); - //add br if metadata_button exists - if (is_thumb_mode && metadata_button) { - ul_node.appendChild(document.createElement("br")); - } - ul_node.appendChild(add_trigger_words_node); - ul_node.appendChild(use_preview_prompt_node); + button_row.appendChild(open_url_node); + button_row.appendChild(add_trigger_words_node); + button_row.appendChild(use_preview_prompt_node); diff --git a/scripts/ch_lib/setting.py b/scripts/ch_lib/setting.py index aabff85..d22d0ba 100644 --- a/scripts/ch_lib/setting.py +++ b/scripts/ch_lib/setting.py @@ -16,8 +16,6 @@ data = { }, "general":{ "open_url_with_js": True, - "always_display": False, - "show_btn_on_thumb": True, "proxy": "", }, "tool":{ @@ -74,12 +72,6 @@ def load(): data = json_data # check for new key - if "always_display" not in data["general"].keys(): - data["general"]["always_display"] = False - - if "show_btn_on_thumb" not in data["general"].keys(): - data["general"]["show_btn_on_thumb"] = True - if "proxy" not in data["general"].keys(): data["general"]["proxy"] = "" @@ -87,7 +79,7 @@ def load(): return # save setting from parameter -def save_from_input(max_size_preview, skip_nsfw_preview, open_url_with_js, always_display, show_btn_on_thumb, proxy): +def save_from_input(max_size_preview, skip_nsfw_preview, open_url_with_js, proxy): global data data = { "model":{ @@ -96,8 +88,6 @@ def save_from_input(max_size_preview, skip_nsfw_preview, open_url_with_js, alway }, "general":{ "open_url_with_js": open_url_with_js, - "always_display": always_display, - "show_btn_on_thumb": show_btn_on_thumb, "proxy": proxy, }, "tool":{ diff --git a/scripts/civitai_helper.py b/scripts/civitai_helper.py index ad9e70a..b3dde37 100644 --- a/scripts/civitai_helper.py +++ b/scripts/civitai_helper.py @@ -20,7 +20,6 @@ from modules import shared from scripts.ch_lib import model from scripts.ch_lib import js_action_civitai from scripts.ch_lib import model_action_civitai -from scripts.ch_lib import setting from scripts.ch_lib import civitai from scripts.ch_lib import util @@ -34,18 +33,17 @@ root_path = os.getcwd() extension_path = scripts.basedir() model.get_custom_model_folder() -setting.load() - -# set proxy -if setting.data["general"]["proxy"]: - util.printD("Set Proxy: "+setting.data["general"]["proxy"]) - util.proxies = { - "http": setting.data["general"]["proxy"], - "https": setting.data["general"]["proxy"], - } - +# Setting now can not be saved from extension tab +# All settings now must be saved from setting page. +def on_ui_settings(): + ch_section = ("civitai_helper", "Civitai Helper") + # settings + shared.opts.add_option("ch_max_size_preview", shared.OptionInfo(True, "Download Max Size Preview", gr.Checkbox, {"interactive": True}, section=ch_section)) + shared.opts.add_option("ch_skip_nsfw_preview", shared.OptionInfo(False, "Skip NSFW Preview Images", gr.Checkbox, {"interactive": True}, section=ch_section)) + shared.opts.add_option("ch_open_url_with_js", shared.OptionInfo(True, "Open Url At Client Side", gr.Checkbox, {"interactive": True}, section=ch_section)) + shared.opts.add_option("ch_proxy", shared.OptionInfo("", "Civitai Helper Proxy", gr.Textbox, {"interactive": True, "lines":1, "info":"format: socks5h://127.0.0.1:port"}, section=ch_section)) def on_ui_tabs(): # init @@ -64,12 +62,50 @@ def on_ui_tabs(): img2img_prompt = modules.ui.img2img_paste_fields[0][0] img2img_neg_prompt = modules.ui.img2img_paste_fields[1][0] + + # get settings + max_size_preview = shared.opts.data.get("ch_max_size_preview", True) + skip_nsfw_preview = shared.opts.data.get("ch_skip_nsfw_preview", False) + open_url_with_js = shared.opts.data.get("ch_open_url_with_js", True) + proxy = shared.opts.data.get("ch_proxy", "") + + util.printD("Settings:") + util.printD("max_size_preview: " + str(max_size_preview)) + util.printD("skip_nsfw_preview: " + str(skip_nsfw_preview)) + util.printD("open_url_with_js: " + str(open_url_with_js)) + util.printD("proxy: " + str(proxy)) + + # set proxy + if proxy: + util.proxies = { + "http": proxy, + "https": proxy, + } + # ====Event's function==== + def scan_model(scan_model_types): + return model_action_civitai.scan_model(scan_model_types, max_size_preview, skip_nsfw_preview) + + def get_model_info_by_input(model_type_drop, model_name_drop, model_url_or_id_txtbox): + return model_action_civitai.get_model_info_by_input(model_type_drop, model_name_drop, model_url_or_id_txtbox, max_size_preview, skip_nsfw_preview) + + def dl_model_by_input(dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb): + return model_action_civitai.dl_model_by_input(dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb, max_size_preview, skip_nsfw_preview) + + def check_models_new_version_to_md(dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb): + return model_action_civitai.check_models_new_version_to_md(dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb, max_size_preview, skip_nsfw_preview) + + def open_model_url(js_msg_txtbox): + return js_action_civitai.open_model_url(js_msg_txtbox, open_url_with_js) + + def dl_model_new_version(js_msg_txtbox, max_size_preview): + return js_action_civitai.dl_model_new_version(js_msg_txtbox, max_size_preview, skip_nsfw_preview) + + def get_model_names_by_input(model_type, empty_info_only): names = civitai.get_model_names_by_input(model_type, empty_info_only) return model_name_drop.update(choices=names) - def get_model_info_by_url(url): r = model_action_civitai.get_model_info_by_url(url) @@ -85,15 +121,6 @@ def on_ui_tabs(): # ====UI==== with gr.Blocks(analytics_enabled=False) as civitai_helper: - # with gr.Blocks(css=".block.padded {padding: 10px !important}") as civitai_helper: - - # init - max_size_preview = setting.data["model"]["max_size_preview"] - skip_nsfw_preview = setting.data["model"]["skip_nsfw_preview"] - open_url_with_js = setting.data["general"]["open_url_with_js"] - always_display = setting.data["general"]["always_display"] - show_btn_on_thumb = setting.data["general"]["show_btn_on_thumb"] - proxy = setting.data["general"]["proxy"] model_types = list(model.folders.keys()) no_info_model_names = civitai.get_model_names_by_input("ckp", False) @@ -107,8 +134,6 @@ def on_ui_tabs(): with gr.Column(): gr.Markdown("### Scan Models for Civitai") with gr.Row(): - max_size_preview_ckb = gr.Checkbox(label="Download Max Size Preview", value=max_size_preview, elem_id="ch_max_size_preview_ckb") - skip_nsfw_preview_ckb = gr.Checkbox(label="Skip NSFW Preview Images", value=skip_nsfw_preview, elem_id="ch_skip_nsfw_preview_ckb") scan_model_types_ckbg = gr.CheckboxGroup(choices=model_types, label="Model Types", value=model_types) # with gr.Row(): @@ -159,16 +184,9 @@ def on_ui_tabs(): with gr.Box(elem_classes="ch_box"): with gr.Column(): - gr.Markdown("### Other Setting") - with gr.Row(): - open_url_with_js_ckb = gr.Checkbox(label="Open Url At Client Side", value=open_url_with_js, elem_id="ch_open_url_with_js_ckb") - always_display_ckb = gr.Checkbox(label="Always Display Buttons", value=always_display, elem_id="ch_always_display_ckb") - show_btn_on_thumb_ckb = gr.Checkbox(label="Show Button On Thumb Mode", value=show_btn_on_thumb, elem_id="ch_show_btn_on_thumb_ckb") - - proxy_txtbox = gr.Textbox(label="Proxy", interactive=True, lines=1, value=proxy, info="format: http://127.0.0.1:port") - - save_setting_btn = gr.Button(value="Save Setting") - general_log_md = gr.Markdown(value="") + gr.Markdown("### Other") + # save_setting_btn = gr.Button(value="Save Setting") + gr.Markdown(value="Settings are moved into Settings Tab->Civitai Helper section") # ====Footer==== @@ -185,33 +203,35 @@ def on_ui_tabs(): # ====events==== # Scan Models for Civitai - scan_model_civitai_btn.click(model_action_civitai.scan_model, inputs=[scan_model_types_ckbg, max_size_preview_ckb, skip_nsfw_preview_ckb], outputs=scan_model_log_md) + scan_model_civitai_btn.click(scan_model, inputs=[scan_model_types_ckbg], outputs=scan_model_log_md) # Get Civitai Model Info by Model Page URL model_type_drop.change(get_model_names_by_input, inputs=[model_type_drop, empty_info_only_ckb], outputs=model_name_drop) empty_info_only_ckb.change(get_model_names_by_input, inputs=[model_type_drop, empty_info_only_ckb], outputs=model_name_drop) - get_civitai_model_info_by_id_btn.click(model_action_civitai.get_model_info_by_input, inputs=[model_type_drop, model_name_drop, model_url_or_id_txtbox, max_size_preview_ckb, skip_nsfw_preview_ckb], outputs=get_model_by_id_log_md) + get_civitai_model_info_by_id_btn.click(get_model_info_by_input, inputs=[model_type_drop, model_name_drop, model_url_or_id_txtbox], outputs=get_model_by_id_log_md) # Download Model dl_model_info_btn.click(get_model_info_by_url, inputs=dl_model_url_or_id_txtbox, outputs=[dl_model_info, dl_model_name_txtbox, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop]) - dl_civitai_model_by_id_btn.click(model_action_civitai.dl_model_by_input, inputs=[dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb, max_size_preview_ckb, skip_nsfw_preview_ckb], outputs=dl_log_md) + dl_civitai_model_by_id_btn.click(dl_model_by_input, inputs=[dl_model_info, dl_model_type_txtbox, dl_subfolder_drop, dl_version_drop, dl_all_ckb], outputs=dl_log_md) # Check models' new version check_models_new_version_btn.click(model_action_civitai.check_models_new_version_to_md, inputs=model_types_ckbg, outputs=check_models_new_version_log_md) - # Other Setting - save_setting_btn.click(setting.save_from_input, inputs=[max_size_preview_ckb, skip_nsfw_preview_ckb, open_url_with_js_ckb, always_display_ckb, show_btn_on_thumb_ckb, proxy_txtbox], outputs=general_log_md) - # js action - js_open_url_btn.click(js_action_civitai.open_model_url, inputs=[js_msg_txtbox, open_url_with_js_ckb], outputs=py_msg_txtbox) + js_open_url_btn.click(open_model_url, inputs=[js_msg_txtbox], outputs=py_msg_txtbox) js_add_trigger_words_btn.click(js_action_civitai.add_trigger_words, inputs=[js_msg_txtbox], outputs=[txt2img_prompt, img2img_prompt]) js_use_preview_prompt_btn.click(js_action_civitai.use_preview_image_prompt, inputs=[js_msg_txtbox], outputs=[txt2img_prompt, txt2img_neg_prompt, img2img_prompt, img2img_neg_prompt]) - js_dl_model_new_version_btn.click(js_action_civitai.dl_model_new_version, inputs=[js_msg_txtbox, max_size_preview_ckb, skip_nsfw_preview_ckb], outputs=dl_log_md) + js_dl_model_new_version_btn.click(dl_model_new_version, inputs=[js_msg_txtbox], outputs=dl_log_md) # the third parameter is the element id on html, with a "tab_" as prefix return (civitai_helper , "Civitai Helper", "civitai_helper"), + + + + +script_callbacks.on_ui_settings(on_ui_settings) script_callbacks.on_ui_tabs(on_ui_tabs)