gradios.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import logging
  2. import os
  3. import gradio as gr
  4. from toolbox import get_conf, ProxyNetworkActivate
  5. CODE_HIGHLIGHT, ADD_WAIFU, LAYOUT = get_conf("CODE_HIGHLIGHT", "ADD_WAIFU", "LAYOUT")
  6. theme_dir = os.path.dirname(__file__)
  7. def dynamic_set_theme(THEME):
  8. set_theme = gr.themes.ThemeClass()
  9. with ProxyNetworkActivate("Download_Gradio_Theme"):
  10. logging.info("正在下载Gradio主题,请稍等。")
  11. if THEME.startswith("Huggingface-"):
  12. THEME = THEME.lstrip("Huggingface-")
  13. if THEME.startswith("huggingface-"):
  14. THEME = THEME.lstrip("huggingface-")
  15. set_theme = set_theme.from_hub(THEME.lower())
  16. return set_theme
  17. def adjust_theme():
  18. try:
  19. set_theme = gr.themes.ThemeClass()
  20. with ProxyNetworkActivate("Download_Gradio_Theme"):
  21. logging.info("正在下载Gradio主题,请稍等。")
  22. THEME = get_conf("THEME")
  23. if THEME.startswith("Huggingface-"):
  24. THEME = THEME.lstrip("Huggingface-")
  25. if THEME.startswith("huggingface-"):
  26. THEME = THEME.lstrip("huggingface-")
  27. set_theme = set_theme.from_hub(THEME.lower())
  28. with open(os.path.join(theme_dir, "common.js"), "r", encoding="utf8") as f:
  29. js = f"<script>{f.read()}</script>"
  30. # 添加一个萌萌的看板娘
  31. if ADD_WAIFU:
  32. js += """
  33. <script src="file=docs/waifu_plugin/jquery.min.js"></script>
  34. <script src="file=docs/waifu_plugin/jquery-ui.min.js"></script>
  35. <script src="file=docs/waifu_plugin/autoload.js"></script>
  36. """
  37. if not hasattr(gr, "RawTemplateResponse"):
  38. gr.RawTemplateResponse = gr.routes.templates.TemplateResponse
  39. gradio_original_template_fn = gr.RawTemplateResponse
  40. def gradio_new_template_fn(*args, **kwargs):
  41. res = gradio_original_template_fn(*args, **kwargs)
  42. res.body = res.body.replace(b"</html>", f"{js}</html>".encode("utf8"))
  43. res.init_headers()
  44. return res
  45. gr.routes.templates.TemplateResponse = (
  46. gradio_new_template_fn # override gradio template
  47. )
  48. except Exception:
  49. set_theme = None
  50. from toolbox import trimmed_format_exc
  51. logging.error("gradio版本较旧, 不能自定义字体和颜色:", trimmed_format_exc())
  52. return set_theme
  53. with open(os.path.join(theme_dir, "common.css"), "r", encoding="utf-8") as f:
  54. advanced_css = f.read()