

import time
import os
import platform
import sys
from datetime import datetime
_old_settings = None
_buffer = ""
YELLOW = "\033[93m"
GREEN = "\033[92m"
RESET = "\033[0m"
def clear_console():
if platform.system() == "Windows":
os.system("cls")
else:
os.system("clear")
def enable_keyboard_input():
if sys.platform.startswith("win"):
pass
else:
global _old_settings
global _termios_imported
if termios is None:
import termios
if _old_settings is not None:
fd = sys.stdin.fileno()
termios.tcsetattr(fd, termios.TCSADRAIN, _old_settings)
def disable_keyboard_input():
if sys.platform.startswith("win"):
pass
else:
global _old_settings
global _termios_imported
if termios is None:
import termios
fd = sys.stdin.fileno()
_old_settings = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO & ~termios.ICANON
termios.tcsetattr(fd, termios.TCSADRAIN, new)
def input_title(title):
# enable_keyboard_input()
in_value = input(title)
# disable_keyboard_input()
return in_value
def input_uint(title):
while True:
# enable_keyboard_input()
in_value = input(title)
# disable_keyboard_input()
if in_value.isdigit():
return int(in_value)
def print_buffer():
global _buffer
print(_buffer, end="")
def print_in_buffer(printable):
global _buffer
_buffer += printable + "\n"
def main():
title = input_title("Title: ")
work_time_minutes = input_uint("Work interval time in Minutes: ")
break_time_minutes = input_uint("Break interval time in Minutes: ")
work_time_seconds = work_time_minutes * 60
break_time_seconds = break_time_minutes * 60
intervals = input_uint("Intervals Count: ")
duration = intervals * (work_time_minutes + break_time_minutes)
clear_console()
txt_report = ""
json_report = dict()
pdf_report = None
print_in_buffer(F"MPomidoro")
print_in_buffer(F"{title}")
print_in_buffer(F"{intervals} x {work_time_minutes}min {break_time_minutes}min")
print_in_buffer(F"")
begin = datetime.now()
for interval_i in range(0, intervals):
for work_i in range(0, work_time_seconds):
time.sleep(1)
clear_console()
print_buffer()
ml = (work_time_seconds - work_i) // 60
ml = F"0{ml}" if ml < 10 else ml
ms = (work_time_seconds - work_i) % 60
ms = F"0{ms}" if ms < 10 else ms
print(f"{YELLOW}WORK #{interval_i+1} {ml}:{ms}{RESET}")
clear_console()
print_in_buffer(F"{GREEN}WORK #{interval_i+1} {work_time_minutes}min{RESET}")
print_buffer()
for break_i in range(0, break_time_seconds):
time.sleep(1)
clear_console()
print_buffer()
ml = (break_time_seconds - break_i) // 60
ml = F"0{ml}" if ml < 10 else ml
ms = (break_time_seconds - break_i) % 60
ms = F"0{ms}" if ms < 10 else ms
print(f"{YELLOW}BREAK #{interval_i+1} {ml}:{ms}{RESET}")
clear_console()
print_in_buffer(F"{GREEN}BREAK #{interval_i+1} {break_time_minutes}min{RESET}")
print_buffer()
clear_console()
print_in_buffer(F"")
print_buffer()
end = datetime.now()
begin_year = begin.strftime("%Y")
begin_month = begin.strftime("%m")
begin_day = begin.strftime("%d")
begin_hour = begin.strftime("%H")
begin_minute = begin.strftime("%M")
end_year = end.strftime("%Y")
end_month = end.strftime("%m")
end_day = end.strftime("%d")
end_hour = end.strftime("%H")
end_minute = end.strftime("%M")
conclusions = input_title("Conclusions: ")
txt_report += F"MPomidoro Report\n"
txt_report += F"Title: {title}\n"
txt_report += F"Date: {begin.strftime("%Y.%m.%d")}\n"
txt_report += F"Begin: {begin_hour}:{begin_minute}\n"
txt_report += F"End: {end_hour}:{end_minute}\n"
txt_report += F"Duration: {duration}min\n"
txt_report += F"Conclusions: {conclusions}\n"
txt_report += F"\n"
for i in range(0, intervals):
txt_report += F"✓ WORK #{i+1} {work_time_minutes}min\n"
txt_report += F"✓ BREAK #{i+1} {break_time_minutes}min\n"
filepath = F"./Reports/{begin_year}/{begin_month}/{begin_year}_{begin_month}_{begin_day}_{begin_hour}{begin_minute}_{title.replace(" ", "_")}.txt"
os.makedirs(os.path.dirname(filepath), exist_ok=True)
with open(filepath, "w", encoding="utf-8") as file:
file.write(txt_report)
if __name__ == "__main__":
main()








Removed by mod