awacke1 commited on
Commit
18fed18
Β·
verified Β·
1 Parent(s): 6a91d5b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -29
app.py CHANGED
@@ -1,7 +1,10 @@
1
  import streamlit as st
2
  import random
3
  import time
4
-
 
 
 
5
  books = {
6
  "A Dictionary of Similes by Frank J. Wilstach": [
7
  "1. As strong as an ox.",
@@ -142,33 +145,15 @@ books = {
142
  "The American Heritage Thesaurus by Editors of the American Heritage Dictionaries": []
143
  }
144
 
145
- similes_metaphors = [simile for similes in books.values() for simile in similes]
146
-
147
- st.title("Similes and Metaphors Compendium")
148
-
149
- st.sidebar.title("Controls")
150
- if st.sidebar.button("Start Timer"):
151
- start_time = time.time()
152
- timer_active = True
153
- else:
154
- timer_active = False
155
-
156
- if timer_active:
157
- elapsed_time = int(time.time() - start_time)
158
- st.sidebar.write(f"Timer: {elapsed_time} seconds")
159
 
160
- tab1, tab2 = st.tabs(["Random Similes and Metaphors", "Book List"])
161
-
162
- with tab1:
163
- st.write("Randomly selected similes and metaphors:")
164
 
 
165
  display_lines = [""] * 5
166
-
167
  while True:
168
  random_samples = random.sample(similes_metaphors, 5)
169
-
170
  display_lines = [sample.split(". ", 1)[1] for sample in random_samples]
171
-
172
  simile_display = "\n".join([
173
  f"# {line}" if i == 0 else
174
  f"## {line}" if i == 1 else
@@ -178,16 +163,84 @@ with tab1:
178
  for i, line in enumerate(display_lines)
179
  ])
180
  st.markdown(simile_display)
181
-
182
  time.sleep(1)
183
 
184
- with tab2:
185
  for book, samples in books.items():
186
  st.header(book)
187
  if samples:
188
- st.write(f"Sample: {samples[0]}")
189
- st.write("Additional Examples:")
190
- for sample in samples[1:]:
191
- st.write(f"- {sample}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  else:
193
- st.write("No similes or metaphors available for this book.")
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import random
3
  import time
4
+ import streamlit as st
5
+ import random
6
+ import time
7
+ import os
8
  books = {
9
  "A Dictionary of Similes by Frank J. Wilstach": [
10
  "1. As strong as an ox.",
 
145
  "The American Heritage Thesaurus by Editors of the American Heritage Dictionaries": []
146
  }
147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
+ def flatten_similes_metaphors(books):
150
+ return [simile for similes in books.values() for simile in similes]
 
 
151
 
152
+ def display_random_similes_metaphors(similes_metaphors):
153
  display_lines = [""] * 5
 
154
  while True:
155
  random_samples = random.sample(similes_metaphors, 5)
 
156
  display_lines = [sample.split(". ", 1)[1] for sample in random_samples]
 
157
  simile_display = "\n".join([
158
  f"# {line}" if i == 0 else
159
  f"## {line}" if i == 1 else
 
163
  for i, line in enumerate(display_lines)
164
  ])
165
  st.markdown(simile_display)
 
166
  time.sleep(1)
167
 
168
+ def display_book_list(books):
169
  for book, samples in books.items():
170
  st.header(book)
171
  if samples:
172
+ for i, sample in enumerate(samples):
173
+ if f"likes_{book}_{i}" not in st.session_state:
174
+ st.session_state[f"likes_{book}_{i}"] = 0
175
+ col1, col2 = st.columns([9, 1])
176
+ with col1:
177
+ st.write(f"- {sample}")
178
+ with col2:
179
+ if st.button("πŸ‘", key=f"like_{book}_{i}"):
180
+ st.session_state[f"likes_{book}_{i}"] += 1
181
+ st.write(st.session_state[f"likes_{book}_{i}"])
182
+ else:
183
+ st.write("No similes or metaphors available for this book.")
184
+
185
+ def handle_feedback(feedback):
186
+ if not os.path.exists("feedback"):
187
+ os.makedirs("feedback")
188
+ with open("feedback/feedback.md", "a") as f:
189
+ f.write(f"- {feedback}\n")
190
+
191
+ def main():
192
+ books = {
193
+ # ... (books dictionary remains the same)
194
+ }
195
+
196
+ similes_metaphors = flatten_similes_metaphors(books)
197
+
198
+ st.title("Similes and Metaphors Compendium")
199
+
200
+ st.sidebar.title("Controls")
201
+ if st.sidebar.button("Start Timer"):
202
+ st.session_state.start_time = time.time()
203
+ st.session_state.timer_active = True
204
+ else:
205
+ st.session_state.timer_active = False
206
+
207
+ if st.session_state.timer_active:
208
+ elapsed_time = int(time.time() - st.session_state.start_time)
209
+ st.sidebar.write(f"Timer: {elapsed_time} seconds")
210
+
211
+ if "chat_history" not in st.session_state:
212
+ st.session_state.chat_history = []
213
+
214
+ user_input = st.text_input("Enter your message:")
215
+ if user_input:
216
+ st.session_state.chat_history.append(("user", user_input))
217
+ st.session_state.chat_history.append(("assistant", "I appreciate your message!"))
218
+
219
+ for i, (sender, message) in enumerate(st.session_state.chat_history):
220
+ if sender == "user":
221
+ st.chat_message(message, key=f"user_{i}", avatar_style="adventurer")
222
+ if st.button("πŸ‘Ž", key=f"dislike_{i}"):
223
+ feedback = st.text_input("Please provide your feedback:", key=f"feedback_{i}")
224
+ if feedback:
225
+ handle_feedback(feedback)
226
+ st.markdown("Thank you for your feedback!")
227
+ st.download_button(
228
+ "Download Feedback",
229
+ data=feedback,
230
+ file_name="feedback.md",
231
+ mime="text/markdown"
232
+ )
233
  else:
234
+ st.chat_message(message, key=f"assistant_{i}", avatar_style="persona")
235
+
236
+ tab1, tab2 = st.tabs(["Random Similes and Metaphors", "Book List"])
237
+
238
+ with tab1:
239
+ st.write("Randomly selected similes and metaphors:")
240
+ display_random_similes_metaphors(similes_metaphors)
241
+
242
+ with tab2:
243
+ display_book_list(books)
244
+
245
+ if __name__ == "__main__":
246
+ main()