43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
import sqlite3
|
|
from datetime import datetime
|
|
from collections import Counter
|
|
import json
|
|
|
|
|
|
def fetch_logs() -> list[str]:
|
|
conn = sqlite3.connect("activity_log.db")
|
|
cursor = conn.cursor()
|
|
cursor.execute("SELECT timestamp FROM activity_log")
|
|
logs = [row[0] for row in cursor.fetchall()]
|
|
conn.close()
|
|
return logs
|
|
|
|
|
|
def group_logs_by_day(timestamps: list[str]) -> Counter:
|
|
days = [
|
|
datetime.strptime(ts, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")
|
|
for ts in timestamps
|
|
]
|
|
return Counter(days)
|
|
|
|
|
|
def export_to_json(activity_counts: Counter, output_file: str) -> None:
|
|
data = [
|
|
{
|
|
"date": date,
|
|
"count": count,
|
|
}
|
|
for date, count in activity_counts.items()
|
|
]
|
|
with open(output_file, "w") as f:
|
|
json.dump(data, f, indent=4)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logs = fetch_logs()
|
|
if not logs:
|
|
print("No logs found.")
|
|
else:
|
|
activity_counts = group_logs_by_day(logs)
|
|
export_to_json(activity_counts, "activity_data.json")
|