awacke1 commited on
Commit
98e4bdd
Β·
verified Β·
1 Parent(s): 90747a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -11
app.py CHANGED
@@ -136,7 +136,7 @@ if 'transcript_history' not in st.session_state:
136
  if 'last_transcript' not in st.session_state:
137
  st.session_state.last_transcript = ""
138
  if 'image_hashes' not in st.session_state:
139
- st.session_state.image_hashes = set() # Track unique image hashes
140
 
141
  # Timestamp wizardry - clock ticks with flair! ⏰🎩
142
  def format_timestamp_prefix(username):
@@ -146,13 +146,12 @@ def format_timestamp_prefix(username):
146
  # Compute image hash from binary data
147
  def compute_image_hash(image_data):
148
  if isinstance(image_data, Image.Image):
149
- # Convert PIL Image to bytes
150
  img_byte_arr = io.BytesIO()
151
  image_data.save(img_byte_arr, format='PNG')
152
  img_bytes = img_byte_arr.getvalue()
153
  else:
154
- img_bytes = image_data # Assume raw bytes if not PIL Image
155
- return hashlib.md5(img_bytes).hexdigest()[:8] # Shortened hash for filename
156
 
157
  # Node naming - christening the beast! 🌐🍼
158
  def get_node_name():
@@ -192,7 +191,7 @@ async def save_chat_entry(username, message, is_markdown=False):
192
  else:
193
  entry = f"[{timestamp}] {username}: {message}"
194
  await asyncio.to_thread(lambda: open(CHAT_FILE, 'a').write(f"{entry}\n"))
195
- voice = FUN_USERNAMES.get(username, "en-US-AriaNeural")
196
  cleaned_message = clean_text_for_tts(message)
197
  audio_file = await async_edge_tts_generate(cleaned_message, voice)
198
  if audio_file:
@@ -310,7 +309,7 @@ async def save_pasted_image(image, username):
310
  await asyncio.to_thread(log_action, username, "πŸ“ΈπŸ’Ύ - Image saver - pics preserved!")
311
  img_hash = compute_image_hash(image)
312
  if img_hash in st.session_state.image_hashes:
313
- return None # Suppress duplicate
314
  timestamp = format_timestamp_prefix(username)
315
  filename = f"{timestamp}-{img_hash}.png"
316
  filepath = os.path.join(MEDIA_DIR, filename)
@@ -574,6 +573,8 @@ def main():
574
  chat_content = await load_chat()
575
  available_names = [name for name in FUN_USERNAMES if not any(f"{name} has joined" in line for line in chat_content.split('\n'))]
576
  st.session_state.username = random.choice(available_names) if available_names else random.choice(list(FUN_USERNAMES.keys()))
 
 
577
 
578
  st.title(f"πŸ€–πŸ§ MMO {st.session_state.username}πŸ“πŸ”¬")
579
  st.markdown(f"Welcome to {START_ROOM} - chat, vote, upload, paste images, and enjoy quoting! πŸŽ‰")
@@ -613,7 +614,6 @@ def main():
613
  col1, col2, col3, col4 = st.columns([3, 1, 1, 2])
614
  with col1:
615
  if "```markdown" in line:
616
- # Extract Markdown content
617
  markdown_content = re.search(r'```markdown\n(.*?)```', line, re.DOTALL)
618
  if markdown_content:
619
  st.markdown(markdown_content.group(1))
@@ -669,9 +669,9 @@ def main():
669
  quote_response = st.text_area("Add your response", key="quote_response", value=st.session_state.message_text)
670
  paste_result_quote = paste_image_button("πŸ“‹ Paste Image or Text with Quote", key="paste_button_quote")
671
  if paste_result_quote.image_data is not None:
672
- if isinstance(paste_result_quote.image_data, str): # Text from clipboard
673
  st.session_state.message_text = paste_result_quote.image_data
674
- else: # Image
675
  st.image(paste_result_quote.image_data, caption="Received Image for Quote")
676
  filename = await save_pasted_image(paste_result_quote.image_data, st.session_state.username)
677
  if filename:
@@ -691,14 +691,16 @@ def main():
691
  if new_username and new_username != st.session_state.username:
692
  await save_chat_entry("System 🌟", f"{st.session_state.username} changed name to {new_username}")
693
  st.session_state.username = new_username
 
 
694
  st.rerun()
695
 
696
  message = st.text_input(f"Message as {st.session_state.username}", key="message_input", value=st.session_state.message_text, on_change=lambda: st.session_state.update(message_text=st.session_state.message_input))
697
  paste_result_msg = paste_image_button("πŸ“‹ Paste Image or Text with Message", key="paste_button_msg")
698
  if paste_result_msg.image_data is not None:
699
- if isinstance(paste_result_msg.image_data, str): # Text from clipboard
700
  st.session_state.message_text = paste_result_msg.image_data
701
- else: # Image
702
  st.image(paste_result_msg.image_data, caption="Received Image for Message")
703
  filename = await save_pasted_image(paste_result_msg.image_data, st.session_state.username)
704
  if filename:
 
136
  if 'last_transcript' not in st.session_state:
137
  st.session_state.last_transcript = ""
138
  if 'image_hashes' not in st.session_state:
139
+ st.session_state.image_hashes = set()
140
 
141
  # Timestamp wizardry - clock ticks with flair! ⏰🎩
142
  def format_timestamp_prefix(username):
 
146
  # Compute image hash from binary data
147
  def compute_image_hash(image_data):
148
  if isinstance(image_data, Image.Image):
 
149
  img_byte_arr = io.BytesIO()
150
  image_data.save(img_byte_arr, format='PNG')
151
  img_bytes = img_byte_arr.getvalue()
152
  else:
153
+ img_bytes = image_data
154
+ return hashlib.md5(img_bytes).hexdigest()[:8]
155
 
156
  # Node naming - christening the beast! 🌐🍼
157
  def get_node_name():
 
191
  else:
192
  entry = f"[{timestamp}] {username}: {message}"
193
  await asyncio.to_thread(lambda: open(CHAT_FILE, 'a').write(f"{entry}\n"))
194
+ voice = FUN_USERNAMES.get(username, "en-US-AriaNeural") # Use username-specific voice
195
  cleaned_message = clean_text_for_tts(message)
196
  audio_file = await async_edge_tts_generate(cleaned_message, voice)
197
  if audio_file:
 
309
  await asyncio.to_thread(log_action, username, "πŸ“ΈπŸ’Ύ - Image saver - pics preserved!")
310
  img_hash = compute_image_hash(image)
311
  if img_hash in st.session_state.image_hashes:
312
+ return None
313
  timestamp = format_timestamp_prefix(username)
314
  filename = f"{timestamp}-{img_hash}.png"
315
  filepath = os.path.join(MEDIA_DIR, filename)
 
573
  chat_content = await load_chat()
574
  available_names = [name for name in FUN_USERNAMES if not any(f"{name} has joined" in line for line in chat_content.split('\n'))]
575
  st.session_state.username = random.choice(available_names) if available_names else random.choice(list(FUN_USERNAMES.keys()))
576
+ st.session_state.voice = FUN_USERNAMES[st.session_state.username]
577
+ st.markdown(f"**πŸŽ™οΈ Voice Selected**: {st.session_state.voice} πŸ—£οΈ")
578
 
579
  st.title(f"πŸ€–πŸ§ MMO {st.session_state.username}πŸ“πŸ”¬")
580
  st.markdown(f"Welcome to {START_ROOM} - chat, vote, upload, paste images, and enjoy quoting! πŸŽ‰")
 
614
  col1, col2, col3, col4 = st.columns([3, 1, 1, 2])
615
  with col1:
616
  if "```markdown" in line:
 
617
  markdown_content = re.search(r'```markdown\n(.*?)```', line, re.DOTALL)
618
  if markdown_content:
619
  st.markdown(markdown_content.group(1))
 
669
  quote_response = st.text_area("Add your response", key="quote_response", value=st.session_state.message_text)
670
  paste_result_quote = paste_image_button("πŸ“‹ Paste Image or Text with Quote", key="paste_button_quote")
671
  if paste_result_quote.image_data is not None:
672
+ if isinstance(paste_result_quote.image_data, str):
673
  st.session_state.message_text = paste_result_quote.image_data
674
+ else:
675
  st.image(paste_result_quote.image_data, caption="Received Image for Quote")
676
  filename = await save_pasted_image(paste_result_quote.image_data, st.session_state.username)
677
  if filename:
 
691
  if new_username and new_username != st.session_state.username:
692
  await save_chat_entry("System 🌟", f"{st.session_state.username} changed name to {new_username}")
693
  st.session_state.username = new_username
694
+ st.session_state.voice = FUN_USERNAMES[new_username]
695
+ st.markdown(f"**πŸŽ™οΈ Voice Changed**: {st.session_state.voice} πŸ—£οΈ")
696
  st.rerun()
697
 
698
  message = st.text_input(f"Message as {st.session_state.username}", key="message_input", value=st.session_state.message_text, on_change=lambda: st.session_state.update(message_text=st.session_state.message_input))
699
  paste_result_msg = paste_image_button("πŸ“‹ Paste Image or Text with Message", key="paste_button_msg")
700
  if paste_result_msg.image_data is not None:
701
+ if isinstance(paste_result_msg.image_data, str):
702
  st.session_state.message_text = paste_result_msg.image_data
703
+ else:
704
  st.image(paste_result_msg.image_data, caption="Received Image for Message")
705
  filename = await save_pasted_image(paste_result_msg.image_data, st.session_state.username)
706
  if filename: