improv: changed the way frequency was stored
This commit is contained in:
@@ -19,8 +19,7 @@ class Frequency:
|
||||
self.dates = []
|
||||
self.longest_break = timedelta(seconds=0)
|
||||
self.longest_break_start = None
|
||||
self.week = {i: 0 for i in range(7)}
|
||||
self.day = {i: 0 for i in range(24)}
|
||||
self.hours = {i: {j: 0 for j in range(24)} for i in range(7)}
|
||||
self.busiest_day = None
|
||||
self.busiest_day_count = 0
|
||||
self.busiest_hour = None
|
||||
@@ -43,8 +42,12 @@ class Frequency:
|
||||
if delta.days == 0:
|
||||
delta = timedelta(days=1)
|
||||
total_msg = len(self.dates)
|
||||
busiest_weekday = top_key(self.week)
|
||||
busiest_hour = top_key(self.day)
|
||||
|
||||
week = {i: sum(self.hours[i].values()) for i in range(7)}
|
||||
day = {j: sum(self.hours[i][j] for i in range(7)) for j in range(24)}
|
||||
|
||||
busiest_weekday = top_key(week)
|
||||
busiest_hour = top_key(day)
|
||||
n_weekdays = delta.days // 7
|
||||
if (
|
||||
self.dates[0].weekday() <= busiest_weekday
|
||||
@@ -58,12 +61,12 @@ class Frequency:
|
||||
f"- **earliest message**: {str_datetime(self.dates[0])} ({from_now(self.dates[0])})",
|
||||
f"- **latest message**: {str_datetime(self.dates[-1])} ({from_now(self.dates[-1])})",
|
||||
f"- **messages/day**: {precise(total_msg/delta.days, precision=3)}",
|
||||
f"- **busiest day of week**: {calendar.day_name[busiest_weekday]} (~{precise(self.week[busiest_weekday]/n_weekdays, precision=3)} msg, {percent(self.week[busiest_weekday]/total_msg)})",
|
||||
f"- **busiest day of week**: {calendar.day_name[busiest_weekday]} (~{precise(week[busiest_weekday]/n_weekdays, precision=3)} msg, {percent(week[busiest_weekday]/total_msg)})",
|
||||
f"- **busiest day ever**: {str_date(self.busiest_day)} ({from_now(self.busiest_day)}, {self.busiest_day_count} msg)"
|
||||
if self.busiest_day is not None
|
||||
else "",
|
||||
f"- **messages/hour**: {precise(total_msg*3600/delta.total_seconds(), precision=3)}",
|
||||
f"- **busiest hour of day**: {busiest_hour:0>2}:00 (~{precise(self.day[busiest_hour]/n_hours, precision=3)} msg, {percent(self.day[busiest_hour]/total_msg)})",
|
||||
f"- **busiest hour of day**: {busiest_hour:0>2}:00 (~{precise(day[busiest_hour]/n_hours, precision=3)} msg, {percent(day[busiest_hour]/total_msg)})",
|
||||
f"- **busiest hour ever**: {str_datetime(self.busiest_hour)} ({from_now(self.busiest_hour)}, {self.busiest_hour_count} msg)",
|
||||
f"- **longest break**: {plural(round(self.longest_break.total_seconds()/3600), 'hour')} ({plural(self.longest_break.days,'day')}) from {str_datetime(self.longest_break_start)} ({from_now(self.longest_break_start)})",
|
||||
f"- **avg. streak**: {precise(sum(self.streaks)/len(self.streaks), precision=3)} msg",
|
||||
|
||||
@@ -91,8 +91,7 @@ class FrequencyScanner(Scanner):
|
||||
freq.longest_break_start = latest
|
||||
latest = date
|
||||
# calculate busiest weekday / hours
|
||||
freq.week[date.weekday()] += 1
|
||||
freq.day[date.hour] += 1
|
||||
freq.hours[date.weekday()][date.hour] += 1
|
||||
# calculate busiest day ever
|
||||
start_delta = date - freq.dates[0]
|
||||
if start_delta.days > current_day:
|
||||
|
||||
Reference in New Issue
Block a user