summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xadmin/stats/dump.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/admin/stats/dump.py b/admin/stats/dump.py
index 7a54acc..20f7c93 100755
--- a/admin/stats/dump.py
+++ b/admin/stats/dump.py
@@ -136,9 +136,13 @@ def sort_visits(accesses):
return visitors
+def datetime_day(dt):
+ return dt.replace(hour=0, minute=0, second=0)
+
+
def find_days(visits):
return {
- v[0].time.replace(hour=0, minute=0, second=0)
+ datetime_day(v[0].time)
for v in visits
}
@@ -167,10 +171,35 @@ def daily_visitors(visitors, output_path):
print(*values, sep='\t')
+def daily_visits(visitors, output_path):
+ days: Dict[datetime, Counter] = defaultdict(Counter)
+ columns = ('mobile', 'tablet', 'pc', 'bot', 'n/a')
+
+ print('Visits:')
+
+ for v in visitors.values():
+ for visit in v.visits:
+ day = datetime_day(visit[0].time)
+ days[day][v.useragent] += 1
+
+ with open(output_path, 'w') as f:
+ out = csv.writer(f)
+ out.writerow(('day', 'total', *columns))
+ print('day', 'total', *columns, sep='\t')
+
+ for day in sorted(days):
+ counter = days[day]
+ counters = tuple(counter[c] for c in columns)
+ values = (day.strftime('%F'), sum(counters), *counters)
+
+ out.writerow(values)
+ print(*values, sep='\t')
+
+
def daily_stats(visitors, output_dir):
output_dir = Path(output_dir)
daily_visitors(visitors, output_dir.joinpath('dailyvisitors.csv'))
- # daily_visits(visitors, output_dir.joinpath('dailyvisits.csv'))
+ daily_visits(visitors, output_dir.joinpath('dailyvisits.csv'))
# daily_pages_per_visit(visitors, output_dir.joinpath('dailypagespervisit.csv'))
# daily_page_hits(visitors, output_dir.joinpath('dailypagehits.csv'))
# daily_referrers(visitors, output_dir.joinpath('dailyreferrers.csv'))