Spaces:
paola1
/
Sleeping

paola1 commited on
Commit
4e485e3
·
verified ·
1 Parent(s): 167fdeb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -2
app.py CHANGED
@@ -100,7 +100,7 @@ async def create_auto_user_entry(
100
 
101
  @app.get("/analytics/")
102
  async def get_user_analytics(period: str = Query(..., enum=["last_hour", "last_day", "last_7_day"])):
103
- """Endpoint to get user analytics."""
104
  try:
105
  clean_old_data() # Clean data before processing
106
 
@@ -117,18 +117,42 @@ async def get_user_analytics(period: str = Query(..., enum=["last_hour", "last_d
117
  filtered_data = [entry for entry in user_data.values() if entry["timestamp"] >= cutoff]
118
  unique_users = len(set(entry["ip_address"] for entry in filtered_data))
119
  device_counts: Dict[str, int] = {}
 
 
 
120
  for entry in filtered_data:
121
  device_counts[entry["device_type"]] = device_counts.get(entry["device_type"], 0) + 1
 
 
 
 
 
 
 
 
122
 
123
  return {
124
  "total_unique_users": unique_users,
125
- "device_type_info": device_counts,
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
  except HTTPException as he:
128
  raise he
129
  except Exception as e:
130
  raise HTTPException(status_code=500, detail=f"Error generating analytics: {e}")
131
 
 
132
  @app.get("/export/", response_model=Dict[str, UserEntry])
133
  async def export_user_data():
134
  """Endpoint to export all user data in JSON format."""
 
100
 
101
  @app.get("/analytics/")
102
  async def get_user_analytics(period: str = Query(..., enum=["last_hour", "last_day", "last_7_day"])):
103
+ """Endpoint to get advanced user analytics."""
104
  try:
105
  clean_old_data() # Clean data before processing
106
 
 
117
  filtered_data = [entry for entry in user_data.values() if entry["timestamp"] >= cutoff]
118
  unique_users = len(set(entry["ip_address"] for entry in filtered_data))
119
  device_counts: Dict[str, int] = {}
120
+ browser_counts: Dict[str, int] = {}
121
+ os_counts: Dict[str, int] = {}
122
+
123
  for entry in filtered_data:
124
  device_counts[entry["device_type"]] = device_counts.get(entry["device_type"], 0) + 1
125
+ browser_counts[entry["browser"]] = browser_counts.get(entry["browser"], 0) + 1
126
+ os_counts[entry["OS"]] = os_counts.get(entry["OS"], 0) + 1
127
+
128
+ # Calculate percentages
129
+ total_entries = len(filtered_data)
130
+ device_percentages = {device: (count / total_entries) * 100 for device, count in device_counts.items()}
131
+ browser_percentages = {browser: (count / total_entries) * 100 for browser, count in browser_counts.items()}
132
+ os_percentages = {os: (count / total_entries) * 100 for os, count in os_counts.items()}
133
 
134
  return {
135
  "total_unique_users": unique_users,
136
+ "device_type_info": {
137
+ "counts": device_counts,
138
+ "percentages": device_percentages
139
+ },
140
+ "browser_info": {
141
+ "counts": browser_counts,
142
+ "percentages": browser_percentages
143
+ },
144
+ "os_info": {
145
+ "counts": os_counts,
146
+ "percentages": os_percentages
147
+ },
148
+ "total_entries": total_entries
149
  }
150
  except HTTPException as he:
151
  raise he
152
  except Exception as e:
153
  raise HTTPException(status_code=500, detail=f"Error generating analytics: {e}")
154
 
155
+
156
  @app.get("/export/", response_model=Dict[str, UserEntry])
157
  async def export_user_data():
158
  """Endpoint to export all user data in JSON format."""