ankban commited on
Commit
da61819
Β·
verified Β·
1 Parent(s): c0b438e

Update written_module.py

Browse files
Files changed (1) hide show
  1. written_module.py +33 -16
written_module.py CHANGED
@@ -1,6 +1,5 @@
1
  import gradio as gr
2
  import uuid
3
- from gtts import gTTS
4
  from app_utils import (
5
  LANG_CODES, client, save_to_db, fetch_user_sessions
6
  )
@@ -58,10 +57,10 @@ Text:
58
  def written_dashboard():
59
  with gr.Column() as written_panel:
60
  gr.Markdown("""
61
- <div id="header" style="text-align: center;">
62
- <img src="file/images/chatter_owl.png" width="120">
63
  <h2>✍️ Written Communication with <strong>Chatter the Owl</strong></h2>
64
- <p>Paste your writing, select language, and I’ll help you sharpen your message.</p>
65
  </div>
66
  """)
67
 
@@ -70,34 +69,52 @@ def written_dashboard():
70
  font_size_slider = gr.Slider(12, 24, value=16, step=1, label="πŸ”  Font Size")
71
  contrast_toggle = gr.Checkbox(label="πŸŒ“ High Contrast Text")
72
 
73
- input_text = gr.Textbox(lines=7, label="πŸ“ Your Writing")
74
- feedback_box = gr.Textbox(label="πŸ’‘ Feedback", interactive=False)
75
- improved_box = gr.Textbox(label="🎯 Improved Version", interactive=False)
76
- audio_output = gr.Audio(label="πŸ”Š Chatter Speaks Feedback", type="filepath")
 
 
77
  history_table = gr.Dataframe(headers=["πŸ•’ Timestamp", "🌐 Language", "✍️ Writing Preview", "πŸ“‹ Feedback Preview"])
78
 
 
 
 
 
 
 
 
 
79
  def tutor_written(text, language, nickname):
80
  if not text.strip():
81
- return "", "", None, []
82
 
83
  feedback = generate_written_feedback(text, language)
84
  improved = improve_written_text(text, language)
85
 
86
- lang_code = LANG_CODES.get(language, "en")
87
- tts = gTTS(feedback, lang=lang_code)
88
- mp3_path = f"/tmp/{uuid.uuid4()}.mp3"
89
- tts.save(mp3_path)
90
-
91
  save_to_db(nickname, text, feedback, language)
92
  sessions = fetch_user_sessions(nickname)
93
  session_table = [[s.timestamp, s.language, s.transcript[:40], s.feedback[:40]] for s in sessions]
94
 
95
- return feedback, improved, mp3_path, session_table
96
 
97
  input_text.change(
98
  fn=tutor_written,
99
  inputs=[input_text, language_dropdown, nickname_box],
100
- outputs=[feedback_box, improved_box, audio_output, history_table]
101
  )
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  return written_panel
 
1
  import gradio as gr
2
  import uuid
 
3
  from app_utils import (
4
  LANG_CODES, client, save_to_db, fetch_user_sessions
5
  )
 
57
  def written_dashboard():
58
  with gr.Column() as written_panel:
59
  gr.Markdown("""
60
+ <div id=\"header\" style=\"text-align: center;\">
61
+ <img src=\"file/images/chatter_owl.png\" width=\"120\">
62
  <h2>✍️ Written Communication with <strong>Chatter the Owl</strong></h2>
63
+ <p>Paste your writing or upload a file, select language, and I’ll help you sharpen your message.</p>
64
  </div>
65
  """)
66
 
 
69
  font_size_slider = gr.Slider(12, 24, value=16, step=1, label="πŸ”  Font Size")
70
  contrast_toggle = gr.Checkbox(label="πŸŒ“ High Contrast Text")
71
 
72
+ with gr.Row():
73
+ input_text = gr.Textbox(lines=7, label="πŸ“ Your Writing", elem_id="input_text")
74
+ file_input = gr.File(label="πŸ“„ Upload Text File", file_types=[".txt", ".md"])
75
+
76
+ feedback_box = gr.Textbox(label="πŸ’‘ Feedback", interactive=False, elem_id="feedback_box")
77
+ improved_box = gr.Textbox(label="🎯 Improved Version", interactive=False, elem_id="improved_box")
78
  history_table = gr.Dataframe(headers=["πŸ•’ Timestamp", "🌐 Language", "✍️ Writing Preview", "πŸ“‹ Feedback Preview"])
79
 
80
+ def extract_text(file):
81
+ if file is None:
82
+ return ""
83
+ with open(file.name, 'r', encoding='utf-8') as f:
84
+ return f.read()
85
+
86
+ file_input.change(fn=extract_text, inputs=file_input, outputs=input_text)
87
+
88
  def tutor_written(text, language, nickname):
89
  if not text.strip():
90
+ return "", "", []
91
 
92
  feedback = generate_written_feedback(text, language)
93
  improved = improve_written_text(text, language)
94
 
 
 
 
 
 
95
  save_to_db(nickname, text, feedback, language)
96
  sessions = fetch_user_sessions(nickname)
97
  session_table = [[s.timestamp, s.language, s.transcript[:40], s.feedback[:40]] for s in sessions]
98
 
99
+ return feedback, improved, session_table
100
 
101
  input_text.change(
102
  fn=tutor_written,
103
  inputs=[input_text, language_dropdown, nickname_box],
104
+ outputs=[feedback_box, improved_box, history_table]
105
  )
106
 
107
+ def update_styles(font_size, high_contrast):
108
+ style = f"font-size: {font_size}px;"
109
+ if high_contrast:
110
+ style += " color: #fff; background-color: #000;"
111
+ return (
112
+ gr.update(elem_id="input_text", style=style),
113
+ gr.update(elem_id="feedback_box", style=style),
114
+ gr.update(elem_id="improved_box", style=style)
115
+ )
116
+
117
+ font_size_slider.change(update_styles, [font_size_slider, contrast_toggle], [input_text, feedback_box, improved_box])
118
+ contrast_toggle.change(update_styles, [font_size_slider, contrast_toggle], [input_text, feedback_box, improved_box])
119
+
120
  return written_panel