floodd commited on
Commit
c730d03
Β·
verified Β·
1 Parent(s): 9d955cc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -11
app.py CHANGED
@@ -12,7 +12,7 @@ import csv
12
  import pandas as pd
13
  import threading
14
  from PIL import Image, ImageEnhance
15
- from pathlib import Path # Ditambahkan untuk manajemen path yang lebih baik
16
 
17
  # --- LIBRARY BARU UNTUK FITUR UPGRADE ---
18
  try:
@@ -199,7 +199,7 @@ class GeminiChat:
199
  try:
200
  selected_key = random.choice(self.api_keys)
201
  genai.configure(api_key=selected_key)
202
- model = genai.GenerativeModel('gemini-1.5-flash')
203
  full_prompt = message
204
  if system_prompt:
205
  full_prompt = f"{system_prompt}\n\nUser query: {message}"
@@ -264,18 +264,31 @@ def submit_report(name, email, message):
264
  print("βœ… Laporan baru telah disimpan ke reports.log")
265
  return gr.update(value="βœ… Terima kasih! Laporan Anda telah kami terima.", visible=True)
266
 
267
- # --- FUNGSI VISITOR MONITOR (DENGAN PERBAIKAN) ---
268
  def update_visitor_monitor(time_filter: str):
269
  try:
270
  with file_lock:
271
- if not os.path.exists(VISITOR_LOG_FILE) or os.path.getsize(VISITOR_LOG_FILE) < 10:
272
  return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
273
- df = pd.read_csv(VISITOR_LOG_FILE)
274
- if df.empty: return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
 
 
 
 
 
 
 
 
 
 
 
 
275
 
276
  df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce')
277
  df.dropna(subset=['Timestamp'], inplace=True)
278
- if df.empty: return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
 
279
 
280
  total_overall_visitors = len(df)
281
  total_visitors_formatted = f"## πŸ“ˆ {total_overall_visitors:,}"
@@ -296,6 +309,7 @@ def update_visitor_monitor(time_filter: str):
296
  print(f"❌ {error_message}")
297
  return f"## ⚠️ Error: {e}", pd.DataFrame({"Error": [error_message]})
298
 
 
299
  # --- FUNGSI-FUNGSI FITUR BARU ---
300
  def enhance_prompt(simple_prompt):
301
  if not simple_prompt:
@@ -562,11 +576,10 @@ with gr.Blocks(theme=gr.themes.Base(), head=HEAD_HTML) as demo:
562
  with gr.Row(variant='panel'): gr.Markdown("""## Cara Menjadi "Art Director" yang Hebat untuk AI...\n (Konten panduan Anda di sini)""")
563
  with gr.TabItem("πŸ“– Blog & Updates", id=9):
564
  with gr.Row(variant='panel'): gr.Markdown("""### Perkembangan Terbaru dari RenXploit's AI Suite
565
- - **v2.5 (Pembaruan Terkini):** Menambahkan **Galeri & Riwayat Generasi** dan **Image Editor** untuk pasca-produksi. Bug pada Visitor Monitor telah diperbaiki.
 
566
  - **v2.4:** Upscaler di-upgrade dengan kontrol kejernihan, Visitor Monitor diperbaiki, dan UI Settings diperjelas.
567
- - **v2.3:** Perbaikan bug kritis untuk kompatibilitas dengan berbagai versi Gradio.
568
- - **v2.2:** Perbaikan bug untuk kompatibilitas Gradio.
569
- - **v2.1:** Menambahkan **Prompt Enhancer**, **AI Image Upscaler**, dan **Live System Monitor**.
570
  - **v2.0:** Perombakan Desain Total.
571
  - **Rencana Berikutnya:** Menjajaki model generator gambar yang berbeda dan fitur Inpainting/Outpainting. Nantikan!""")
572
  with gr.TabItem("ℹ️ About & Support", id=10):
 
12
  import pandas as pd
13
  import threading
14
  from PIL import Image, ImageEnhance
15
+ from pathlib import Path
16
 
17
  # --- LIBRARY BARU UNTUK FITUR UPGRADE ---
18
  try:
 
199
  try:
200
  selected_key = random.choice(self.api_keys)
201
  genai.configure(api_key=selected_key)
202
+ model = genai.GenerativeModel('gemini-2.5-flash')
203
  full_prompt = message
204
  if system_prompt:
205
  full_prompt = f"{system_prompt}\n\nUser query: {message}"
 
264
  print("βœ… Laporan baru telah disimpan ke reports.log")
265
  return gr.update(value="βœ… Terima kasih! Laporan Anda telah kami terima.", visible=True)
266
 
267
+ # --- FUNGSI VISITOR MONITOR (DENGAN PERBAIKAN FINAL) ---
268
  def update_visitor_monitor(time_filter: str):
269
  try:
270
  with file_lock:
271
+ if not os.path.exists(VISITOR_LOG_FILE) or os.path.getsize(VISITOR_LOG_FILE) == 0:
272
  return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
273
+
274
+ # --- PERBAIKAN UTAMA ---
275
+ # Secara eksplisit berikan nama kolom untuk menghindari KeyError
276
+ # jika file tidak memiliki header.
277
+ column_names = ["Timestamp", "IP Address", "User Agent"]
278
+ df = pd.read_csv(VISITOR_LOG_FILE, header=None, names=column_names)
279
+
280
+ # Jika baris header terbaca sebagai data, buang baris tersebut.
281
+ if df.iloc[0]['Timestamp'] == 'Timestamp':
282
+ df = df.iloc[1:].reset_index(drop=True)
283
+
284
+ # Periksa lagi apakah DataFrame kosong setelah membuang header
285
+ if df.empty:
286
+ return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
287
 
288
  df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce')
289
  df.dropna(subset=['Timestamp'], inplace=True)
290
+ if df.empty:
291
+ return "## πŸ“ˆ 0", pd.DataFrame({"Timestamp": [], "Total Pengunjung": []})
292
 
293
  total_overall_visitors = len(df)
294
  total_visitors_formatted = f"## πŸ“ˆ {total_overall_visitors:,}"
 
309
  print(f"❌ {error_message}")
310
  return f"## ⚠️ Error: {e}", pd.DataFrame({"Error": [error_message]})
311
 
312
+
313
  # --- FUNGSI-FUNGSI FITUR BARU ---
314
  def enhance_prompt(simple_prompt):
315
  if not simple_prompt:
 
576
  with gr.Row(variant='panel'): gr.Markdown("""## Cara Menjadi "Art Director" yang Hebat untuk AI...\n (Konten panduan Anda di sini)""")
577
  with gr.TabItem("πŸ“– Blog & Updates", id=9):
578
  with gr.Row(variant='panel'): gr.Markdown("""### Perkembangan Terbaru dari RenXploit's AI Suite
579
+ - **v2.6 (Pembaruan Terkini):** Perbaikan final untuk bug `KeyError: 'Timestamp'` pada Visitor Monitor, membuatnya lebih tahan banting terhadap format file CSV.
580
+ - **v2.5:** Menambahkan **Galeri & Riwayat Generasi** dan **Image Editor** untuk pasca-produksi.
581
  - **v2.4:** Upscaler di-upgrade dengan kontrol kejernihan, Visitor Monitor diperbaiki, dan UI Settings diperjelas.
582
+ - **v2.1 - v2.3:** Perbaikan bug dan penambahan fitur inti seperti Prompt Enhancer, Upscaler, dan System Monitor.
 
 
583
  - **v2.0:** Perombakan Desain Total.
584
  - **Rencana Berikutnya:** Menjajaki model generator gambar yang berbeda dan fitur Inpainting/Outpainting. Nantikan!""")
585
  with gr.TabItem("ℹ️ About & Support", id=10):