Navya-Sree commited on
Commit
9040ac1
·
verified ·
1 Parent(s): 78bcc48

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -17
app.py CHANGED
@@ -1,14 +1,24 @@
 
 
 
 
 
 
1
  import streamlit as st
2
  from datetime import datetime, timedelta
3
  import json
4
  import time
5
- import os
6
  from utils import text_to_speech, speech_to_text, generate_ai_response
7
- from streamlit_mic_recorder import mic_recorder # New import
 
 
 
 
8
 
9
  # File paths
10
- DATA_FILE = "data/reminders.json"
11
- VOICE_DIR = "data/voice_notes"
 
12
 
13
  # Initialize session state
14
  def init_session():
@@ -16,14 +26,15 @@ def init_session():
16
  st.session_state.reminders = load_reminders()
17
  if "ai_enabled" not in st.session_state:
18
  st.session_state.ai_enabled = True
19
- os.makedirs(VOICE_DIR, exist_ok=True)
20
 
21
  # Data management
22
  def load_reminders():
23
  try:
24
- with open(DATA_FILE, "r") as f:
25
- return json.load(f)
26
- except (FileNotFoundError, json.JSONDecodeError):
 
 
27
  return []
28
 
29
  def save_reminders():
@@ -58,7 +69,7 @@ def main():
58
  st.divider()
59
 
60
  st.subheader("Add New Reminder ➕")
61
- with st.form("new_reminder"):
62
  title = st.text_input("Title*")
63
  description = st.text_area("Description")
64
  col1, col2 = st.columns(2)
@@ -67,11 +78,15 @@ def main():
67
  priority = st.select_slider("Priority", ["Low", "Medium", "High"])
68
  voice_note = st.checkbox("Add Voice Note")
69
 
70
- # Voice recorder using mic_recorder
71
  audio_bytes = None
72
  if voice_note:
73
  st.write("Record your voice note:")
74
- audio = mic_recorder(start_prompt="⏺️ Start", stop_prompt="⏹️ Stop", key='recorder')
 
 
 
 
75
  if audio and 'bytes' in audio:
76
  audio_bytes = audio['bytes']
77
  if audio_bytes:
@@ -95,13 +110,12 @@ def main():
95
  voice_path = save_voice_note(audio_bytes, new_reminder["id"])
96
  new_reminder["voice_note"] = voice_path
97
 
98
- new_reminder["ai_insights"] = analyze_with_ai(new_reminder)
 
 
99
  st.session_state.reminders.append(new_reminder)
100
  save_reminders()
101
  st.success("Reminder created!")
102
- # Clear recorder state
103
- if 'recorder' in st.session_state:
104
- del st.session_state['recorder']
105
 
106
  # Main interface
107
  st.title("AI-Powered Reminder System 🚀")
@@ -148,8 +162,11 @@ def main():
148
  key=lambda x: (x["due_date"], x["due_time"])
149
  )[:5]
150
 
151
- for r in upcoming:
152
- st.info(f"**{r['title']}** - {r['due_date']} at {r['due_time'][:5]}")
 
 
 
153
 
154
  # Helper functions
155
  def update_completion(reminder_id):
 
1
+ # Fix permissions issue for Hugging Face Spaces
2
+ import os
3
+ os.environ['STREAMLIT_GLOBAL_METRICS'] = '0' # Disable metrics
4
+ os.environ['STREAMLIT_SERVER_ENABLE_STATIC_SERVE'] = '1' # Enable static file serving
5
+ os.environ['STREAMLIT_GLOBAL_DEVELOPMENT_MODE'] = '0' # Disable dev mode
6
+
7
  import streamlit as st
8
  from datetime import datetime, timedelta
9
  import json
10
  import time
 
11
  from utils import text_to_speech, speech_to_text, generate_ai_response
12
+ from streamlit_mic_recorder import mic_recorder
13
+
14
+ # Create data directory if not exists
15
+ DATA_DIR = "data"
16
+ os.makedirs(DATA_DIR, exist_ok=True)
17
 
18
  # File paths
19
+ DATA_FILE = os.path.join(DATA_DIR, "reminders.json")
20
+ VOICE_DIR = os.path.join(DATA_DIR, "voice_notes")
21
+ os.makedirs(VOICE_DIR, exist_ok=True)
22
 
23
  # Initialize session state
24
  def init_session():
 
26
  st.session_state.reminders = load_reminders()
27
  if "ai_enabled" not in st.session_state:
28
  st.session_state.ai_enabled = True
 
29
 
30
  # Data management
31
  def load_reminders():
32
  try:
33
+ if os.path.exists(DATA_FILE):
34
+ with open(DATA_FILE, "r") as f:
35
+ return json.load(f)
36
+ return []
37
+ except json.JSONDecodeError:
38
  return []
39
 
40
  def save_reminders():
 
69
  st.divider()
70
 
71
  st.subheader("Add New Reminder ➕")
72
+ with st.form("new_reminder", clear_on_submit=True):
73
  title = st.text_input("Title*")
74
  description = st.text_area("Description")
75
  col1, col2 = st.columns(2)
 
78
  priority = st.select_slider("Priority", ["Low", "Medium", "High"])
79
  voice_note = st.checkbox("Add Voice Note")
80
 
81
+ # Voice recorder
82
  audio_bytes = None
83
  if voice_note:
84
  st.write("Record your voice note:")
85
+ audio = mic_recorder(
86
+ start_prompt="⏺️ Start Recording",
87
+ stop_prompt="⏹️ Stop Recording",
88
+ key=f"recorder_{int(time.time())}"
89
+ )
90
  if audio and 'bytes' in audio:
91
  audio_bytes = audio['bytes']
92
  if audio_bytes:
 
110
  voice_path = save_voice_note(audio_bytes, new_reminder["id"])
111
  new_reminder["voice_note"] = voice_path
112
 
113
+ if st.session_state.ai_enabled:
114
+ new_reminder["ai_insights"] = analyze_with_ai(new_reminder)
115
+
116
  st.session_state.reminders.append(new_reminder)
117
  save_reminders()
118
  st.success("Reminder created!")
 
 
 
119
 
120
  # Main interface
121
  st.title("AI-Powered Reminder System 🚀")
 
162
  key=lambda x: (x["due_date"], x["due_time"])
163
  )[:5]
164
 
165
+ if not upcoming:
166
+ st.info("No upcoming reminders")
167
+ else:
168
+ for r in upcoming:
169
+ st.info(f"**{r['title']}** - {r['due_date']} at {r['due_time'][:5]}")
170
 
171
  # Helper functions
172
  def update_completion(reminder_id):