diff options
| -rwxr-xr-x | admin/stats/dump.py | 33 |
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')) |
