Advertisement
RiamMar

extensions/PromptGallery-stable-diffusion-webui/scripts/prompt_gallery.py

Aug 4th, 2023 (edited)
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.96 KB | Source Code | 0 0
  1. import os
  2. import shutil
  3. import time
  4. import stat
  5. import gradio as gr
  6. import modules.extras
  7. import modules.ui
  8. from modules.shared import opts, cmd_opts
  9. from modules import shared, scripts
  10. from modules.paths_internal import extensions_dir
  11. from modules import script_callbacks
  12. from pathlib import Path
  13. from typing import List, Tuple
  14. import uvicorn
  15. from uvicorn import Config
  16. from fastapi import FastAPI
  17. from fastapi.staticfiles import StaticFiles
  18. import contextlib
  19. import threading
  20. import requests
  21. from fastapi.middleware.cors import CORSMiddleware
  22. import json
  23. from modules import shared
  24. from fastapi import APIRouter
  25.  
  26. pg_ip = "127.0.0.1"
  27. #pg_ip = "127.0.0.1" if shared.cmd_opts.listen else 'localhost'
  28. pg_port = 5173
  29.  
  30.  
  31.  
  32. def on_ui_settings():
  33.     global pg_ip
  34.    
  35.     with open(os.path.join(extensions_dir, 'prompt_gallery_name.json')) as fd:
  36.         name = json.load(fd)['name']
  37.     # os.chmod('./extensions/'+name, stat.S_IRWXO)
  38.     app = FastAPI()
  39.     app.mount('/', StaticFiles(directory=extensions_dir+"/"+name,html=True))
  40.     config = Config(app=app,  host=pg_ip,port=pg_port, log_level="info", loop="asyncio", limit_max_requests=1)
  41.     app.add_middleware(
  42.         CORSMiddleware,
  43.         allow_origins=["*"],
  44.         allow_credentials=True,
  45.         allow_methods=["*"],
  46.         allow_headers=["*"]  
  47.     )
  48.  
  49.     thread = threading.Thread(target= uvicorn.run, kwargs={'app':app, 'host': pg_ip, 'port':pg_port})
  50.     thread.start()
  51.  
  52.     wait_time = 0
  53.     if_connect =False
  54.  
  55.     while if_connect == False and wait_time<=6:
  56.         try:
  57.             tmp = requests.get("http://{}:{}".format(pg_ip, str(pg_port)))
  58.             if_connect = True if int(tmp.status_code) /100 == 2. or int(tmp.status_code) /100 == 2 else False
  59.         except:
  60.             print(".")
  61.             time.sleep(1)
  62.             wait_time+=1
  63.  
  64.  
  65. def on_ui_tabs():
  66.     if  shared.cmd_opts.theme is None or shared.cmd_opts.theme != 'dark':
  67.         extension_theme = 'white'
  68.     else:
  69.         extension_theme = 'black'
  70.     remote_webui = '127.0.0.1'
  71.     if  shared.cmd_opts.server_name:
  72.         remote_webui = str(shared.cmd_opts.server_name)
  73.     port = str(shared.cmd_opts.port) if shared.cmd_opts.port is not None else "7860"
  74.    
  75.     html = """<script>var ip = window.location.hostname; </script>
  76.    <iframe id="tab_iframe" allow="clipboard-read; clipboard-write" style="width: 100%; min-height: 1080px; padding: 0;margin: 0;border: none;" src="http://{pg_ip:s}:{pg_port:s}/?theme={theme:s}&port={port:s}&ip={remote_webui:s}" frameborder="0" marginwidth="0" marginheight="0"></iframe>""".format(pg_ip=pg_ip, pg_port=str(pg_port), remote_webui=remote_webui, theme=extension_theme, port=port)
  77.     with gr.Blocks(analytics_enabled=False, elem_id="prompt_gallery") as prompt_gallery:
  78.         prompt_gallery = gr.HTML(html)
  79.    
  80.     return (prompt_gallery , "Prompt Gallery", "prompt_gallery"),
  81.  
  82. script_callbacks.on_ui_tabs(on_ui_tabs)
  83.  
  84. script_callbacks.on_ui_settings(on_ui_settings)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement