Spaces:
Runtime error
Runtime error
Commit
ยท
433ca1f
1
Parent(s):
73ef68b
Update app.py
Browse files
app.py
CHANGED
@@ -3,13 +3,9 @@ import requests
|
|
3 |
import time
|
4 |
|
5 |
API_HOME = 'https://api.fliki.ai/v1'
|
6 |
-
END_LANGUAGES = '/languages'
|
7 |
-
END_DIALECTS = '/dialects'
|
8 |
-
END_VOICES = '/voices'
|
9 |
END_GENERATE = '/generate'
|
10 |
END_STATUS = '/generate/status'
|
11 |
API_KEY = 'ZZUIQ4OZASNRQ8B8WYHNW'
|
12 |
-
brand = 'ํ์ธ์ ํ ๋
ธํธ๋ถ'
|
13 |
|
14 |
def set_header():
|
15 |
header = {
|
@@ -18,54 +14,8 @@ def set_header():
|
|
18 |
}
|
19 |
return header
|
20 |
|
21 |
-
# ๊ธฐ์กด์ ํจ์๋ค...
|
22 |
-
|
23 |
-
|
24 |
-
def set_header():
|
25 |
-
header = {
|
26 |
-
"Content-Type": "application/json",
|
27 |
-
"Authorization": "Bearer " + API_KEY,
|
28 |
-
}
|
29 |
-
return header
|
30 |
-
|
31 |
-
# ์ธ์ด ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์.
|
32 |
-
def get_language_id():
|
33 |
-
url = API_HOME + END_LANGUAGES
|
34 |
-
headers = set_header()
|
35 |
-
response = requests.request("GET", url, headers=headers).json()
|
36 |
-
print(f"์ธ์ด ๋ฆฌ์คํธ: {response}")
|
37 |
-
# Korean: 61b8b2fa4268666c126babf1
|
38 |
-
return response
|
39 |
-
|
40 |
-
|
41 |
-
# ์ธ์ด์ง์ญ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์.
|
42 |
-
def get_dialects():
|
43 |
-
url = API_HOME + END_DIALECTS
|
44 |
-
headers = set_header()
|
45 |
-
response = requests.request("GET", url, headers=headers).json()
|
46 |
-
print(f"์ธ์ด์ง์ญ ๋ฆฌ์คํธ: {response}")
|
47 |
-
# Korea: 61b8b30f4268666c126bac8d
|
48 |
-
return response
|
49 |
-
|
50 |
-
|
51 |
-
# ์ง์ญ์ธ์ด ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์.
|
52 |
-
def get_voices(language_id, dialect_id):
|
53 |
-
url = API_HOME + END_VOICES
|
54 |
-
headers = set_header()
|
55 |
-
payload = {
|
56 |
-
'languageId': language_id,
|
57 |
-
'dialectId': dialect_id
|
58 |
-
}
|
59 |
-
response = requests.request("POST", url, json=payload, headers=headers).json()
|
60 |
-
print(f"voice: {response}")
|
61 |
-
return response
|
62 |
-
|
63 |
-
|
64 |
# ๋น๋์ค ๋๋ ์ค๋์ค ์ปจํ
์ธ ์์ฑํ๋ ํจ์.
|
65 |
-
|
66 |
def generate_contents(user_content, brand_name):
|
67 |
-
global brand
|
68 |
-
brand = brand_name # ๋ธ๋๋๋ช
์ค์
|
69 |
url = API_HOME + END_GENERATE
|
70 |
VOICE_ID = '65934ac2bc02ab1c006755fa' # Korean, Korea, Wolf Sea
|
71 |
|
@@ -76,27 +26,20 @@ def generate_contents(user_content, brand_name):
|
|
76 |
"format": "video", # video | audio
|
77 |
"scenes": scenes,
|
78 |
"settings": {
|
79 |
-
#
|
80 |
},
|
81 |
"backgroundMusicKeywords": "happy, lofi, beats"
|
82 |
}
|
83 |
|
84 |
-
# ... ๋๋จธ์ง ์ฝ๋ ...
|
85 |
-
|
86 |
headers = set_header()
|
87 |
response = requests.request("POST", url, json=payload, headers=headers).json()
|
88 |
|
89 |
-
|
90 |
-
if response['success'] == True:
|
91 |
-
# ์๋ต๊ฐ ์์: {'success': True, 'data': {'id': '6593aa11d153762d8aa022e9'}}
|
92 |
-
print(f"์ ์: {response['data']['id']}")
|
93 |
return response['data']['id']
|
94 |
else:
|
95 |
-
print(f"request ์คํจ: {response}")
|
96 |
return 'FAILED'
|
97 |
|
98 |
-
|
99 |
-
# /generate API ํธ์ถ ์ฑ๊ณต ํ ๋ฐ์ id๋ก ์ปจํ
์ธ ์์ฑ ์ํ๋ฅผ ํ์ธํ๋ ํจ์.
|
100 |
def generate_status(content_id):
|
101 |
url = API_HOME + END_STATUS
|
102 |
payload = {"id": content_id}
|
@@ -106,29 +49,22 @@ def generate_status(content_id):
|
|
106 |
response = requests.request("POST", url, json=payload, headers=headers).json()
|
107 |
|
108 |
if response['success']:
|
109 |
-
|
110 |
-
|
111 |
time.sleep(10) # 10์ด ๋๊ธฐ
|
112 |
-
elif
|
113 |
-
print('์ปจํ
์ธ ์์ฑ ์๋ฃ!')
|
114 |
return response['data']['file']
|
115 |
else:
|
116 |
-
print(f"request ์คํจ: {response}")
|
117 |
break
|
118 |
return 'FAILED'
|
119 |
|
120 |
-
|
121 |
def gradio_generate_status(content_id):
|
122 |
download_url = generate_status(content_id)
|
123 |
if download_url != 'FAILED':
|
124 |
-
# URL์ ํ
์คํธ๋ฅผ 10๊ธ์๋ก ์ ํํ๊ณ ๋งํฌ ์์ฑ
|
125 |
display_text = download_url[:10] + '...' if len(download_url) > 10 else download_url
|
126 |
html_link = f'<a href="{download_url}" target="_blank">{display_text}</a>'
|
127 |
-
|
128 |
-
# iframe์ ์ฌ์ฉํ์ฌ ๋น๋์ค ์๋ฒ ๋
|
129 |
html_video = f'<iframe src="{download_url}" width="640" height="360" frameborder="0" allowfullscreen></iframe>'
|
130 |
-
|
131 |
-
# ๋งํฌ์ ๋น๋์ค ๋ ๋ค ๋ฐํ
|
132 |
return html_link + '<br>' + html_video
|
133 |
else:
|
134 |
return "์ปจํ
์ธ ์์ฑ ์คํจ ๋๋ ID๊ฐ ์๋ชป๋์์ต๋๋ค."
|
@@ -140,61 +76,3 @@ status_iface = gr.Interface(
|
|
140 |
)
|
141 |
|
142 |
status_iface.launch()
|
143 |
-
|
144 |
-
def download_content(url):
|
145 |
-
data = requests.get(url, timeout=30)
|
146 |
-
save_path = "downloaded_example.mp4"
|
147 |
-
with open(save_path, 'wb') as file:
|
148 |
-
for chunk in data.iter_content(chunk_size=128):
|
149 |
-
file.write(chunk)
|
150 |
-
print(f"MP4 ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค. ๊ฒฝ๋ก: {save_path}")
|
151 |
-
return 'success'
|
152 |
-
|
153 |
-
|
154 |
-
# # ์คํ.
|
155 |
-
|
156 |
-
# get_language_id() # Korean: 61b8b2fa4268666c126babf1
|
157 |
-
# get_dialects() # Korea: 61b8b30f4268666c126bac8d
|
158 |
-
# get_voices('61b8b2fa4268666c126babf1', '61b8b30f4268666c126bac8d')
|
159 |
-
|
160 |
-
try:
|
161 |
-
id = generate_contents()
|
162 |
-
if id != 'FAILED':
|
163 |
-
status = 'PENDING'
|
164 |
-
while status == 'PENDING':
|
165 |
-
time.sleep(9) # 9์ด ๊ธฐ๋ค๋ฆผ
|
166 |
-
print('9์ด ๋๊ธฐ ํ ์ํํ์ธ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.')
|
167 |
-
status = generate_status(id)
|
168 |
-
if status != 'PENDING': break
|
169 |
-
|
170 |
-
print(f"์ปจํ
์ธ ์์ฑ ์ฑ๊ณต: {status}")
|
171 |
-
else:
|
172 |
-
print('์์ฑ ์คํจ..')
|
173 |
-
except Exception as e:
|
174 |
-
print(f"์ค๋ฅ ๋ฐ์: {e}")
|
175 |
-
|
176 |
-
def gradio_generate_contents(user_content, brand_name):
|
177 |
-
return generate_contents(user_content, brand_name)
|
178 |
-
|
179 |
-
def gradio_generate_status(content_id):
|
180 |
-
return generate_status(content_id)
|
181 |
-
|
182 |
-
# ... ์ด์ ์ฝ๋ ...
|
183 |
-
|
184 |
-
# Gradio ์ธํฐํ์ด์ค ์์
|
185 |
-
iface = gr.Interface(
|
186 |
-
fn=gradio_generate_contents, # ์ปจํ
์ธ ์์ฑ ํจ์
|
187 |
-
inputs=[gr.TextArea(label="์ปจํ
์ธ ํ
์คํธ"), gr.Textbox(label="๋ธ๋๋๋ช
")], # ๋ฉํฐ๋ผ์ธ ํ
์คํธ ์
๋ ฅ ๋ฐ ๋ธ๋๋๋ช
์
๋ ฅ
|
188 |
-
outputs=gr.Textbox(label="์ปจํ
์ธ ID")
|
189 |
-
)
|
190 |
-
|
191 |
-
status_iface = gr.Interface(
|
192 |
-
fn=gradio_generate_status, # ์ปจํ
์ธ ์ํ ํ์ธ ํจ์
|
193 |
-
inputs=gr.Textbox(label="์ปจํ
์ธ ID"),
|
194 |
-
outputs=gr.Textbox(label="์ปจํ
์ธ ์ํ ๋๋ URL")
|
195 |
-
)
|
196 |
-
|
197 |
-
# ์ธํฐํ์ด์ค ์คํ
|
198 |
-
iface.launch()
|
199 |
-
status_iface.launch()
|
200 |
-
|
|
|
3 |
import time
|
4 |
|
5 |
API_HOME = 'https://api.fliki.ai/v1'
|
|
|
|
|
|
|
6 |
END_GENERATE = '/generate'
|
7 |
END_STATUS = '/generate/status'
|
8 |
API_KEY = 'ZZUIQ4OZASNRQ8B8WYHNW'
|
|
|
9 |
|
10 |
def set_header():
|
11 |
header = {
|
|
|
14 |
}
|
15 |
return header
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
# ๋น๋์ค ๋๋ ์ค๋์ค ์ปจํ
์ธ ์์ฑํ๋ ํจ์.
|
|
|
18 |
def generate_contents(user_content, brand_name):
|
|
|
|
|
19 |
url = API_HOME + END_GENERATE
|
20 |
VOICE_ID = '65934ac2bc02ab1c006755fa' # Korean, Korea, Wolf Sea
|
21 |
|
|
|
26 |
"format": "video", # video | audio
|
27 |
"scenes": scenes,
|
28 |
"settings": {
|
29 |
+
# ์ค์ ๋ค...
|
30 |
},
|
31 |
"backgroundMusicKeywords": "happy, lofi, beats"
|
32 |
}
|
33 |
|
|
|
|
|
34 |
headers = set_header()
|
35 |
response = requests.request("POST", url, json=payload, headers=headers).json()
|
36 |
|
37 |
+
if response['success']:
|
|
|
|
|
|
|
38 |
return response['data']['id']
|
39 |
else:
|
|
|
40 |
return 'FAILED'
|
41 |
|
42 |
+
# ์ปจํ
์ธ ์์ฑ ์ํ๋ฅผ ํ์ธํ๋ ํจ์.
|
|
|
43 |
def generate_status(content_id):
|
44 |
url = API_HOME + END_STATUS
|
45 |
payload = {"id": content_id}
|
|
|
49 |
response = requests.request("POST", url, json=payload, headers=headers).json()
|
50 |
|
51 |
if response['success']:
|
52 |
+
status = response['data']['status']
|
53 |
+
if status == 'queued' or status == 'processing':
|
54 |
time.sleep(10) # 10์ด ๋๊ธฐ
|
55 |
+
elif status == 'success':
|
|
|
56 |
return response['data']['file']
|
57 |
else:
|
|
|
58 |
break
|
59 |
return 'FAILED'
|
60 |
|
61 |
+
# Gradio ์ธํฐํ์ด์ค ํจ์
|
62 |
def gradio_generate_status(content_id):
|
63 |
download_url = generate_status(content_id)
|
64 |
if download_url != 'FAILED':
|
|
|
65 |
display_text = download_url[:10] + '...' if len(download_url) > 10 else download_url
|
66 |
html_link = f'<a href="{download_url}" target="_blank">{display_text}</a>'
|
|
|
|
|
67 |
html_video = f'<iframe src="{download_url}" width="640" height="360" frameborder="0" allowfullscreen></iframe>'
|
|
|
|
|
68 |
return html_link + '<br>' + html_video
|
69 |
else:
|
70 |
return "์ปจํ
์ธ ์์ฑ ์คํจ ๋๋ ID๊ฐ ์๋ชป๋์์ต๋๋ค."
|
|
|
76 |
)
|
77 |
|
78 |
status_iface.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|