Phytgoras commited on
Commit
2e86c36
·
verified ·
1 Parent(s): ee69a75

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -21
app.py CHANGED
@@ -7,7 +7,7 @@ from datetime import datetime
7
  import matplotlib.pyplot as plt
8
  from gtts import gTTS
9
 
10
- # Geçici ses klasörü
11
  TEMP_SESLER_KLASORU = "temp_sesler"
12
  os.makedirs(TEMP_SESLER_KLASORU, exist_ok=True)
13
 
@@ -21,9 +21,9 @@ def ses_uret(kelime):
21
 
22
  # Kelimeleri yükle
23
  kelimeler = pd.read_csv("kelimeler.csv")
24
- kelimeler = kelimeler.sample(frac=1).reset_index(drop=True) # Karıştır
25
 
26
- # Kullanıcı oturumu yönetimi
27
  user_session = {
28
  "isim": "",
29
  "soru_index": 0,
@@ -34,7 +34,7 @@ user_session = {
34
 
35
  SONUC_DOSYASI = "results.json"
36
 
37
- # Soru getirme
38
  def get_soru():
39
  idx = user_session["soru_index"]
40
  if idx >= 15:
@@ -42,27 +42,31 @@ def get_soru():
42
  return "Test tamamlandı.", None, "", "", False
43
  satir = kelimeler.iloc[idx]
44
  ses_yolu = ses_uret(satir["english"])
45
- return f"{idx+1}. Kelime: {satir['english']}", ses_yolu, "", "", True
46
 
47
- # Teste başlat
48
  def baslat(isim):
 
 
 
49
  user_session["isim"] = isim
50
  user_session["soru_index"] = 0
51
  user_session["dogru"] = 0
52
  user_session["yanlis"] = 0
53
  user_session["cevaplar"] = []
54
 
55
- soru, ses, _, _, _ = get_soru()
56
 
57
  return (
58
  soru, # soru_kutusu
59
  gr.update(visible=False),# isim_input
60
  ses, # ses_kutusu
 
61
  gr.update(visible=True), # cevap_input
62
  gr.update(visible=True) # cevap_btn
63
  )
64
 
65
- # Cevap kontrol ve ilerleme
66
  def kontrol_et(turkce_cevap):
67
  idx = user_session["soru_index"]
68
  satir = kelimeler.iloc[idx]
@@ -83,10 +87,10 @@ def kontrol_et(turkce_cevap):
83
  geribildirim = f"❌ Yanlış! Doğru: {satir['turkish']}"
84
 
85
  user_session["soru_index"] += 1
86
- soru, ses, _, _, aktif = get_soru()
87
- return geribildirim, soru, ses, "", aktif
88
 
89
- # Sonuçları JSON'a kaydet
90
  def kaydet_sonuc():
91
  sonuc = {
92
  "isim": user_session["isim"],
@@ -119,8 +123,7 @@ def ogretmen_paneli(sifre):
119
 
120
  df = pd.DataFrame(veriler)
121
 
122
-
123
- # Grafik oluştur
124
  plt.figure(figsize=(6,4))
125
  plt.bar(df["isim"], df["dogru"], label="Doğru", color="green")
126
  plt.bar(df["isim"], df["yanlis"], bottom=df["dogru"], label="Yanlış", color="red")
@@ -135,7 +138,7 @@ def ogretmen_paneli(sifre):
135
 
136
  return "✅ Giriş başarılı", grafik_yolu
137
 
138
- # Gradio Arayüzü
139
  with gr.Blocks() as demo:
140
  gr.Markdown("## 📚 İngilizce Kelime Testi (15 Soru)")
141
 
@@ -143,27 +146,26 @@ with gr.Blocks() as demo:
143
  isim_input = gr.Textbox(label="Adınızı girin")
144
  baslat_btn = gr.Button("Teste Başla")
145
 
146
- soru_kutusu = gr.Textbox(label="Soru", interactive=False, visible=False)
147
  ses_kutusu = gr.Audio(label="Kelimenin Telaffuzu", interactive=False, type="filepath")
 
148
  cevap_input = gr.Textbox(label="Türkçesini Yazınız", visible=False)
149
  cevap_btn = gr.Button("Cevabı Kontrol Et", visible=False)
150
  geribildirim = gr.Textbox(label="Geri Bildirim", interactive=False)
151
 
152
- # Başlat butonuna tıklanınca çalışır
153
  baslat_btn.click(
154
  baslat,
155
  inputs=isim_input,
156
- outputs=[soru_kutusu, isim_input, ses_kutusu, cevap_input, cevap_btn]
157
  )
158
 
159
- # Cevabı kontrol eder
160
  cevap_btn.click(
161
  kontrol_et,
162
  inputs=cevap_input,
163
- outputs=[geribildirim, soru_kutusu, ses_kutusu, cevap_input, cevap_btn]
164
  )
165
 
166
- # Öğretmen Paneli
167
  with gr.Accordion("👩‍🏫 Öğretmen Girişi", open=False):
168
  sifre = gr.Textbox(label="Şifre", type="password")
169
  sifre_btn = gr.Button("Giriş Yap")
@@ -176,4 +178,4 @@ with gr.Blocks() as demo:
176
  outputs=[sonuc_mesaj, grafik]
177
  )
178
 
179
- demo.launch()
 
7
  import matplotlib.pyplot as plt
8
  from gtts import gTTS
9
 
10
+ # Ses üretim klasörü
11
  TEMP_SESLER_KLASORU = "temp_sesler"
12
  os.makedirs(TEMP_SESLER_KLASORU, exist_ok=True)
13
 
 
21
 
22
  # Kelimeleri yükle
23
  kelimeler = pd.read_csv("kelimeler.csv")
24
+ kelimeler = kelimeler.sample(frac=1).reset_index(drop=True)
25
 
26
+ # Kullanıcı oturum verileri
27
  user_session = {
28
  "isim": "",
29
  "soru_index": 0,
 
34
 
35
  SONUC_DOSYASI = "results.json"
36
 
37
+ # Soru getirme fonksiyonu
38
  def get_soru():
39
  idx = user_session["soru_index"]
40
  if idx >= 15:
 
42
  return "Test tamamlandı.", None, "", "", False
43
  satir = kelimeler.iloc[idx]
44
  ses_yolu = ses_uret(satir["english"])
45
+ return f"{idx+1}. Soru", ses_yolu, f"🔤 İngilizce: **{satir['english']}**", "", True
46
 
47
+ # Test başlat
48
  def baslat(isim):
49
+ if not isim.strip():
50
+ raise gr.Error("⚠️ Lütfen isminizi giriniz.")
51
+
52
  user_session["isim"] = isim
53
  user_session["soru_index"] = 0
54
  user_session["dogru"] = 0
55
  user_session["yanlis"] = 0
56
  user_session["cevaplar"] = []
57
 
58
+ soru, ses, yazilis, _, _ = get_soru()
59
 
60
  return (
61
  soru, # soru_kutusu
62
  gr.update(visible=False),# isim_input
63
  ses, # ses_kutusu
64
+ yazilis, # kelime_gorunum
65
  gr.update(visible=True), # cevap_input
66
  gr.update(visible=True) # cevap_btn
67
  )
68
 
69
+ # Cevap kontrolü
70
  def kontrol_et(turkce_cevap):
71
  idx = user_session["soru_index"]
72
  satir = kelimeler.iloc[idx]
 
87
  geribildirim = f"❌ Yanlış! Doğru: {satir['turkish']}"
88
 
89
  user_session["soru_index"] += 1
90
+ soru, ses, yazilis, _, aktif = get_soru()
91
+ return geribildirim, soru, ses, yazilis, "", aktif
92
 
93
+ # Sonuç kaydet
94
  def kaydet_sonuc():
95
  sonuc = {
96
  "isim": user_session["isim"],
 
123
 
124
  df = pd.DataFrame(veriler)
125
 
126
+ # Grafik oluştur
 
127
  plt.figure(figsize=(6,4))
128
  plt.bar(df["isim"], df["dogru"], label="Doğru", color="green")
129
  plt.bar(df["isim"], df["yanlis"], bottom=df["dogru"], label="Yanlış", color="red")
 
138
 
139
  return "✅ Giriş başarılı", grafik_yolu
140
 
141
+ # Gradio arayüzü
142
  with gr.Blocks() as demo:
143
  gr.Markdown("## 📚 İngilizce Kelime Testi (15 Soru)")
144
 
 
146
  isim_input = gr.Textbox(label="Adınızı girin")
147
  baslat_btn = gr.Button("Teste Başla")
148
 
149
+ soru_kutusu = gr.Textbox(label="Soru", interactive=False, visible=True)
150
  ses_kutusu = gr.Audio(label="Kelimenin Telaffuzu", interactive=False, type="filepath")
151
+ kelime_gorunum = gr.Markdown(visible=True)
152
  cevap_input = gr.Textbox(label="Türkçesini Yazınız", visible=False)
153
  cevap_btn = gr.Button("Cevabı Kontrol Et", visible=False)
154
  geribildirim = gr.Textbox(label="Geri Bildirim", interactive=False)
155
 
156
+ # Bağlantılar
157
  baslat_btn.click(
158
  baslat,
159
  inputs=isim_input,
160
+ outputs=[soru_kutusu, isim_input, ses_kutusu, kelime_gorunum, cevap_input, cevap_btn]
161
  )
162
 
 
163
  cevap_btn.click(
164
  kontrol_et,
165
  inputs=cevap_input,
166
+ outputs=[geribildirim, soru_kutusu, ses_kutusu, kelime_gorunum, cevap_input, cevap_btn]
167
  )
168
 
 
169
  with gr.Accordion("👩‍🏫 Öğretmen Girişi", open=False):
170
  sifre = gr.Textbox(label="Şifre", type="password")
171
  sifre_btn = gr.Button("Giriş Yap")
 
178
  outputs=[sonuc_mesaj, grafik]
179
  )
180
 
181
+ demo.launch()