commit ed7bdb8a06658313bb6d94686921b6fb5f4b5a89
parent ecae0f066e83b596bc3a590baa1968fa1666ad19
Author: Kévin Le Gouguec <kevin.legouguec@gmail.com>
Date: Sun, 28 Mar 2021 12:43:55 +0200
Dump daily visits
Should refactor common code with daily_visitors.
Diffstat:
1 file changed, 31 insertions(+), 2 deletions(-)
diff --git 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'))