Athspi commited on
Commit
947034c
·
verified ·
1 Parent(s): 950c270

Update templates/index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +64 -102
templates/index.html CHANGED
@@ -3,23 +3,23 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>AI Video Dubbing</title>
7
  <style>
8
- @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap');
9
 
10
  :root {
11
- --primary-color: #007bff;
12
- --primary-hover: #0056b3;
13
  --background-color: #f8f9fa;
14
  --card-background: #ffffff;
15
- --text-color: #333;
16
- --heading-color: #000;
17
  --border-color: #dee2e6;
18
- --box-shadow: 0 4px 20px rgba(0,0,0,0.05);
19
  }
20
 
21
  body {
22
- font-family: 'Inter', sans-serif;
23
  margin: 0;
24
  background-color: var(--background-color);
25
  display: flex;
@@ -30,11 +30,11 @@
30
  }
31
  .container {
32
  background-color: var(--card-background);
33
- padding: 2.5rem;
34
- border-radius: 16px;
35
- box-shadow: var(--box-shadow);
36
  width: 100%;
37
- max-width: 700px;
38
  transition: all 0.3s ease;
39
  }
40
  h1 {
@@ -46,94 +46,58 @@
46
  p.subtitle {
47
  text-align: center;
48
  color: #6c757d;
49
- margin-bottom: 2rem;
50
  }
51
- form {
52
- display: flex;
53
- flex-direction: column;
54
- gap: 1.5rem;
 
55
  }
56
- .form-group label {
57
- display: block;
58
- margin-bottom: 0.5rem;
59
  font-weight: 600;
60
- color: #495057;
 
 
61
  }
62
  input[type="file"] {
63
- border: 1px solid var(--border-color);
64
- padding: 0.75rem;
65
  border-radius: 8px;
66
- width: calc(100% - 1.5rem);
 
 
67
  }
 
68
  .radio-group label, .checkbox-group label {
69
  display: inline-flex;
70
  align-items: center;
71
  margin-right: 1.5rem;
72
  cursor: pointer;
73
  }
74
- input[type="radio"], input[type="checkbox"] {
75
- margin-right: 0.5rem;
76
- }
77
  .submit-btn {
78
- background: linear-gradient(90deg, #007bff, #0056b3);
79
- color: white;
80
- border: none;
81
- padding: 1rem 1.5rem;
82
- border-radius: 8px;
83
- font-size: 1.1rem;
84
- font-weight: 600;
85
- cursor: pointer;
86
- transition: all 0.3s ease;
87
- text-align: center;
88
- }
89
- .submit-btn:hover {
90
- transform: translateY(-2px);
91
- box-shadow: 0 6px 25px rgba(0,123,255,0.3);
92
- }
93
- .result-section {
94
- margin-top: 2.5rem;
95
- border-top: 1px solid var(--border-color);
96
- padding-top: 2.5rem;
97
- }
98
- h2 {
99
- color: var(--heading-color);
100
- border-bottom: 2px solid var(--primary-color);
101
- padding-bottom: 0.5rem;
102
- display: inline-block;
103
- }
104
- video {
105
- width: 100%;
106
- border-radius: 12px;
107
- margin-top: 1rem;
108
- box-shadow: var(--box-shadow);
109
- }
110
  .script-box {
111
- background-color: #e9ecef;
112
- border: 1px solid var(--border-color);
113
- padding: 1.5rem;
114
- border-radius: 8px;
115
- white-space: pre-wrap;
116
- word-wrap: break-word;
117
- font-family: "SF Mono", "Fira Code", "Courier New", monospace;
118
- line-height: 1.6;
119
- margin-top: 1rem;
120
- max-height: 200px;
121
- overflow-y: auto;
122
  }
123
  .flash-message {
124
- padding: 1rem;
125
- margin-bottom: 1rem;
126
- border-radius: 8px;
127
- background-color: #f8d7da;
128
- color: #721c24;
129
- border: 1px solid #f5c6cb;
130
- }
131
- .loader {
132
- text-align: center;
133
- display: none; /* Hidden by default */
134
- padding: 2rem;
135
  }
136
- .loader p { font-size: 1.2rem; font-weight: 600; color: var(--primary-color); }
 
137
  </style>
138
  </head>
139
  <body>
@@ -150,27 +114,26 @@
150
  {% endwith %}
151
 
152
  <form id="dubbing-form" action="/process" method="POST" enctype="multipart/form-data">
153
- <div class="form-group">
154
- <label for="video">1. Upload Your Video File:</label>
155
  <input type="file" id="video" name="video" accept="video/mp4,video/mov,video/webm" required>
156
- </div>
157
 
158
- <div class="form-group">
159
- <label>2. Select Narrator Voice:</label>
160
  <div class="radio-group">
161
- <label><input type="radio" name="voice_choice" value="Male (Charon)" checked> Male</label>
162
- <label><input type="radio" name="voice_choice" value="Female (Zephyr)"> Female</label>
163
  </div>
164
- </div>
165
-
166
- <div class="form-group checkbox-group">
167
- <label><input type="checkbox" name="cheerful"> Use a more cheerful tone</label>
168
- </div>
169
 
170
  <button type="submit" class="submit-btn">Generate Dubbed Video</button>
171
  </form>
172
 
173
- <div id="loader" class="loader">
174
  <p>Processing your video... This may take a few minutes.</p>
175
  </div>
176
 
@@ -181,11 +144,8 @@
181
  <source src="{{ result_video }}" type="video/mp4">
182
  Your browser does not support the video tag.
183
  </video>
184
-
185
  <h2>Generated Script</h2>
186
- <div class="script-box">
187
- {{ script }}
188
- </div>
189
  </div>
190
  {% endif %}
191
 
@@ -193,9 +153,11 @@
193
 
194
  <script>
195
  document.getElementById('dubbing-form').addEventListener('submit', function() {
196
- // Hide form and show loader on submit
197
- document.getElementById('dubbing-form').style.display = 'none';
198
- document.getElementById('loader').style.display = 'block';
 
 
199
  });
200
  </script>
201
  </body>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AI Video Narrator</title>
7
  <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap');
9
 
10
  :root {
11
+ --primary-color: #0d6efd;
12
+ --primary-hover: #0b5ed7;
13
  --background-color: #f8f9fa;
14
  --card-background: #ffffff;
15
+ --text-color: #495057;
16
+ --heading-color: #212529;
17
  --border-color: #dee2e6;
18
+ --shadow: 0 8px 30px rgba(0,0,0,0.08);
19
  }
20
 
21
  body {
22
+ font-family: 'Poppins', sans-serif;
23
  margin: 0;
24
  background-color: var(--background-color);
25
  display: flex;
 
30
  }
31
  .container {
32
  background-color: var(--card-background);
33
+ padding: 2.5rem 3rem;
34
+ border-radius: 20px;
35
+ box-shadow: var(--shadow);
36
  width: 100%;
37
+ max-width: 650px;
38
  transition: all 0.3s ease;
39
  }
40
  h1 {
 
46
  p.subtitle {
47
  text-align: center;
48
  color: #6c757d;
49
+ margin-bottom: 2.5rem;
50
  }
51
+ form { display: flex; flex-direction: column; gap: 1.5rem; }
52
+ .form-group {
53
+ border: 1px solid var(--border-color);
54
+ padding: 1.25rem;
55
+ border-radius: 12px;
56
  }
57
+ .form-group legend {
 
 
58
  font-weight: 600;
59
+ color: var(--primary-color);
60
+ padding: 0 0.5rem;
61
+ margin-left: 1rem;
62
  }
63
  input[type="file"] {
64
+ border: 2px dashed var(--border-color);
65
+ padding: 2rem;
66
  border-radius: 8px;
67
+ text-align: center;
68
+ cursor: pointer;
69
+ transition: background-color 0.2s;
70
  }
71
+ input[type="file"]:hover { background-color: #f1f3f5; }
72
  .radio-group label, .checkbox-group label {
73
  display: inline-flex;
74
  align-items: center;
75
  margin-right: 1.5rem;
76
  cursor: pointer;
77
  }
78
+ input[type="radio"], input[type="checkbox"] { margin-right: 0.5rem; }
 
 
79
  .submit-btn {
80
+ background-image: linear-gradient(45deg, #0d6efd, #0dcaf0);
81
+ color: white; border: none; padding: 1rem 1.5rem; border-radius: 12px;
82
+ font-size: 1.1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; text-align: center;
83
+ box-shadow: 0 4px 15px rgba(13, 110, 253, 0.3);
84
+ }
85
+ .submit-btn:hover { transform: translateY(-3px); box-shadow: 0 7px 20px rgba(13, 110, 253, 0.4); }
86
+ .result-section { margin-top: 2.5rem; border-top: 1px solid var(--border-color); padding-top: 2.5rem; }
87
+ h2 { color: var(--heading-color); border-bottom: 3px solid var(--primary-color); padding-bottom: 0.5rem; display: inline-block; margin-bottom: 1.5rem; }
88
+ video { width: 100%; border-radius: 12px; box-shadow: var(--shadow); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  .script-box {
90
+ background-color: #212529; color: #f8f9fa; border: 1px solid #343a40; padding: 1.5rem; border-radius: 8px;
91
+ white-space: pre-wrap; word-wrap: break-word; font-family: "SF Mono", "Fira Code", monospace;
92
+ line-height: 1.7; margin-top: 1rem; max-height: 200px; overflow-y: auto;
 
 
 
 
 
 
 
 
93
  }
94
  .flash-message {
95
+ padding: 1rem; margin-bottom: 1.5rem; border-radius: 8px;
96
+ background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb;
97
+ text-align: center; font-weight: 600;
 
 
 
 
 
 
 
 
98
  }
99
+ #loader { text-align: center; display: none; padding: 2rem; }
100
+ #loader p { font-size: 1.2rem; font-weight: 600; color: var(--primary-color); }
101
  </style>
102
  </head>
103
  <body>
 
114
  {% endwith %}
115
 
116
  <form id="dubbing-form" action="/process" method="POST" enctype="multipart/form-data">
117
+ <fieldset class="form-group">
118
+ <legend>1. Upload Video</legend>
119
  <input type="file" id="video" name="video" accept="video/mp4,video/mov,video/webm" required>
120
+ </fieldset>
121
 
122
+ <fieldset class="form-group">
123
+ <legend>2. Configure Voice</legend>
124
  <div class="radio-group">
125
+ <label><input type="radio" name="voice_choice" value="Male (Charon)" checked> Male Voice</label>
126
+ <label><input type="radio" name="voice_choice" value="Female (Zephyr)"> Female Voice</label>
127
  </div>
128
+ <div class="checkbox-group" style="margin-top: 1rem;">
129
+ <label><input type="checkbox" name="cheerful"> Use a more cheerful tone</label>
130
+ </div>
131
+ </fieldset>
 
132
 
133
  <button type="submit" class="submit-btn">Generate Dubbed Video</button>
134
  </form>
135
 
136
+ <div id="loader">
137
  <p>Processing your video... This may take a few minutes.</p>
138
  </div>
139
 
 
144
  <source src="{{ result_video }}" type="video/mp4">
145
  Your browser does not support the video tag.
146
  </video>
 
147
  <h2>Generated Script</h2>
148
+ <div class="script-box">{{ script }}</div>
 
 
149
  </div>
150
  {% endif %}
151
 
 
153
 
154
  <script>
155
  document.getElementById('dubbing-form').addEventListener('submit', function() {
156
+ const videoFile = document.getElementById('video').value;
157
+ if (videoFile) {
158
+ document.getElementById('dubbing-form').style.display = 'none';
159
+ document.getElementById('loader').style.display = 'block';
160
+ }
161
  });
162
  </script>
163
  </body>