awacke1 commited on
Commit
c8b1129
β€’
1 Parent(s): c6636bf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -49
app.py CHANGED
@@ -4,8 +4,6 @@ import random
4
  import hashlib
5
  import json
6
  from datetime import datetime
7
- from collections import Counter
8
- import re
9
  import time
10
 
11
  # Your existing quotes list
@@ -112,6 +110,14 @@ quotes = [
112
  {"Number": 100, "Quote Topic": "Love ❀️", "Quote": "Through love, we find connection, unity, and the essence of existence."}
113
  ]
114
 
 
 
 
 
 
 
 
 
115
  # Function to generate a short user hash
116
  def generate_user_hash():
117
  if 'user_hash' not in st.session_state:
@@ -138,19 +144,6 @@ def update_history_md(image_name, user_hash):
138
  with open('history.md', 'a') as f:
139
  f.write(f"- {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - User {user_hash} voted for {image_name}\n")
140
 
141
- # Function to extract words from file name
142
- def extract_words(filename):
143
- words = re.findall(r'\w+', filename.lower())
144
- return [word for word in words if len(word) > 2]
145
-
146
- # Function to update word counts
147
- def update_word_counts(history, image_name):
148
- words = extract_words(image_name)
149
- for word in words:
150
- if word not in history['words']:
151
- history['words'][word] = 0
152
- history['words'][word] += 1
153
-
154
  # Function to display images
155
  def display_images(image_dir):
156
  col1, col2 = st.columns(2)
@@ -189,7 +182,6 @@ def handle_vote(image_name):
189
  vote_history['images'][image_name]['users'][user_hash] += 1
190
  vote_history['users'][user_hash] += 1
191
 
192
- update_word_counts(vote_history, image_name)
193
  save_vote_history(vote_history)
194
  update_history_md(image_name, user_hash)
195
  st.success(f"Upvoted {image_name}! Total votes: {vote_history['images'][image_name]['votes']}")
@@ -220,28 +212,16 @@ def show_vote_history():
220
  # Display top 3 images
221
  if i < 3:
222
  st.sidebar.image(os.path.join('.', image_name), caption=f"#{i+1}: {image_name}", width=150)
223
-
224
- # Display top 3 words
225
- st.sidebar.subheader("Top 3 Words in Voted Images")
226
- top_words = sorted(vote_history['words'].items(), key=lambda x: x[1], reverse=True)[:3]
227
- for word, count in top_words:
228
- st.sidebar.write(f"{word}: {count} occurrences")
229
-
230
- # Function to display a random quote
231
- def display_random_quote():
232
- quote = random.choice(quotes)
233
- st.markdown(f"### {quote['Number']}. {quote['Quote Topic']}")
234
- st.markdown(quote['Quote'])
235
 
236
  # Main function
237
  def main():
238
  st.title("Image Voting App with Quotes")
239
 
240
  # Initialize session state variables
241
- if 'last_interaction' not in st.session_state:
242
- st.session_state.last_interaction = time.time()
243
- if 'auto_repeat' not in st.session_state:
244
  st.session_state.auto_repeat = "On"
 
 
245
 
246
  # Set up the sidebar for vote history and user stats
247
  show_vote_history()
@@ -254,31 +234,26 @@ def main():
254
  st.sidebar.subheader("Your User ID")
255
  st.sidebar.write(generate_user_hash())
256
 
257
- # Add refresh rate slider
258
- refresh_rate = st.sidebar.slider("Refresh rate (seconds)", 0, 120, 30,
259
- help="Set to 0 for no auto-refresh")
260
-
261
  # AutoRepeat radio button
262
- st.session_state.auto_repeat = st.sidebar.radio("πŸ”„ AutoRepeat", ["On", "Off"], horizontal=True)
263
 
264
- # Display random quote
265
  st.subheader("Quote of the Moment")
266
- display_random_quote()
267
 
268
- # Check if it's time to refresh
269
- if refresh_rate > 0 and st.session_state.auto_repeat == "On":
270
- time_since_last_interaction = time.time() - st.session_state.last_interaction
271
- if time_since_last_interaction >= refresh_rate:
272
- st.session_state.last_interaction = time.time()
273
- st.experimental_rerun()
274
- else:
275
- # Display countdown
276
- time_left = int(refresh_rate - time_since_last_interaction)
277
- st.write(f"Time until next refresh: {time_left} seconds")
278
 
279
  # Manual refresh button
280
  if st.button("Refresh Now"):
281
- st.session_state.last_interaction = time.time()
282
  st.rerun()
283
 
284
  # Run the app
 
4
  import hashlib
5
  import json
6
  from datetime import datetime
 
 
7
  import time
8
 
9
  # Your existing quotes list
 
110
  {"Number": 100, "Quote Topic": "Love ❀️", "Quote": "Through love, we find connection, unity, and the essence of existence."}
111
  ]
112
 
113
+ # Function to display a quote
114
+ def display_quote(index):
115
+ number = quotes[index]['Number']
116
+ topic = quotes[index]['Quote Topic']
117
+ quote = quotes[index]['Quote']
118
+ st.markdown(f"### {number}. {topic}")
119
+ st.markdown(quote)
120
+
121
  # Function to generate a short user hash
122
  def generate_user_hash():
123
  if 'user_hash' not in st.session_state:
 
144
  with open('history.md', 'a') as f:
145
  f.write(f"- {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - User {user_hash} voted for {image_name}\n")
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  # Function to display images
148
  def display_images(image_dir):
149
  col1, col2 = st.columns(2)
 
182
  vote_history['images'][image_name]['users'][user_hash] += 1
183
  vote_history['users'][user_hash] += 1
184
 
 
185
  save_vote_history(vote_history)
186
  update_history_md(image_name, user_hash)
187
  st.success(f"Upvoted {image_name}! Total votes: {vote_history['images'][image_name]['votes']}")
 
212
  # Display top 3 images
213
  if i < 3:
214
  st.sidebar.image(os.path.join('.', image_name), caption=f"#{i+1}: {image_name}", width=150)
 
 
 
 
 
 
 
 
 
 
 
 
215
 
216
  # Main function
217
  def main():
218
  st.title("Image Voting App with Quotes")
219
 
220
  # Initialize session state variables
221
+ if "auto_repeat" not in st.session_state:
 
 
222
  st.session_state.auto_repeat = "On"
223
+ if "current_index" not in st.session_state:
224
+ st.session_state.current_index = random.randint(0, len(quotes)-1)
225
 
226
  # Set up the sidebar for vote history and user stats
227
  show_vote_history()
 
234
  st.sidebar.subheader("Your User ID")
235
  st.sidebar.write(generate_user_hash())
236
 
 
 
 
 
237
  # AutoRepeat radio button
238
+ st.session_state.auto_repeat = st.radio("πŸ”„ AutoRepeat", ["On", "Off"], horizontal=True)
239
 
240
+ # Display the current quote
241
  st.subheader("Quote of the Moment")
242
+ display_quote(st.session_state.current_index)
243
 
244
+ # Timer logic
245
+ if st.session_state.auto_repeat == "On":
246
+ timer_placeholder = st.empty()
247
+ for i in range(10, 0, -1):
248
+ timer_placeholder.text(f"Time left: {i} seconds")
249
+ time.sleep(1)
250
+ if i == 1:
251
+ st.session_state.current_index = random.randint(0, len(quotes)-1)
252
+ st.rerun()
 
253
 
254
  # Manual refresh button
255
  if st.button("Refresh Now"):
256
+ st.session_state.current_index = random.randint(0, len(quotes)-1)
257
  st.rerun()
258
 
259
  # Run the app