veo3 / app.py
kneth02's picture
Upload app.py
9275177 verified
import gradio as gr
import requests
# Bahasa-bahasa yang tersedia
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"
}
# Genre, visual style, mood, etc.
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"]
# LibreTranslate API
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."
# Prompt generation function
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
# UI
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()