Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -53,7 +53,7 @@ SESSION_VARS = {
|
|
53 |
'nps_last_shown': None,
|
54 |
'old_val': None,
|
55 |
'voice_text': None,
|
56 |
-
'user_name': None, #
|
57 |
'max_items': 100 # Default max items
|
58 |
}
|
59 |
|
@@ -164,10 +164,11 @@ def list_saved_inputs():
|
|
164 |
files = sorted(glob.glob(os.path.join(SAVED_INPUTS_DIR, "*.md")))
|
165 |
return files
|
166 |
|
167 |
-
def render_result(result):
|
168 |
score = result.get('relevance_score', 0)
|
169 |
result_filtered = {k: v for k, v in result.items()
|
170 |
if k not in ['relevance_score', 'video_embed', 'description_embed', 'audio_embed']}
|
|
|
171 |
if 'youtube_id' in result:
|
172 |
st.video(f"https://youtube.com/watch?v={result['youtube_id']}&t={result.get('start_time', 0)}")
|
173 |
|
@@ -190,13 +191,17 @@ def render_result(result):
|
|
190 |
"Tony (UK Male)": "en-GB-TonyNeural"
|
191 |
}
|
192 |
|
|
|
|
|
|
|
193 |
selected_voice = st.selectbox(
|
194 |
"Voice:",
|
195 |
list(voices.keys()),
|
196 |
-
key=
|
197 |
)
|
198 |
|
199 |
-
|
|
|
200 |
text_to_read = ". ".join(text_content)
|
201 |
audio_file = speak_with_edge_tts(text_to_read, voices[selected_voice])
|
202 |
if audio_file:
|
@@ -223,10 +228,11 @@ class FastDatasetSearcher:
|
|
223 |
|
224 |
try:
|
225 |
searchable_cols = []
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
|
|
230 |
|
231 |
query_lower = query.lower()
|
232 |
query_terms = set(query_lower.split())
|
@@ -357,7 +363,7 @@ def main():
|
|
357 |
if shown >= st.session_state['max_items']:
|
358 |
break
|
359 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
360 |
-
render_result(result[1])
|
361 |
shown += 1
|
362 |
|
363 |
elif run_option == "Deep Search":
|
@@ -379,7 +385,7 @@ def main():
|
|
379 |
if shown >= st.session_state['max_items']:
|
380 |
break
|
381 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
382 |
-
render_result(result[1])
|
383 |
shown += 1
|
384 |
|
385 |
elif run_option == "Voice Summary":
|
@@ -400,7 +406,7 @@ def main():
|
|
400 |
if shown >= st.session_state['max_items']:
|
401 |
break
|
402 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
403 |
-
render_result(result[1])
|
404 |
shown += 1
|
405 |
|
406 |
# Tabs
|
@@ -445,7 +451,7 @@ def main():
|
|
445 |
if shown >= num_results:
|
446 |
break
|
447 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
448 |
-
render_result(result)
|
449 |
shown += 1
|
450 |
else:
|
451 |
st.warning("No matching results found.")
|
@@ -480,7 +486,7 @@ def main():
|
|
480 |
if shown >= st.session_state['max_items']:
|
481 |
break
|
482 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
483 |
-
render_result(result)
|
484 |
shown += 1
|
485 |
|
486 |
with tab3:
|
@@ -493,7 +499,7 @@ def main():
|
|
493 |
for i, result in enumerate(entry['results'], 1):
|
494 |
st.write(f"**Result {i}:**")
|
495 |
if isinstance(result, pd.Series):
|
496 |
-
render_result(result)
|
497 |
else:
|
498 |
st.write(result)
|
499 |
|
@@ -532,6 +538,6 @@ def main():
|
|
532 |
st.write("Recent Searches:")
|
533 |
for entry in reversed(recent_searches):
|
534 |
st.write(f"π {entry['query']}")
|
535 |
-
|
536 |
if __name__ == "__main__":
|
537 |
main()
|
|
|
53 |
'nps_last_shown': None,
|
54 |
'old_val': None,
|
55 |
'voice_text': None,
|
56 |
+
'user_name': None, # Track user name
|
57 |
'max_items': 100 # Default max items
|
58 |
}
|
59 |
|
|
|
164 |
files = sorted(glob.glob(os.path.join(SAVED_INPUTS_DIR, "*.md")))
|
165 |
return files
|
166 |
|
167 |
+
def render_result(result, index=None):
|
168 |
score = result.get('relevance_score', 0)
|
169 |
result_filtered = {k: v for k, v in result.items()
|
170 |
if k not in ['relevance_score', 'video_embed', 'description_embed', 'audio_embed']}
|
171 |
+
|
172 |
if 'youtube_id' in result:
|
173 |
st.video(f"https://youtube.com/watch?v={result['youtube_id']}&t={result.get('start_time', 0)}")
|
174 |
|
|
|
191 |
"Tony (UK Male)": "en-GB-TonyNeural"
|
192 |
}
|
193 |
|
194 |
+
# Ensure unique keys by using the index
|
195 |
+
voice_key = f"voice_{index}" if index is not None else f"voice_{id(result)}"
|
196 |
+
|
197 |
selected_voice = st.selectbox(
|
198 |
"Voice:",
|
199 |
list(voices.keys()),
|
200 |
+
key=voice_key
|
201 |
)
|
202 |
|
203 |
+
read_key = f"read_{voice_key}"
|
204 |
+
if st.button("π Read", key=read_key):
|
205 |
text_to_read = ". ".join(text_content)
|
206 |
audio_file = speak_with_edge_tts(text_to_read, voices[selected_voice])
|
207 |
if audio_file:
|
|
|
228 |
|
229 |
try:
|
230 |
searchable_cols = []
|
231 |
+
if len(df) > 0:
|
232 |
+
for col in df.columns:
|
233 |
+
sample_val = df[col].iloc[0]
|
234 |
+
if not isinstance(sample_val, (np.ndarray, bytes)):
|
235 |
+
searchable_cols.append(col)
|
236 |
|
237 |
query_lower = query.lower()
|
238 |
query_terms = set(query_lower.split())
|
|
|
363 |
if shown >= st.session_state['max_items']:
|
364 |
break
|
365 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
366 |
+
render_result(result[1], index=i)
|
367 |
shown += 1
|
368 |
|
369 |
elif run_option == "Deep Search":
|
|
|
385 |
if shown >= st.session_state['max_items']:
|
386 |
break
|
387 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
388 |
+
render_result(result[1], index=i)
|
389 |
shown += 1
|
390 |
|
391 |
elif run_option == "Voice Summary":
|
|
|
406 |
if shown >= st.session_state['max_items']:
|
407 |
break
|
408 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
409 |
+
render_result(result[1], index=i)
|
410 |
shown += 1
|
411 |
|
412 |
# Tabs
|
|
|
451 |
if shown >= num_results:
|
452 |
break
|
453 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
454 |
+
render_result(result, index=i)
|
455 |
shown += 1
|
456 |
else:
|
457 |
st.warning("No matching results found.")
|
|
|
486 |
if shown >= st.session_state['max_items']:
|
487 |
break
|
488 |
with st.expander(f"Result {i}", expanded=(i==1)):
|
489 |
+
render_result(result, index=i)
|
490 |
shown += 1
|
491 |
|
492 |
with tab3:
|
|
|
499 |
for i, result in enumerate(entry['results'], 1):
|
500 |
st.write(f"**Result {i}:**")
|
501 |
if isinstance(result, pd.Series):
|
502 |
+
render_result(result, index=i)
|
503 |
else:
|
504 |
st.write(result)
|
505 |
|
|
|
538 |
st.write("Recent Searches:")
|
539 |
for entry in reversed(recent_searches):
|
540 |
st.write(f"π {entry['query']}")
|
541 |
+
|
542 |
if __name__ == "__main__":
|
543 |
main()
|