Unverified Commit 44ae3504 authored by Riccardo Giovanetti's avatar Riccardo Giovanetti Committed by GitHub
Browse files

Merge branch 'AUTOMATIC1111:master' into Italian

parents e0c1cd14 5c9b3625
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line

function extensions_apply(_, _){
    disable = []
    update = []
    gradioApp().querySelectorAll('#extensions input[type="checkbox"]').forEach(function(x){
        if(x.name.startsWith("enable_") && ! x.checked)
            disable.push(x.name.substr(7))

        if(x.name.startsWith("update_") && x.checked)
            update.push(x.name.substr(7))
    })

    restart_reload()

    return [JSON.stringify(disable), JSON.stringify(update)]
}

function extensions_check(){
    gradioApp().querySelectorAll('#extensions .extension_status').forEach(function(x){
        x.innerHTML = "Loading..."
    })

    return []
}
 No newline at end of file
+18 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
  " images in this directory. Loaded ": "개의 이미지가 이 경로에 존재합니다. ",
  " pages": "페이지로 나뉘어 표시합니다.",
  ", divided into ": "입니다. ",
  ". Use Installed tab to restart.": "에 성공적으로 설치하였습니다. 설치된 확장기능 탭에서 UI를 재시작해주세요.",
  "1st and last digit must be 1. ex:'1, 2, 1'": "1st and last digit must be 1. ex:'1, 2, 1'",
  "[wiki]": " [위키] 참조",
  "A directory on the same machine where the server is running.": "WebUI 서버가 돌아가고 있는 디바이스에 존재하는 디렉토리를 선택해 주세요.",
@@ -34,6 +35,7 @@
  "api": "",
  "append": "뒤에 삽입",
  "Append commas": "쉼표 삽입",
  "Apply and restart UI": "적용 후 UI 재시작",
  "Apply color correction to img2img results to match original colors.": "이미지→이미지 결과물이 기존 색상과 일치하도록 색상 보정 적용하기",
  "Apply selected styles to current prompt": "현재 프롬프트에 선택된 스타일 적용",
  "Apply settings": "설정 적용하기",
@@ -44,6 +46,7 @@
  "Batch img2img": "이미지→이미지 배치",
  "Batch Process": "이미지 여러장 처리",
  "Batch size": "배치 크기",
  "behind": "최신 아님",
  "BSRGAN 4x": "BSRGAN 4x",
  "built with gradio": "gradio로 제작되었습니다",
  "Cancel generate forever": "반복 생성 취소",
@@ -52,6 +55,7 @@
  "CFG Scale": "CFG 스케일",
  "cfg1 min/max": "CFG1 최소/최대",
  "cfg2 min/max": "CFG2 최소/최대",
  "Check for updates": "업데이트 확인",
  "Check progress": "진행도 체크",
  "Check progress (first)": "진행도 체크 (처음)",
  "checkpoint": " 체크포인트 ",
@@ -136,6 +140,8 @@
  "Euler a": "Euler a",
  "Euler Ancestral - very creative, each can get a completely different picture depending on step count, setting steps to higher than 30-40 does not help": "Euler Ancestral - 매우 창의적, 스텝 수에 따라 완전히 다른 결과물이 나올 수 있음. 30~40보다 높은 스텝 수는 효과가 미미함",
  "Existing Caption txt Action": "이미 존재하는 캡션 텍스트 처리",
  "Extension": "확장기능",
  "Extensions": "확장기능",
  "Extra": "고급",
  "Extras": "부가기능",
  "extras": "부가기능",
@@ -216,6 +222,10 @@
  "Inpainting conditioning mask strength": "인페인팅 조절 마스크 강도",
  "Input directory": "인풋 이미지 경로",
  "Input images directory": "이미지 경로 입력",
  "Install": "설치",
  "Install from URL": "URL로부터 확장기능 설치",
  "Installed": "설치된 확장기능",
  "Installed into ": "확장기능을 ",
  "Interpolation Method": "보간 방법",
  "Interrogate\nCLIP": "CLIP\n분석",
  "Interrogate\nDeepBooru": "DeepBooru\n분석",
@@ -242,10 +252,12 @@
  "Last saved image:": "마지막으로 저장된 이미지 : ",
  "latent noise": "잠재 노이즈",
  "latent nothing": "잠재 공백",
  "latest": "최신 버전",
  "LDSR": "LDSR",
  "LDSR processing steps. Lower = faster": "LDSR 스텝 수. 낮은 값 = 빠른 속도",
  "leakyrelu": "leakyrelu",
  "Leave blank to save images to the default path.": "기존 저장 경로에 이미지들을 저장하려면 비워두세요.",
  "Leave empty for auto": "자동 설정하려면 비워두십시오",
  "left": "왼쪽",
  "linear": "linear",
  "List of prompt inputs": "프롬프트 입력 리스트",
@@ -254,6 +266,7 @@
  "LMS Karras": "LMS Karras",
  "Load": "불러오기",
  "Loading...": "로딩 중...",
  "Local directory name": "로컬 경로 이름",
  "Localization (requires restart)": "현지화 (재시작 필요)",
  "Log directory": "로그 경로",
  "Loopback": "루프백",
@@ -486,7 +499,9 @@
  "txt2img": "텍스트→이미지",
  "txt2img history": "텍스트→이미지 기록",
  "uniform": "uniform",
  "unknown": "알수 없음",
  "up": "위쪽",
  "Update": "업데이트",
  "Upload mask": "마스크 업로드하기",
  "Upload prompt inputs": "입력할 프롬프트를 업로드하십시오",
  "Upscale Before Restoring Faces": "얼굴 보정을 진행하기 전에 업스케일링 먼저 진행하기",
@@ -498,9 +513,12 @@
  "Upscaler 2 visibility": "업스케일러 2 가시성",
  "Upscaler for img2img": "이미지→이미지 업스케일러",
  "Upscaling": "업스케일링",
  "URL for extension's git repository": "확장기능의 git 레포 URL",
  "Use a two step process to partially create an image at smaller resolution, upscale, and then improve details in it without changing composition": "저해상도 이미지를 1차적으로 생성 후 업스케일을 진행하여, 이미지의 전체적인 구성을 바꾸지 않고 세부적인 디테일을 향상시킵니다.",
  "Use an empty output directory to save pictures normally instead of writing to the output directory.": "저장 경로를 비워두면 기본 저장 폴더에 이미지들이 저장됩니다.",
  "Use BLIP for caption": "캡션에 BLIP 사용",
  "Use checkbox to enable the extension; it will be enabled or disabled when you click apply button": "체크박스를 이용해 적용할 확장기능을 선택하세요. 변경사항은 적용 후 UI 재시작 버튼을 눌러야 적용됩니다.",
  "Use checkbox to mark the extension for update; it will be updated when you click apply button": "체크박스를 이용해 업데이트할 확장기능을 선택하세요. 업데이트는 적용 후 UI 재시작 버튼을 눌러야 적용됩니다.",
  "Use deepbooru for caption": "캡션에 deepbooru 사용",
  "Use dropout": "드롭아웃 사용",
  "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.": "다음 태그들을 사용해 이미지 파일명 형식을 결정하세요 : [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]. 비워두면 기본값으로 설정됩니다.",

modules/extensions.py

0 → 100644
+83 −0
Original line number Diff line number Diff line
import os
import sys
import traceback

import git

from modules import paths, shared


extensions = []
extensions_dir = os.path.join(paths.script_path, "extensions")


def active():
    return [x for x in extensions if x.enabled]


class Extension:
    def __init__(self, name, path, enabled=True):
        self.name = name
        self.path = path
        self.enabled = enabled
        self.status = ''
        self.can_update = False

        repo = None
        try:
            if os.path.exists(os.path.join(path, ".git")):
                repo = git.Repo(path)
        except Exception:
            print(f"Error reading github repository info from {path}:", file=sys.stderr)
            print(traceback.format_exc(), file=sys.stderr)

        if repo is None or repo.bare:
            self.remote = None
        else:
            self.remote = next(repo.remote().urls, None)
            self.status = 'unknown'

    def list_files(self, subdir, extension):
        from modules import scripts

        dirpath = os.path.join(self.path, subdir)
        if not os.path.isdir(dirpath):
            return []

        res = []
        for filename in sorted(os.listdir(dirpath)):
            res.append(scripts.ScriptFile(self.path, filename, os.path.join(dirpath, filename)))

        res = [x for x in res if os.path.splitext(x.path)[1].lower() == extension and os.path.isfile(x.path)]

        return res

    def check_updates(self):
        repo = git.Repo(self.path)
        for fetch in repo.remote().fetch("--dry-run"):
            if fetch.flags != fetch.HEAD_UPTODATE:
                self.can_update = True
                self.status = "behind"
                return

        self.can_update = False
        self.status = "latest"

    def pull(self):
        repo = git.Repo(self.path)
        repo.remotes.origin.pull()


def list_extensions():
    extensions.clear()

    if not os.path.isdir(extensions_dir):
        return

    for dirname in sorted(os.listdir(extensions_dir)):
        path = os.path.join(extensions_dir, dirname)
        if not os.path.isdir(path):
            continue

        extension = Extension(name=dirname, path=path, enabled=dirname not in shared.opts.disabled_extensions)
        extensions.append(extension)
+5 −0
Original line number Diff line number Diff line
@@ -17,6 +17,11 @@ paste_fields = {}
bind_list = []


def reset():
    paste_fields.clear()
    bind_list.clear()


def quote(text):
    if ',' not in str(text):
        return text
+4 −17
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ import modules.ui as ui
import gradio as gr

from modules.processing import StableDiffusionProcessing
from modules import shared, paths, script_callbacks
from modules import shared, paths, script_callbacks, extensions

AlwaysVisible = object()

@@ -107,17 +107,8 @@ def list_scripts(scriptdirname, extension):
        for filename in sorted(os.listdir(basedir)):
            scripts_list.append(ScriptFile(paths.script_path, filename, os.path.join(basedir, filename)))

    extdir = os.path.join(paths.script_path, "extensions")
    if os.path.exists(extdir):
        for dirname in sorted(os.listdir(extdir)):
            dirpath = os.path.join(extdir, dirname)
            scriptdirpath = os.path.join(dirpath, scriptdirname)

            if not os.path.isdir(scriptdirpath):
                continue

            for filename in sorted(os.listdir(scriptdirpath)):
                scripts_list.append(ScriptFile(dirpath, filename, os.path.join(scriptdirpath, filename)))
    for ext in extensions.active():
        scripts_list += ext.list_files(scriptdirname, extension)

    scripts_list = [x for x in scripts_list if os.path.splitext(x.path)[1].lower() == extension and os.path.isfile(x.path)]

@@ -127,11 +118,7 @@ def list_scripts(scriptdirname, extension):
def list_files_with_name(filename):
    res = []

    dirs = [paths.script_path]

    extdir = os.path.join(paths.script_path, "extensions")
    if os.path.exists(extdir):
        dirs += [os.path.join(extdir, d) for d in sorted(os.listdir(extdir))]
    dirs = [paths.script_path] + [ext.path for ext in extensions.active()]

    for dirpath in dirs:
        if not os.path.isdir(dirpath):
Loading