fantos commited on
Commit
d175de0
·
verified ·
1 Parent(s): a5ccc43

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import urllib.parse
2
+ import gradio as gr
3
+
4
+ # ---------------------------
5
+ # 배지 URL 생성 함수 정의
6
+ # ---------------------------
7
+ def generate_static_badge(label, message, color, label_color, logo, logo_color, style, link):
8
+ base = "https://img.shields.io/static/v1"
9
+ params = []
10
+ if label:
11
+ params.append(f"label={urllib.parse.quote(label, safe='')}")
12
+ if message:
13
+ params.append(f"message={urllib.parse.quote(message, safe='')}")
14
+ if color:
15
+ params.append(f"color={urllib.parse.quote(color, safe='')}")
16
+ if label_color:
17
+ params.append(f"labelColor={urllib.parse.quote(label_color, safe='')}")
18
+ if logo:
19
+ params.append(f"logo={urllib.parse.quote(logo, safe='')}")
20
+ if logo_color:
21
+ params.append(f"logoColor={urllib.parse.quote(logo_color, safe='')}")
22
+ if style:
23
+ params.append(f"style={urllib.parse.quote(style, safe='')}")
24
+
25
+ badge_url = base + ("?" + "&".join(params) if params else "")
26
+ if link:
27
+ html_code = f'<a href="{link}" target="_blank"><img src="{badge_url}" alt="badge"></a>'
28
+ else:
29
+ html_code = f'<img src="{badge_url}" alt="badge">'
30
+
31
+ badge_preview = f"""
32
+ <div style='padding:10px; text-align:center;'>
33
+ {html_code}
34
+ </div>
35
+ """
36
+ return html_code, badge_preview
37
+
38
+ # ---------------------------
39
+ # Gradio UI 구성
40
+ # ---------------------------
41
+ with gr.Blocks(theme=gr.themes.Default()) as demo:
42
+ gr.Markdown("""
43
+ # BadgeCraft - Badge Generator 🛠️
44
+ 생성된 배지를 상단에서 바로 확인하고, 아래 폼을 통해 실시간으로 옵션을 조정하세요.
45
+ """)
46
+
47
+ out_code = gr.Code(label="HTML Snippet", language="html")
48
+ out_preview = gr.HTML(label="Badge Preview")
49
+
50
+ with gr.Row():
51
+ label = gr.Textbox(label="Label", placeholder="예: build")
52
+ message = gr.Textbox(label="Message", placeholder="예: passing")
53
+ logo = gr.Textbox(label="Logo", placeholder="예: github")
54
+
55
+ with gr.Row():
56
+ color = gr.ColorPicker(label="Color", value="#007ec6")
57
+ label_color = gr.ColorPicker(label="Label Color", value="#555")
58
+ logo_color = gr.ColorPicker(label="Logo Color", value="#ffffff")
59
+
60
+ style = gr.Dropdown(label="Style", choices=["flat", "flat-square", "plastic", "for-the-badge", "social"], value="flat")
61
+ link = gr.Textbox(label="Link (배지 클릭 시 이동할 URL)", placeholder="https://yourlink.com")
62
+
63
+ inputs = [label, message, color, label_color, logo, logo_color, style, link]
64
+ for inp in inputs:
65
+ inp.change(fn=generate_static_badge, inputs=inputs, outputs=[out_code, out_preview])
66
+
67
+ # 초기값 한 번 출력
68
+ generate_static_badge("build", "passing", "#007ec6", "#555", "github", "#ffffff", "flat", "https://shields.io")
69
+
70
+ # 실행
71
+ # demo.launch()