awacke1 commited on
Commit
03190a6
Β·
verified Β·
1 Parent(s): f90c364

Update backup8.app.py

Browse files
Files changed (1) hide show
  1. backup8.app.py +82 -8
backup8.app.py CHANGED
@@ -42,6 +42,35 @@ def clean_for_speech(text):
42
  text = emoji_pattern.sub('', text)
43
  return text
44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  async def generate_audio(text, voice, filename):
46
  communicate = edge_tts.Communicate(text, voice)
47
  await communicate.save(filename)
@@ -283,17 +312,62 @@ with st.sidebar:
283
  render_with_bold = st.checkbox("Render with Bold Formatting (remove ** markers)", value=True, key="render_with_bold")
284
  auto_bold_numbers = st.checkbox("Auto Bold Numbered Lines", value=True, key="auto_bold_numbers")
285
  enlarge_numbered = st.checkbox("Enlarge Font Size for Numbered Lines", value=True, key="enlarge_numbered")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  column_options = ["Auto"] + list(range(1, 7))
287
- num_columns = st.selectbox("Number of Columns", options=column_options, index=0)
 
288
  num_columns = 0 if num_columns == "Auto" else int(num_columns)
289
  st.info("Font size and columns adjust to fit one page.")
290
- edited_markdown = st.text_area("Modify the markdown content below:", value=st.session_state.markdown_content, height=300, key=f"markdown_{selected_md}_{selected_font_name}_{num_columns}")
291
- if st.button("Update PDF"):
292
- st.session_state.markdown_content = edited_markdown
293
- if selected_md:
294
- with open(f"{selected_md}.md", "w", encoding="utf-8") as f:
295
- f.write(edited_markdown)
296
- st.rerun()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  prefix = get_timestamp_prefix()
298
  st.download_button(
299
  label="πŸ’ΎπŸ“ Save Markdown",
 
42
  text = emoji_pattern.sub('', text)
43
  return text
44
 
45
+ def trim_emojis_except_numbered(markdown_text):
46
+ emoji_pattern = re.compile(
47
+ r"[\U0001F300-\U0001F5FF"
48
+ r"\U0001F600-\U0001F64F"
49
+ r"\U0001F680-\U0001F6FF"
50
+ r"\U0001F700-\U0001F77F"
51
+ r"\U0001F780-\U0001F7FF"
52
+ r"\U0001F800-\U0001F8FF"
53
+ r"\U0001F900-\U0001F9FF"
54
+ r"\U0001FAD0-\U0001FAD9"
55
+ r"\U0001FA00-\U0001FA6F"
56
+ r"\U0001FA70-\U0001FAFF"
57
+ r"\u2600-\u26FF"
58
+ r"\u2700-\u27BF]+"
59
+ )
60
+ number_pattern = re.compile(r'^\d+\.\s')
61
+ lines = markdown_text.strip().split('\n')
62
+ processed_lines = []
63
+
64
+ for line in lines:
65
+ if number_pattern.match(line):
66
+ # Keep emojis in numbered lines
67
+ processed_lines.append(line)
68
+ else:
69
+ # Remove emojis from other lines
70
+ processed_lines.append(emoji_pattern.sub('', line))
71
+
72
+ return '\n'.join(processed_lines)
73
+
74
  async def generate_audio(text, voice, filename):
75
  communicate = edge_tts.Communicate(text, voice)
76
  await communicate.save(filename)
 
312
  render_with_bold = st.checkbox("Render with Bold Formatting (remove ** markers)", value=True, key="render_with_bold")
313
  auto_bold_numbers = st.checkbox("Auto Bold Numbered Lines", value=True, key="auto_bold_numbers")
314
  enlarge_numbered = st.checkbox("Enlarge Font Size for Numbered Lines", value=True, key="enlarge_numbered")
315
+ # Add AutoColumns option to automatically determine column count based on line length
316
+ auto_columns = st.checkbox("AutoColumns", value=False, key="auto_columns")
317
+
318
+ # Auto-determine column count based on longest line if AutoColumns is checked
319
+ if auto_columns and 'markdown_content' in st.session_state:
320
+ current_markdown = st.session_state.markdown_content
321
+ lines = current_markdown.strip().split('\n')
322
+ longest_line_words = 0
323
+ for line in lines:
324
+ if line.strip(): # Skip empty lines
325
+ word_count = len(line.split())
326
+ longest_line_words = max(longest_line_words, word_count)
327
+
328
+ # Set recommended columns based on word count
329
+ if longest_line_words > 25:
330
+ recommended_columns = 1 # Very long lines need a single column
331
+ elif longest_line_words >= 18:
332
+ recommended_columns = 2 # Long lines need 2 columns
333
+ elif longest_line_words >= 11:
334
+ recommended_columns = 3 # Medium lines can use 3 columns
335
+ else:
336
+ recommended_columns = "Auto" # Default to auto for shorter lines
337
+
338
+ st.info(f"Longest line has {longest_line_words} words. Recommending {recommended_columns} columns.")
339
+ else:
340
+ recommended_columns = "Auto"
341
+
342
  column_options = ["Auto"] + list(range(1, 7))
343
+ num_columns = st.selectbox("Number of Columns", options=column_options,
344
+ index=0 if recommended_columns == "Auto" else column_options.index(recommended_columns))
345
  num_columns = 0 if num_columns == "Auto" else int(num_columns)
346
  st.info("Font size and columns adjust to fit one page.")
347
+
348
+ # Changed label from "Modify the markdown content below:" to "Input Markdown"
349
+ edited_markdown = st.text_area("Input Markdown", value=st.session_state.markdown_content, height=300, key=f"markdown_{selected_md}_{selected_font_name}_{num_columns}")
350
+
351
+ # Added emoji to "Update PDF" button and created a two-column layout for buttons
352
+ col1, col2 = st.columns(2)
353
+ with col1:
354
+ if st.button("πŸ”„πŸ“„ Update PDF"):
355
+ st.session_state.markdown_content = edited_markdown
356
+ if selected_md:
357
+ with open(f"{selected_md}.md", "w", encoding="utf-8") as f:
358
+ f.write(edited_markdown)
359
+ st.rerun()
360
+
361
+ # Added "Trim Emojis" button in second column
362
+ with col2:
363
+ if st.button("βœ‚οΈ Trim Emojis"):
364
+ trimmed_content = trim_emojis_except_numbered(edited_markdown)
365
+ st.session_state.markdown_content = trimmed_content
366
+ if selected_md:
367
+ with open(f"{selected_md}.md", "w", encoding="utf-8") as f:
368
+ f.write(trimmed_content)
369
+ st.rerun()
370
+
371
  prefix = get_timestamp_prefix()
372
  st.download_button(
373
  label="πŸ’ΎπŸ“ Save Markdown",