diff --git a/src/data_types/frequency.py b/src/data_types/frequency.py index af0165b..f889a67 100644 --- a/src/data_types/frequency.py +++ b/src/data_types/frequency.py @@ -48,6 +48,8 @@ class Frequency: busiest_weekday = top_key(week) busiest_hour = top_key(day) + quietest_weekday = top_key(week, reverse=True) + quietest_hour = top_key(day, reverse=True) n_weekdays = delta.days // 7 if ( self.dates[0].weekday() <= busiest_weekday @@ -62,11 +64,15 @@ class Frequency: 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(week[busiest_weekday]/n_weekdays, precision=3)} msg, {percent(week[busiest_weekday]/total_msg)})", + f"- **quietest day of week**: {calendar.day_name[quietest_weekday]} (~{precise(week[quietest_weekday]/n_weekdays, precision=3)} msg, {percent(week[quietest_weekday]/total_msg)})" + if week[quietest_weekday] > 0 else "", 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(day[busiest_hour]/n_hours, precision=3)} msg, {percent(day[busiest_hour]/total_msg)})", + f"- **quietest hour of day**: {quietest_hour:0>2}:00 (~{precise(day[quietest_hour]/n_hours, precision=3)} msg, {percent(day[quietest_hour]/total_msg)})" + if day[quietest_hour] > 0 else "", 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", diff --git a/src/utils/utils.py b/src/utils/utils.py index 6627852..48cbb94 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -177,13 +177,13 @@ def no_duplicate(seq: list) -> list: def top_key( - d: Dict[Union[str, int], int], key: Optional[Callable] = None + d: Dict[Union[str, int], int], key: Optional[Callable] = None, reverse: bool = False ) -> Union[str, int]: if len(d) == 0: return None if key is None: key = lambda k: d[k] - return sorted(d, key=key)[-1] + return sorted(d, key=key, reverse=reverse)[-1] def val_sum(d: Dict[Any, int]) -> int: