k96beni commited on
Commit
aa805d0
·
verified ·
1 Parent(s): f0d9cbf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -36
app.py CHANGED
@@ -1,4 +1,4 @@
1
- # slack_reporter/app.py – med förbättrad loggning
2
  import os
3
  import time
4
  import schedule
@@ -8,7 +8,7 @@ import requests
8
  import logging
9
  import re
10
  from datetime import datetime, timedelta
11
- from huggingface_hub import HfApi, hf_hub_download
12
  import gradio as gr
13
 
14
  # --- Loggning ---
@@ -23,6 +23,7 @@ REPO_ID = "ChargeNodeEurope/logfiles"
23
  LOG_FILENAME = "logs/conversation_log.txt"
24
  WEBHOOK_URL = os.environ.get("SLACK_WEBHOOK_URL")
25
  HF_TOKEN = os.environ.get("HF_TOKEN")
 
26
 
27
  # --- Funktion: Skapa grafer ---
28
  def generate_graphs(df):
@@ -62,31 +63,18 @@ def generate_graphs(df):
62
 
63
  return user_graph_path, hourly_graph_path
64
 
65
- # --- Funktion: Ladda upp grafer till Hugging Face Hub ---
66
- def upload_graphs_to_hub(user_graph_path, hourly_graph_path):
67
- api = HfApi()
68
- api.upload_file(
69
- path_or_fileobj=user_graph_path,
70
- path_in_repo="graphs/daily_users.png",
71
- repo_id=REPO_ID,
72
- repo_type="dataset",
73
- token=HF_TOKEN
74
- )
75
- logging.info("Uploader lyckades: daily_users.png")
76
-
77
- api.upload_file(
78
- path_or_fileobj=hourly_graph_path,
79
- path_in_repo="graphs/hourly_msgs.png",
80
- repo_id=REPO_ID,
81
- repo_type="dataset",
82
- token=HF_TOKEN
83
- )
84
- logging.info("Uploader lyckades: hourly_msgs.png")
85
-
86
- return (
87
- f"https://huggingface.co/datasets/{REPO_ID}/resolve/main/graphs/daily_users.png",
88
- f"https://huggingface.co/datasets/{REPO_ID}/resolve/main/graphs/hourly_msgs.png"
89
- )
90
 
91
  # --- Funktion: Skicka Slack-meddelande ---
92
  def send_to_slack(user_url, hourly_url):
@@ -151,7 +139,6 @@ def run_report():
151
  logging.info("Loggfil läst som JSONL.")
152
  except Exception as e:
153
  logging.warning(f"Kunde inte läsa logg som JSONL: {e}")
154
- logging.info("Försöker läsa som textlogg istället...")
155
  df = parse_legacy_log(log_path)
156
 
157
  if df.empty:
@@ -163,10 +150,14 @@ def run_report():
163
  logging.warning("Grafer kunde inte skapas.")
164
  return "⚠️ Inga data att rapportera."
165
 
166
- user_url, hourly_url = upload_graphs_to_hub(user_graph, hourly_graph)
167
- send_to_slack(user_url, hourly_url)
168
- logging.info("Rapport skickad till Slack.")
169
- return "✅ Slack-meddelande skickat med grafer."
 
 
 
 
170
 
171
  except Exception as e:
172
  logging.error(f"Fel vid körning: {e}", exc_info=True)
@@ -183,14 +174,20 @@ def run_schedule():
183
  import threading
184
  threading.Thread(target=run_schedule, daemon=True).start()
185
 
186
- # --- Gradio-knapp för manuell körning ---
187
  with gr.Blocks() as app:
188
  gr.Markdown("# Slack Reporter - ChargeNode")
189
  gr.Markdown("Tryck på knappen för att generera dagens rapport och posta till Slack.")
190
  btn = gr.Button("Skicka nu")
191
  output = gr.Textbox()
192
- btn.click(fn=run_report, outputs=output)
 
193
 
194
- if __name__ == "__main__":
195
- app.launch()
 
196
 
 
 
 
 
 
1
+ # slack_reporter/app.py – med Imgur och lokal visning av grafer
2
  import os
3
  import time
4
  import schedule
 
8
  import logging
9
  import re
10
  from datetime import datetime, timedelta
11
+ from huggingface_hub import hf_hub_download
12
  import gradio as gr
13
 
14
  # --- Loggning ---
 
23
  LOG_FILENAME = "logs/conversation_log.txt"
24
  WEBHOOK_URL = os.environ.get("SLACK_WEBHOOK_URL")
25
  HF_TOKEN = os.environ.get("HF_TOKEN")
26
+ IMGUR_CLIENT_ID = os.environ.get("IMGUR_CLIENT_ID") # Du måste lägga till denna i dina Secrets
27
 
28
  # --- Funktion: Skapa grafer ---
29
  def generate_graphs(df):
 
63
 
64
  return user_graph_path, hourly_graph_path
65
 
66
+ # --- Funktion: Ladda upp bilder till Imgur ---
67
+ def upload_to_imgur(image_path):
68
+ headers = {"Authorization": f"Client-ID {IMGUR_CLIENT_ID}"}
69
+ with open(image_path, 'rb') as img:
70
+ response = requests.post("https://api.imgur.com/3/image", headers=headers, files={"image": img})
71
+ if response.status_code == 200:
72
+ link = response.json()["data"]["link"]
73
+ logging.info(f"Imgur upload success: {link}")
74
+ return link
75
+ else:
76
+ logging.error(f"Imgur upload failed: {response.text}")
77
+ return None
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
  # --- Funktion: Skicka Slack-meddelande ---
80
  def send_to_slack(user_url, hourly_url):
 
139
  logging.info("Loggfil läst som JSONL.")
140
  except Exception as e:
141
  logging.warning(f"Kunde inte läsa logg som JSONL: {e}")
 
142
  df = parse_legacy_log(log_path)
143
 
144
  if df.empty:
 
150
  logging.warning("Grafer kunde inte skapas.")
151
  return "⚠️ Inga data att rapportera."
152
 
153
+ user_url = upload_to_imgur(user_graph)
154
+ hourly_url = upload_to_imgur(hourly_graph)
155
+
156
+ if user_url and hourly_url:
157
+ send_to_slack(user_url, hourly_url)
158
+ return "✅ Slack-meddelande skickat med grafer."
159
+ else:
160
+ return "⚠️ Kunde inte ladda upp grafer till Imgur."
161
 
162
  except Exception as e:
163
  logging.error(f"Fel vid körning: {e}", exc_info=True)
 
174
  import threading
175
  threading.Thread(target=run_schedule, daemon=True).start()
176
 
177
+ # --- Gradio UI ---
178
  with gr.Blocks() as app:
179
  gr.Markdown("# Slack Reporter - ChargeNode")
180
  gr.Markdown("Tryck på knappen för att generera dagens rapport och posta till Slack.")
181
  btn = gr.Button("Skicka nu")
182
  output = gr.Textbox()
183
+ image1 = gr.Image(label="Unika användare (14 dagar)")
184
+ image2 = gr.Image(label="Meddelanden per timme (72h)")
185
 
186
+ def manual_run():
187
+ result = run_report()
188
+ return result, "daily_users.png", "hourly_msgs.png"
189
 
190
+ btn.click(fn=manual_run, outputs=[output, image1, image2])
191
+
192
+ if __name__ == "__main__":
193
+ app.launch()