openfree commited on
Commit
424cea8
ยท
verified ยท
1 Parent(s): 3fa913e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +124 -15
app.py CHANGED
@@ -1,24 +1,133 @@
1
  import gradio as gr
2
  import os
3
- from repo_to_space_auto import deploy # ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ import ๊ฐ€๋Šฅ
 
4
 
5
- def launch(repo_url, hf_token, private):
6
- # ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ† ํฐ ์ž๋™ ์ฃผ์ž…(์„ ํƒ ์‚ฌํ•ญ)
7
- if hf_token:
8
- os.environ["HF_TOKEN"] = hf_token
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  try:
10
  link = deploy(repo_url, hf_token, private=private)
11
- return f"### โœ… Space ์ƒ์„ฑ ์™„๋ฃŒ\n\n[{link}]({link})"
 
 
 
 
 
 
 
12
  except Exception as e:
13
- return f"### โŒ ์˜ค๋ฅ˜: {e}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
- with gr.Blocks(title="HF Space Auto-Deployer") as demo:
16
- gr.Markdown("## ๐Ÿ”„ Git ๋ ˆํฌ โ†’ Hugging Face Gradio Space ์ž๋™ ๋ฐฐํฌ")
17
- repo_in = gr.Textbox(label="Repository URL")
18
- token_in = gr.Textbox(label="HF Write Token", type="password")
19
- priv_in = gr.Checkbox(label="Private Space", value=False)
20
- out_md = gr.Markdown()
21
- gr.Button("Deploy").click(fn=launch, inputs=[repo_in, token_in, priv_in], outputs=out_md)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
  if __name__ == "__main__":
24
- demo.launch()
 
 
 
 
1
  import gradio as gr
2
  import os
3
+ import sys
4
+ from pathlib import Path
5
 
6
+ # repo_to_space_auto ๋ชจ๋“ˆ ๋™์  ์ž„ํฌํŠธ
7
+ sys.path.insert(0, str(Path(__file__).parent))
8
+ from repo_to_space_auto import deploy
9
+
10
+ def launch_deploy(repo_url, private, request: gr.Request):
11
+ """HF OAuth ํ† ํฐ์œผ๋กœ Space ๋ฐฐํฌ"""
12
+ # OAuth๋กœ ๋ฐ›์€ ํ† ํฐ ํ™•์ธ
13
+ hf_token = request.headers.get("x-oauth-identity")
14
+
15
+ if not hf_token:
16
+ return """### โŒ ๋กœ๊ทธ์ธ ํ•„์š”
17
+
18
+ ์ƒ๋‹จ์˜ 'Sign in with Hugging Face' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋กœ๊ทธ์ธํ•ด์ฃผ์„ธ์š”."""
19
+
20
+ # ๊ธฐ์กด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐฑ์—… ๋ฐ ์ž„์‹œ ์„ค์ •
21
+ old_token = os.environ.get("HF_TOKEN")
22
+ os.environ["HF_TOKEN"] = hf_token
23
+
24
  try:
25
  link = deploy(repo_url, hf_token, private=private)
26
+ return f"""### โœ… Space ์ƒ์„ฑ ์™„๋ฃŒ
27
+
28
+ ๐ŸŽ‰ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐฐํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
29
+
30
+ **Space URL:** [{link}]({link})
31
+
32
+ ---
33
+ *๋ฐฐํฌ๋œ Space๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์„ธ์š”.*"""
34
  except Exception as e:
35
+ return f"""### โŒ ๋ฐฐํฌ ์˜ค๋ฅ˜
36
+
37
+ ์˜ค๋ฅ˜ ๋‚ด์šฉ: `{str(e)}`
38
+
39
+ **๊ฐ€๋Šฅํ•œ ์›์ธ:**
40
+ - ์ž˜๋ชป๋œ Repository URL
41
+ - ๊ถŒํ•œ ๋ถ€์กฑ (write ๊ถŒํ•œ ํ•„์š”)
42
+ - ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ
43
+ - API ํ† ํฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฏธ์„ค์ • (BAPI_TOKEN, FRIENDLI_TOKEN)"""
44
+ finally:
45
+ # ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ณต์›
46
+ if old_token:
47
+ os.environ["HF_TOKEN"] = old_token
48
+ elif "HF_TOKEN" in os.environ:
49
+ del os.environ["HF_TOKEN"]
50
 
51
+ # Gradio ์•ฑ ๊ตฌ์„ฑ
52
+ with gr.Blocks(
53
+ title="HF Space Auto-Deployer",
54
+ theme=gr.themes.Soft(),
55
+ css="""
56
+ .main-container { max-width: 800px; margin: 0 auto; }
57
+ .gr-button-primary { background-color: #2563eb !important; }
58
+ .status-box { padding: 20px; border-radius: 8px; margin-top: 20px; }
59
+ """
60
+ ) as demo:
61
+ gr.Markdown("""
62
+ # ๐Ÿš€ Git Repository โ†’ Hugging Face Space ์ž๋™ ๋ฐฐํฌ
63
+
64
+ ๊ณต๊ฐœ Git ์ €์žฅ์†Œ๋ฅผ Hugging Face Gradio Space๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
65
+
66
+ ## ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
67
+ 1. **Hugging Face ๋กœ๊ทธ์ธ** (์ƒ๋‹จ ์šฐ์ธก ๋ฒ„ํŠผ)
68
+ 2. Repository URL ์ž…๋ ฅ
69
+ 3. Deploy ๋ฒ„ํŠผ ํด๋ฆญ
70
+
71
+ ---
72
+ """)
73
+
74
+ with gr.Column(elem_classes="main-container"):
75
+ # ๋กœ๊ทธ์ธ ์ƒํƒœ ํ‘œ์‹œ
76
+ gr.LoginButton(
77
+ value="Sign in with Hugging Face ๐Ÿค—",
78
+ variant="primary",
79
+ size="lg"
80
+ )
81
+
82
+ gr.Markdown("### ๐Ÿ“ ๋ฐฐํฌ ์„ค์ •")
83
+
84
+ repo_input = gr.Textbox(
85
+ label="Git Repository URL",
86
+ placeholder="https://github.com/username/repository",
87
+ info="๊ณต๊ฐœ ์ €์žฅ์†Œ URL์„ ์ž…๋ ฅํ•˜์„ธ์š”"
88
+ )
89
+
90
+ private_checkbox = gr.Checkbox(
91
+ label="๐Ÿ”’ Private Space๋กœ ์ƒ์„ฑ",
92
+ value=False,
93
+ info="์ฒดํฌํ•˜๋ฉด ๋น„๊ณต๊ฐœ Space๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค"
94
+ )
95
+
96
+ deploy_btn = gr.Button(
97
+ "๐Ÿš€ Deploy to Space",
98
+ variant="primary",
99
+ size="lg"
100
+ )
101
+
102
+ output_status = gr.Markdown(
103
+ elem_classes="status-box",
104
+ visible=False
105
+ )
106
+
107
+ # ์˜ˆ์‹œ ๋ฐ ๋„์›€๋ง
108
+ gr.Markdown("""
109
+ ### ๐Ÿ’ก ์˜ˆ์‹œ
110
+ - `https://github.com/gradio-app/gradio`
111
+ - `https://github.com/huggingface/transformers`
112
+
113
+ ### โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ
114
+ - **ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ•„์š”**: `BAPI_TOKEN` (Brave Search API), `FRIENDLI_TOKEN` (Friendli AI)
115
+ - Space ์ด๋ฆ„์€ repository ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
116
+ - GPU๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Space ์ƒ์„ฑ ํ›„ ์ˆ˜๋™ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
117
+ """)
118
+
119
+ # ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
120
+ deploy_btn.click(
121
+ fn=launch_deploy,
122
+ inputs=[repo_input, private_checkbox],
123
+ outputs=output_status
124
+ ).then(
125
+ fn=lambda: gr.update(visible=True),
126
+ outputs=output_status
127
+ )
128
 
129
  if __name__ == "__main__":
130
+ demo.launch(
131
+ ssr_mode=False, # SSR ๋น„ํ™œ์„ฑํ™”๋กœ ๊ฒฝ๊ณ  ์ œ๊ฑฐ
132
+ show_error=True
133
+ )