kneth02 commited on
Commit
9275177
·
verified ·
1 Parent(s): b08a860

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ import requests
4
+
5
+ # Bahasa-bahasa yang tersedia
6
+ languages = {
7
+ "English": "en",
8
+ "Indonesian": "id",
9
+ "Spanish": "es",
10
+ "French": "fr",
11
+ "German": "de",
12
+ "Italian": "it",
13
+ "Portuguese": "pt",
14
+ "Russian": "ru",
15
+ "Japanese": "ja",
16
+ "Korean": "ko",
17
+ "Chinese (Simplified)": "zh",
18
+ "Arabic": "ar",
19
+ "Turkish": "tr",
20
+ "Hindi": "hi",
21
+ "Thai": "th"
22
+ }
23
+
24
+ # Genre, visual style, mood, etc.
25
+ genres = ["Horror", "Romance", "Fantasy", "Sci-Fi", "Mystery", "Absurd Comedy"]
26
+ styles = ["Realistic", "Semi-Realistic", "Cartoon", "Anime", "Noir", "Pixar-like"]
27
+ moods = ["Funny", "Sad", "Mysterious", "Emotional", "Light-hearted", "Dark"]
28
+ rations = ["9:16 (Vertical)", "16:9 (Landscape)", "1:1 (Square)"]
29
+ audio = ["Rain Sound", "Glitch Effect", "Heartbeat", "Footsteps", "Silence"]
30
+
31
+ # LibreTranslate API
32
+ def translate_text(text, target_lang):
33
+ try:
34
+ response = requests.post(
35
+ "https://libretranslate.de/translate",
36
+ data={
37
+ "q": text,
38
+ "source": "en",
39
+ "target": target_lang,
40
+ "format": "text"
41
+ },
42
+ headers={"Content-Type": "application/x-www-form-urlencoded"}
43
+ )
44
+ if response.status_code == 200:
45
+ return response.json()["translatedText"]
46
+ else:
47
+ return "Translation error: " + response.text
48
+ except Exception as e:
49
+ return "Translation failed."
50
+
51
+ # Prompt generation function
52
+ def generate_prompt(lang_key, genre, style, mood, ratio, setting, character, object, audio_fx, translation):
53
+ language = languages.get(lang_key, "en")
54
+ prompt = f"Scene in {setting} with a {character} interacting with {object}. Genre: {genre}. Visual style: {style}. Mood: {mood}. Format: {ratio}. Background audio: {audio_fx}."
55
+ if translation and language != "en":
56
+ return translate_text(prompt, language)
57
+ return prompt
58
+
59
+ # UI
60
+ with gr.Blocks() as app:
61
+ gr.Markdown("""# 🎬 Gemini Veo 3 Prompt Generator (15 Languages)
62
+ Buat prompt untuk video AI-mu dengan gaya dan bahasa yang kamu inginkan.
63
+ """)
64
+
65
+ lang = gr.Dropdown(list(languages.keys()), label="Bahasa Output")
66
+ genre = gr.Dropdown(genres, label="Genre Cerita")
67
+ style = gr.Dropdown(styles, label="Gaya Visual")
68
+ mood = gr.Dropdown(moods, label="Mood Cerita")
69
+ ratio = gr.Dropdown(rations, label="Rasio Layar")
70
+ setting = gr.Textbox(label="Lokasi/Tempat Adegan")
71
+ character = gr.Textbox(label="Karakter Utama")
72
+ object = gr.Textbox(label="Objek atau Makhluk yang Ditemui")
73
+ audio_fx = gr.Dropdown(audio, label="Efek Audio")
74
+ translate = gr.Checkbox(label="Terjemahkan prompt ke bahasa yang dipilih")
75
+ output = gr.Textbox(label="Prompt Final", lines=5)
76
+
77
+ generate = gr.Button("🔮 Generate Prompt")
78
+ generate.click(fn=generate_prompt,
79
+ inputs=[lang, genre, style, mood, ratio, setting, character, object, audio_fx, translate],
80
+ outputs=output)
81
+
82
+ app.launch()