Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -82,8 +82,9 @@ def create_timed_drawtext(word, start_time, duration, font_option, font_size, y_
|
|
| 82 |
f"if(lt(t,{end_time}), ({end_time}-t)/{WORD_FADE_DURATION}, 0))))"
|
| 83 |
)
|
| 84 |
|
| 85 |
-
# --- STYLING BASIEREND AUF AUSWAHL ---
|
| 86 |
|
|
|
|
| 87 |
params = {
|
| 88 |
"fontcolor": "white",
|
| 89 |
"borderw": 2,
|
|
@@ -93,28 +94,36 @@ def create_timed_drawtext(word, start_time, duration, font_option, font_size, y_
|
|
| 93 |
"fontsize_override": font_size
|
| 94 |
}
|
| 95 |
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
| 98 |
params["fontcolor"] = "yellow"
|
| 99 |
params["borderw"] = 3
|
| 100 |
params["fontsize_override"] = font_size * 1.1
|
| 101 |
|
| 102 |
-
elif
|
| 103 |
-
# Starker Kontrast, dickerer Rand
|
| 104 |
params["fontcolor"] = "white"
|
| 105 |
-
params["borderw"] =
|
| 106 |
params["fontsize_override"] = font_size * 1.05
|
| 107 |
|
| 108 |
-
elif
|
| 109 |
-
#
|
| 110 |
params["fontcolor"] = "white"
|
| 111 |
params["borderw"] = 0
|
| 112 |
params["box"] = 1
|
| 113 |
-
#
|
| 114 |
-
params["boxcolor"] = "
|
| 115 |
-
|
| 116 |
-
# Default ist "modern" (params bleiben Standard)
|
| 117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
# Filter-String basierend auf den dynamischen Parametern erstellen
|
| 119 |
drawtext_filter = (
|
| 120 |
f"drawtext=text='{escaped_word}'{font_option}:"
|
|
@@ -122,7 +131,7 @@ def create_timed_drawtext(word, start_time, duration, font_option, font_size, y_
|
|
| 122 |
f"fontsize={params['fontsize_override']}:"
|
| 123 |
f"borderw={params['borderw']}:"
|
| 124 |
f"bordercolor={params['bordercolor']}:"
|
| 125 |
-
# Füge Box-Parameter nur hinzu, wenn box=1 (Badge-Stil)
|
| 126 |
+ (f"box={params['box']}:boxcolor={params['boxcolor']}:boxborderw=10:" if params["box"] else "") +
|
| 127 |
f"x=(w-text_w)/2:y=(h-text_h)*{y_pos}:"
|
| 128 |
f"alpha='{alpha_expression}'"
|
|
@@ -282,11 +291,11 @@ with gr.Blocks() as demo:
|
|
| 282 |
font_size_input = gr.Number(value=80, label="Schriftgröße (px)")
|
| 283 |
ypos_input = gr.Slider(0.0, 1.0, value=0.9, label="Y-Position (0=Oben, 1=Unten)")
|
| 284 |
|
| 285 |
-
# NEUE EINGABE FÜR STILE
|
| 286 |
subtitle_style_input = gr.Dropdown(
|
| 287 |
-
["
|
| 288 |
label="Untertitel-Stil",
|
| 289 |
-
value="
|
| 290 |
interactive=True
|
| 291 |
)
|
| 292 |
|
|
|
|
| 82 |
f"if(lt(t,{end_time}), ({end_time}-t)/{WORD_FADE_DURATION}, 0))))"
|
| 83 |
)
|
| 84 |
|
| 85 |
+
# --- STYLING BASIEREND AUF AUSWAHL (Style-Namen werden in Kleinbuchstaben übergeben) ---
|
| 86 |
|
| 87 |
+
# Default-Werte (Modern-Stil)
|
| 88 |
params = {
|
| 89 |
"fontcolor": "white",
|
| 90 |
"borderw": 2,
|
|
|
|
| 94 |
"fontsize_override": font_size
|
| 95 |
}
|
| 96 |
|
| 97 |
+
style_lower = style.lower().replace(" ", "")
|
| 98 |
+
|
| 99 |
+
if style_lower == "pop":
|
| 100 |
+
# Heller, auffälliger Text (Gelb mit Kontur, etwas größer)
|
| 101 |
params["fontcolor"] = "yellow"
|
| 102 |
params["borderw"] = 3
|
| 103 |
params["fontsize_override"] = font_size * 1.1
|
| 104 |
|
| 105 |
+
elif style_lower == "bold":
|
| 106 |
+
# Starker Kontrast, sehr dickerer Rand
|
| 107 |
params["fontcolor"] = "white"
|
| 108 |
+
params["borderw"] = 5 # Dickerer Rand für "Bold"
|
| 109 |
params["fontsize_override"] = font_size * 1.05
|
| 110 |
|
| 111 |
+
elif style_lower == "badge":
|
| 112 |
+
# Grüner Kasten (Mint) als Hintergrund für das aktive Wort
|
| 113 |
params["fontcolor"] = "white"
|
| 114 |
params["borderw"] = 0
|
| 115 |
params["box"] = 1
|
| 116 |
+
# Mint Green (0x50C878) @1.0 (opak)
|
| 117 |
+
params["boxcolor"] = "0x50C878@1.0"
|
|
|
|
|
|
|
| 118 |
|
| 119 |
+
elif style_lower == "word":
|
| 120 |
+
# Gelber Kasten als Hintergrund für das aktive Wort
|
| 121 |
+
params["fontcolor"] = "white"
|
| 122 |
+
params["borderw"] = 0
|
| 123 |
+
params["box"] = 1
|
| 124 |
+
# Gold/Yellow (0xFFD700) @1.0 (opak)
|
| 125 |
+
params["boxcolor"] = "[email protected]"
|
| 126 |
+
|
| 127 |
# Filter-String basierend auf den dynamischen Parametern erstellen
|
| 128 |
drawtext_filter = (
|
| 129 |
f"drawtext=text='{escaped_word}'{font_option}:"
|
|
|
|
| 131 |
f"fontsize={params['fontsize_override']}:"
|
| 132 |
f"borderw={params['borderw']}:"
|
| 133 |
f"bordercolor={params['bordercolor']}:"
|
| 134 |
+
# Füge Box-Parameter nur hinzu, wenn box=1 (Badge- oder Word-Stil)
|
| 135 |
+ (f"box={params['box']}:boxcolor={params['boxcolor']}:boxborderw=10:" if params["box"] else "") +
|
| 136 |
f"x=(w-text_w)/2:y=(h-text_h)*{y_pos}:"
|
| 137 |
f"alpha='{alpha_expression}'"
|
|
|
|
| 291 |
font_size_input = gr.Number(value=80, label="Schriftgröße (px)")
|
| 292 |
ypos_input = gr.Slider(0.0, 1.0, value=0.9, label="Y-Position (0=Oben, 1=Unten)")
|
| 293 |
|
| 294 |
+
# NEUE EINGABE FÜR STILE: Enthält jetzt "Word" und nutzt korrekte Groß-/Kleinschreibung
|
| 295 |
subtitle_style_input = gr.Dropdown(
|
| 296 |
+
["Modern", "Pop", "Bold", "Badge", "Word"],
|
| 297 |
label="Untertitel-Stil",
|
| 298 |
+
value="Modern",
|
| 299 |
interactive=True
|
| 300 |
)
|
| 301 |
|