From ed7bdb8a06658313bb6d94686921b6fb5f4b5a89 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Sun, 28 Mar 2021 12:43:55 +0200 Subject: Dump daily visits Should refactor common code with daily_visitors. --- admin/stats/dump.py | 33 +++++++++++++++++++++++++++++++-- 1 file 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')) -- cgit v1.2.3