script.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import json
  2. import os
  3. from pathlib import Path
  4. import gradio as gr
  5. def generate_html():
  6. css = """
  7. .character-gallery table {
  8. border-collapse: collapse;
  9. table-layout: fixed;
  10. width: 100%;
  11. }
  12. .character-gallery th, .character-gallery td {
  13. padding: 8px;
  14. }
  15. .character-gallery img {
  16. width: 150px;
  17. height: 200px;
  18. object-fit: cover;
  19. }
  20. .character-gallery .placeholder {
  21. width: 150px;
  22. height: 200px;
  23. background-color: gray;
  24. }
  25. .character-gallery td {
  26. text-align: center;
  27. vertical-align: middle;
  28. }
  29. """
  30. table_html = f'<style>{css}</style><div class="character-gallery"><table>'
  31. # Iterate through files in image folder
  32. for file in Path("characters").glob("*"):
  33. if file.name.endswith(".json"):
  34. json_name = file.name
  35. image_name = file.name.replace(".json", "")
  36. table_html += "<tr>"
  37. if Path(f"characters/{image_name}.png").exists():
  38. image_html = f'<img src="file/characters/{image_name}.png">'
  39. elif Path(f"characters/{image_name}.jpg").exists():
  40. image_html = f'<img src="file/characters/{image_name}.jpg">'
  41. else:
  42. image_html = "<div class='placeholder'></div>"
  43. table_html += f"<td>{image_html}</td><td>{image_name}</td>"
  44. table_html += "</tr>"
  45. table_html += "</table></div>"
  46. return table_html
  47. def ui():
  48. with gr.Accordion("Character gallery"):
  49. update = gr.Button("Refresh")
  50. gallery = gr.HTML(value=generate_html())
  51. update.click(generate_html, [], gallery)