self._hooks = [pomodoro, sound, video] def __call__(self, goal=None): [x.start(goal) for x in self._hooks] n = int(self._config.get("minutes")) for i in range(n): time.sleep(ONE_MINUTE) [x.tick(i + 1, n) for x in self._hooks] [x.end() for x in self._hooks] if __name__ == '__main__': config = Config.from_env_variables({ "minutes": "POMO_MINUTES", "log_file": "POMO_LOGFILE", "minute_elapsed_sound": "POMO_MINUTE_ELAPSED_SOUND", "timer_start_sound": "POMO_START_SOUND", "timer_end_sound": "POMO_END_SOUND", "player": "POMO_PLAYER" }) timer = Timer(config) if len(sys.argv) > 1: timer(string.join(sys.argv[1:], " ")) else: timer()
print "Attempted: {}".format(len(pomodoros_list)) print "Not quickly aborted (5min): {}".format(len(not_aborted)) print "Pomodoros: {}".format(len(ended)) print "Last 24 hours: {}".format(len(last_24h)) for p in sorted(last_24h, key=lambda x: x["started_at"]): print " - {:%H:%M}: {}".format( datetime.fromtimestamp(p.get("started_at")), p.get("goal", "???")) class EAVTReader(Configurable): def __call__(self): with open(os.environ["HOME"] + "/" + self._config.get("log_file"), "r") as f: data = f.read() data = "[" + data.replace("}{", "},{") + "]" # FIX sort by t self._data = json.loads(data) return self._data if __name__ == '__main__': config = Config.from_env_variables({"log_file": "POMO_LOGFILE"}) data_reader = EAVTReader(config) state_reconstructor = StateReconstructor() analyser = Analyser() analyser(state_reconstructor(data_reader()))