Spaces:
Runtime error
Runtime error
File size: 4,613 Bytes
47ab4d9 1e03b23 47ab4d9 6d19b72 47ab4d9 6d19b72 47ab4d9 5a686c9 47ab4d9 f2f2b35 47ab4d9 5a686c9 df881b8 47ab4d9 df881b8 47ab4d9 5a686c9 d505472 47ab4d9 d505472 47ab4d9 433ca1f 47ab4d9 5a686c9 47ab4d9 284a6d8 433ca1f 284a6d8 433ca1f 284a6d8 a403b1d 433ca1f 5a686c9 a403b1d 5a686c9 284a6d8 37b5458 0936be5 284a6d8 1c97435 e2c5877 73ef68b 37b5458 47ab4d9 37b5458 fbc4ac6 5a686c9 6f5d1ae 51c1540 5a686c9 fbc4ac6 0936be5 0f9b008 04b5cc5 51c1540 0f9b008 04b5cc5 51c1540 0f9b008 51c1540 5a686c9 244d581 284a6d8 37b5458 51c1540 284a6d8 5a686c9 6f5d1ae |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
import gradio as gr
import requests
import time
import os
API_HOME = os.environ['url']
END_GENERATE = '/generate'
END_STATUS = '/generate/status'
API_KEY = os.environ['api']
def set_header():
header = {
"Content-Type": "application/json",
"Authorization": "Bearer " + API_KEY,
}
return header
# λΉλμ€ λλ μ€λμ€ μ»¨ν
μΈ μμ±νλ ν¨μ
def generate_contents(user_content, brand_name, aspect_ratio='landscape'):
url = API_HOME + END_GENERATE
VOICE_ID = '64ea1fbc310bccff6a4191ed' # Korean, Korea, Wolf Sea
# λ©ν° λΌμΈ ν
μ€νΈλ₯Ό λΆλ¦¬νμ¬ κ° μ€μ λ³λμ μ¬μΌλ‘ μ²λ¦¬
scenes = [{"content": line.strip(), "voiceId": VOICE_ID} for line in user_content.split('\n') if line.strip()]
payload = {
"format": "video", # video | audio
"scenes": scenes,
"settings": {
'aspectRatio': aspect_ratio,
'subtitle': {
'fontColor': 'yellow',
'backgroundColor': 'black',
'placement': 'bottom',
'display': 'phrase',
},
},
"backgroundMusicKeywords": "happy, lofi, beats"
}
headers = set_header()
response = requests.request("POST", url, json=payload, headers=headers).json()
if response['success']:
return response['data']['id']
else:
return 'FAILED'
# 컨ν
μΈ μμ± μνλ₯Ό νμΈνλ ν¨μ
def generate_status(content_id):
url = API_HOME + END_STATUS
payload = {"id": content_id}
headers = set_header()
while True:
response = requests.request("POST", url, json=payload, headers=headers).json()
if response['success']:
status = response['data']['status']
if status == 'queued' or status == 'processing':
time.sleep(10) # 10μ΄ λκΈ°
elif status == 'success':
return response['data']['file']
else:
break
return 'FAILED'
# Gradio μΈν°νμ΄μ€ ν¨μ
def gradio_generate_contents(user_content, brand_name, aspect_ratio):
content_id = generate_contents(user_content, brand_name, aspect_ratio)
markdown_text = "λΉλμ€ μ€ν¬λ¦½νΈ μλ μμ± ν΄λ¦: [μ¬κΈ°λ₯Ό ν΄λ¦νμΈμ](https://seawolf2357-hyejascript.hf.space)"
return content_id, markdown_text
def gradio_generate_status(content_id):
download_url = generate_status(content_id)
markdown_text = "μλ μμ±λ μμμ λν μμ λ° νΈμ§ μμ² ν΄λ¦: [μ¬κΈ°λ₯Ό ν΄λ¦νμΈμ](https://forms.gle/u9hPDFbntLEp8xH6A)"
if download_url != 'FAILED':
display_text = download_url[:10] + '...' if len(download_url) > 10 else download_url
html_link = f'<a href="{download_url}" target="_blank">{display_text}</a>'
html_video = f'<iframe src="{download_url}" width="640" height="360" frameborder="0" allowfullscreen></iframe>'
return html_link + '<br>' + html_video, markdown_text
else:
return "컨ν
μΈ μμ± μ€ν¨ λλ IDκ° μλͺ»λμμ΅λλ€.", markdown_text
iface_create = gr.Interface(
fn=gradio_generate_contents,
inputs=[
gr.TextArea(label="컨ν
μΈ ν
μ€νΈ"),
gr.Textbox(label="ν€μλ"),
gr.Dropdown(label="νλ©΄ λΉμ¨", choices=['portrait', 'square', 'landscape'], value='landscape'),
],
outputs=[
gr.Textbox(label="컨ν
μΈ ID"),
gr.Markdown() # λ§ν¬λ€μ΄ μΆλ ₯ μΆκ°
],
examples=[
[
"Nature Republic Super Aqua Max μ§μ± νΌλΆμ© νλ μ μν° ν¬λ¦Ό\nμλ¦λ€μ΄ μ¬μ±μκ² μ§μ νμνκ²μ 무μμΌκΉμ? μ§μ ν μλ¦λ€μμ 건κ°νκ³ λ§μ νΌλΆμ μμ΅λλ€.",
"λ€μ΄μ²λ¦¬νΌλΈλ¦",
"landscape"
],
[
"μΈμμ μμ΄ νλ³΅μ΄ λ¬΄μμΌκΉμ?\nμΌμΈμμ λ°μ΄λκ³ μλ λ©μ§ κ°λ€μ 보면 κΈ°λΆμ΄ μ’μμ§λλ€.\nλ΄κ³μμ μ‘Έκ³ μλ κ³ μμ΄λ€μ΄ μ¬λμ€λ½μ£ ?",
"ν볡",
"landscape"
]
]
)
iface_status = gr.Interface(
fn=gradio_generate_status,
inputs=gr.Textbox(label="컨ν
μΈ ID"),
outputs=[
gr.HTML(label="λ€μ΄λ‘λ λ§ν¬ λ° λΉλμ€"),
gr.Markdown("μλ μμ±λ μμμ λν μμ λ° νΈμ§ μμ² ν΄λ¦: [μ¬κΈ°λ₯Ό ν΄λ¦νμΈμ](https://forms.gle/u9hPDFbntLEp8xH6A)")
]
)
iface_combined = gr.TabbedInterface([iface_create, iface_status], ["컨ν
μΈ μμ±", "μν νμΈ λ° λ€μ΄λ‘λ"])
iface_combined.launch(auth=("arxiv", "gpt"))
|