|
|
|
import gradio as gr |
|
import requests |
|
|
|
|
|
languages = { |
|
"English": "en", |
|
"Indonesian": "id", |
|
"Spanish": "es", |
|
"French": "fr", |
|
"German": "de", |
|
"Italian": "it", |
|
"Portuguese": "pt", |
|
"Russian": "ru", |
|
"Japanese": "ja", |
|
"Korean": "ko", |
|
"Chinese (Simplified)": "zh", |
|
"Arabic": "ar", |
|
"Turkish": "tr", |
|
"Hindi": "hi", |
|
"Thai": "th" |
|
} |
|
|
|
|
|
genres = ["Horror", "Romance", "Fantasy", "Sci-Fi", "Mystery", "Absurd Comedy"] |
|
styles = ["Realistic", "Semi-Realistic", "Cartoon", "Anime", "Noir", "Pixar-like"] |
|
moods = ["Funny", "Sad", "Mysterious", "Emotional", "Light-hearted", "Dark"] |
|
rations = ["9:16 (Vertical)", "16:9 (Landscape)", "1:1 (Square)"] |
|
audio = ["Rain Sound", "Glitch Effect", "Heartbeat", "Footsteps", "Silence"] |
|
|
|
|
|
def translate_text(text, target_lang): |
|
try: |
|
response = requests.post( |
|
"https://libretranslate.de/translate", |
|
data={ |
|
"q": text, |
|
"source": "en", |
|
"target": target_lang, |
|
"format": "text" |
|
}, |
|
headers={"Content-Type": "application/x-www-form-urlencoded"} |
|
) |
|
if response.status_code == 200: |
|
return response.json()["translatedText"] |
|
else: |
|
return "Translation error: " + response.text |
|
except Exception as e: |
|
return "Translation failed." |
|
|
|
|
|
def generate_prompt(lang_key, genre, style, mood, ratio, setting, character, object, audio_fx, translation): |
|
language = languages.get(lang_key, "en") |
|
prompt = f"Scene in {setting} with a {character} interacting with {object}. Genre: {genre}. Visual style: {style}. Mood: {mood}. Format: {ratio}. Background audio: {audio_fx}." |
|
if translation and language != "en": |
|
return translate_text(prompt, language) |
|
return prompt |
|
|
|
|
|
with gr.Blocks() as app: |
|
gr.Markdown("""# ๐ฌ Gemini Veo 3 Prompt Generator (15 Languages) |
|
Buat prompt untuk video AI-mu dengan gaya dan bahasa yang kamu inginkan. |
|
""") |
|
|
|
lang = gr.Dropdown(list(languages.keys()), label="Bahasa Output") |
|
genre = gr.Dropdown(genres, label="Genre Cerita") |
|
style = gr.Dropdown(styles, label="Gaya Visual") |
|
mood = gr.Dropdown(moods, label="Mood Cerita") |
|
ratio = gr.Dropdown(rations, label="Rasio Layar") |
|
setting = gr.Textbox(label="Lokasi/Tempat Adegan") |
|
character = gr.Textbox(label="Karakter Utama") |
|
object = gr.Textbox(label="Objek atau Makhluk yang Ditemui") |
|
audio_fx = gr.Dropdown(audio, label="Efek Audio") |
|
translate = gr.Checkbox(label="Terjemahkan prompt ke bahasa yang dipilih") |
|
output = gr.Textbox(label="Prompt Final", lines=5) |
|
|
|
generate = gr.Button("๐ฎ Generate Prompt") |
|
generate.click(fn=generate_prompt, |
|
inputs=[lang, genre, style, mood, ratio, setting, character, object, audio_fx, translate], |
|
outputs=output) |
|
|
|
app.launch() |
|
|