Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -83,16 +83,17 @@ def display_chat_history():
|
|
83 |
with chat_container.container():
|
84 |
for entry in st.session_state['chat_history']:
|
85 |
role = entry["role"]
|
86 |
-
parts = entry["parts"]
|
|
|
87 |
if 'text' in parts:
|
88 |
-
st.markdown(f"
|
89 |
elif 'data' in parts:
|
90 |
mime_type = parts.get('mime_type', '')
|
91 |
if mime_type.startswith('image'):
|
92 |
st.image(Image.open(io.BytesIO(base64.b64decode(parts['data']))),
|
93 |
-
|
94 |
elif mime_type == 'application/pdf':
|
95 |
-
st.write("
|
96 |
pdf_reader = PyPDF2.PdfReader(io.BytesIO(base64.b64decode(parts['data'])))
|
97 |
for page_num in range(len(pdf_reader.pages)):
|
98 |
page = pdf_reader.pages[page_num]
|
@@ -178,7 +179,7 @@ with col2:
|
|
178 |
uploaded_files = st.file_uploader(
|
179 |
"Upload Files (Images, Videos, PDFs, MP3):",
|
180 |
type=["png", "jpg", "jpeg", "mp4", "pdf", "mp3"],
|
181 |
-
|
182 |
key=st.session_state.file_uploader_key
|
183 |
)
|
184 |
|
@@ -196,7 +197,7 @@ def convert_frames_to_wav(audio_frames):
|
|
196 |
)
|
197 |
wav_io = BytesIO()
|
198 |
audio_segment.export(wav_io, format="wav")
|
199 |
-
wav_io.seek(0)
|
200 |
return wav_io.getvalue()
|
201 |
|
202 |
async def run_webrtc():
|
@@ -207,7 +208,6 @@ async def run_webrtc():
|
|
207 |
audio_receiver_size=256,
|
208 |
media_stream_constraints={"video": False, "audio": True},
|
209 |
)
|
210 |
-
|
211 |
if webrtc_ctx.audio_receiver:
|
212 |
st.session_state.is_recording = True
|
213 |
st.write("Recording audio...")
|
@@ -227,17 +227,17 @@ st.session_state.uploaded_files = uploaded_files
|
|
227 |
# --- JavaScript for Ctrl+Enter ---
|
228 |
st.markdown(
|
229 |
"""
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
unsafe_allow_html=True
|
242 |
)
|
243 |
|
|
|
83 |
with chat_container.container():
|
84 |
for entry in st.session_state['chat_history']:
|
85 |
role = entry["role"]
|
86 |
+
parts = entry["parts"]
|
87 |
+
|
88 |
if 'text' in parts:
|
89 |
+
st.markdown(f"{role.title()}: {parts['text']}")
|
90 |
elif 'data' in parts:
|
91 |
mime_type = parts.get('mime_type', '')
|
92 |
if mime_type.startswith('image'):
|
93 |
st.image(Image.open(io.BytesIO(base64.b64decode(parts['data']))),
|
94 |
+
caption='Uploaded Image', use_column_width=True)
|
95 |
elif mime_type == 'application/pdf':
|
96 |
+
st.write("PDF Content:")
|
97 |
pdf_reader = PyPDF2.PdfReader(io.BytesIO(base64.b64decode(parts['data'])))
|
98 |
for page_num in range(len(pdf_reader.pages)):
|
99 |
page = pdf_reader.pages[page_num]
|
|
|
179 |
uploaded_files = st.file_uploader(
|
180 |
"Upload Files (Images, Videos, PDFs, MP3):",
|
181 |
type=["png", "jpg", "jpeg", "mp4", "pdf", "mp3"],
|
182 |
+
accept_multiple_files=True,
|
183 |
key=st.session_state.file_uploader_key
|
184 |
)
|
185 |
|
|
|
197 |
)
|
198 |
wav_io = BytesIO()
|
199 |
audio_segment.export(wav_io, format="wav")
|
200 |
+
wav_io.seek(0)
|
201 |
return wav_io.getvalue()
|
202 |
|
203 |
async def run_webrtc():
|
|
|
208 |
audio_receiver_size=256,
|
209 |
media_stream_constraints={"video": False, "audio": True},
|
210 |
)
|
|
|
211 |
if webrtc_ctx.audio_receiver:
|
212 |
st.session_state.is_recording = True
|
213 |
st.write("Recording audio...")
|
|
|
227 |
# --- JavaScript for Ctrl+Enter ---
|
228 |
st.markdown(
|
229 |
"""
|
230 |
+
<script>
|
231 |
+
document.addEventListener('DOMContentLoaded', (event) => {
|
232 |
+
document.querySelector('.stTextArea textarea').addEventListener('keydown', function(e) {
|
233 |
+
if (e.key === 'Enter' && e.ctrlKey) {
|
234 |
+
document.querySelector('.stButton > button').click();
|
235 |
+
e.preventDefault();
|
236 |
+
}
|
237 |
+
});
|
238 |
+
});
|
239 |
+
</script>
|
240 |
+
""",
|
241 |
unsafe_allow_html=True
|
242 |
)
|
243 |
|