diff --git a/main.py b/main.py index 3e10eca..5c50168 100644 --- a/main.py +++ b/main.py @@ -20,69 +20,72 @@ group1.add_argument("--restore", default=0, nargs='?', const=1, help="используйте --restore, чтобы восстановить бэкап") args = parser.parse_args() -program_version = "2.23" +program_version = "2.24" program = MineSquid(program_version) logging = program.logging -while True: - try: - program.setup_logger() - logging.info(f'Версия программы: {program_version}') - program.read_config() - program.checker() - program.build_list() - logging.info(f'Путь к программе: {program.program_directory}') - logging.info(f'Путь к игре: {program.game_directory}') - logging.info(f'Путь к папке с пользовательскими данными: {program.userappdata}') - if (int(args.mpnum) != 0 and int(args.mpnum) > 0) and int(args.mpnum) < len(program.list)+1: - program.load_modpack(modpack_number=(int(args.mpnum) - 1)) - elif str(args.mpname) in program.list: - program.load_modpack(modpack_number=program.list.index(args.mpname)) - else: - if args.restore != 0: - program.restore_backup() +if __name__ == "__main__": + while True: + try: + program.setup_logger() + logging.info(f'Версия программы: {program_version}') + program.read_config() + program.checker() + program.build_list() + logging.info(f'Путь к программе: {program.program_directory}') + logging.info(f'Путь к игре: {program.game_directory}') + logging.info(f'Путь к папке с пользовательскими данными: {program.userappdata}') + if (int(args.mpnum) != 0 and int(args.mpnum) > 0) and int(args.mpnum) < len(program.list)+1: + program.load_modpack(modpack_number=(int(args.mpnum) - 1)) + elif str(args.mpname) in program.list: + program.load_modpack(modpack_number=program.list.index(args.mpname)) else: - program.run() - except KeyError as err: - logging.error("KeyError") - logging.exception(err) - program.repair_config() - except IndexError as err: - logging.error("IndexError") - logging.exception(err) - print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") - program.error() - except PermissionError as err: - logging.error("PermissionError") - logging.exception(err) - msg.showerror(title="Ошибка доступа", message="Не удается получить доступ к какому-то файлу.\n" - "Проверьте, закрыт ли клиент игры!" - "\nИли попробуйте запустить программу " - "от имени администратора") - exit() - except ZeroSelector: - logging.error("ZeroSelector") - print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") - program.error() - except ValueError as err: - logging.error("ValueError") - logging.exception(err) - print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") - program.error() - except FileNotFoundError as err: - logging.error("FileNotFoundError") - logging.exception(err) - logging.error("FileNotFoundError, запуск чекера") - program.checker() - program.finish() - except Restart: - print("Перезапуск...") - logging.info("Программа перезапускается...") - system("cls") - pass - except Exception as err: - system("cls") - logging.error("Неизвестная ошибка!!") - print(Fore.RED + f"Неизвестная ошибка, смотри {Fore.MAGENTA}логи") - logging.exception(err) - time.sleep(7) - break + if args.restore != 0: + program.restore_backup() + else: + program.run() + except KeyError as err: + logging.error("KeyError") + logging.exception(err) + program.repair_config() + except IndexError as err: + logging.error("IndexError") + logging.exception(err) + print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") + program.error() + except PermissionError as err: + logging.error("PermissionError") + logging.exception(err) + msg.showerror(title="Ошибка доступа", message="Не удается получить доступ к какому-то файлу.\n" + "Проверьте, закрыт ли клиент игры!" + "\nИли попробуйте запустить программу " + "от имени администратора") + exit() + except ZeroSelector: + logging.error("ZeroSelector") + print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") + program.error() + except ValueError as err: + logging.error("ValueError") + logging.exception(err) + print(Fore.RED + f"Неверное значение!{Fore.MAGENTA}\nПерезапуск") + program.error() + except FileNotFoundError as err: + logging.error("FileNotFoundError") + logging.exception(err) + logging.error("FileNotFoundError, запуск чекера") + program.checker() + program.finish() + except Restart: + logging.info("Программа перезапускается (raise Restart)...") + system("cls") + pass + except KeyboardInterrupt: + print(Fore.RED + '\nQuit by Ctrl+C') + exit() + except Exception as err: + system("cls") + logging.error("Неизвестная ошибка!!") + print(Fore.RED + f"Неизвестная ошибка, смотри {Fore.MAGENTA}логи") + logging.exception(err) + time.sleep(7) + break diff --git a/minesquid.py b/minesquid.py index bf226d5..2f94bbd 100644 --- a/minesquid.py +++ b/minesquid.py @@ -57,14 +57,16 @@ def settings(self): logging.info('Открыты настройки') print('1 - изменить путь к папке с игрой\n2 - изменить имя пользователя, ' 'отображаемое в программе\n3 - выход\n*') - input1 = input("Выберите настройку: ") + input1 = input(f"Выберите настройку: {Fore.RED}") + print(Fore.RESET, end='\r') if str(input1) == '1': logging.info('Начат процесс изменения пути к папке с игрой') self.edit_config('options', 'game_path', self.enter_path()) time.sleep(0.5) elif str(input1) == '2': logging.info('Начат процесс изменения пользовательского никнейма') - username = input('Введите новое имя пользователя(default - сбросить имя): ') + username = input(f'Введите новое имя пользователя(default - сбросить имя): {Fore.RED}') + print(Fore.RESET, end='\r') if username != 'default': self.edit_config('options', 'custom_username', username) else: @@ -81,7 +83,7 @@ def enter_path(self): while True: path = filedialog.askdirectory(initialdir=f'{os.environ["appdata"]}\\.minecraft') if path == '': - print("Редактирование отменено") + print(Fore.RED + "Редактирование отменено") time.sleep(1) return self.game_directory elif path.replace('\\', '').replace('/', '') == path[:2]: @@ -191,7 +193,8 @@ def ui(self): "\n? - открыть readME\nq - выход") logging.info(f"Количество модпаков: {int(counter) - 1}") logging.info("Ждем выбора модпака пользователем...") - selector = str(input("Выберите модпак: ")) + selector = str(input(f"Выберите модпак: {Fore.RED}")) + print(Fore.RESET, end='\r') if selector == "re": self.restore_backup() elif selector == "set": @@ -222,9 +225,10 @@ def build_list(self): if self.game_directory != 'не назначена': os.chdir(f"{self.userappdata}\\modpacks") self.list = [e for e in os.listdir() if os.path.isdir(e)] + logging.info("Составлен список модпаков") else: self.list = ["Папка с игрой не назначена", "Модпаки недоступны", Fore.RED + "Для выбора папки введите set"] - logging.info("Составлен список модпаков") + logging.info("Папка с игрой не назначена!") def edit_config(self, section, option, what): logging.info('Запущен edit_config') @@ -298,7 +302,7 @@ def load_modpack(self, modpack_number): print(Fore.GREEN + "Готово") self.finish() else: - print("Папка с игрой не указана!") + print(Fore.RED + "Папка с игрой не назначена!") sleep(1.5) raise Restart @@ -358,7 +362,7 @@ def restore_backup(self): print(Fore.GREEN + "Бэкап восстановлен") self.finish() else: - print("Папка с игрой не указана!") + print(Fore.RED + "Папка с игрой не назначена!") sleep(1.5) raise Restart @@ -366,19 +370,20 @@ def update(self): logging.info("Начата проверка обновлений...") print("Проверка обновлений...") try: - version_url = "https://raw.githubusercontent.com/Skrepysh/mineSquid/master/version.txt" + version_url = 'https://raw.githubusercontent.com/Skrepysh/mineSquid/master/version.txt' version = requests.get(version_url).text.replace('\n', '') except Exception: print("Не удалось проверить обновления(((\nПроверьте подключение к интернету") sleep(1.5) raise Restart if float(version) > float(self.version): - print(f"Найдена новая версия программы: {version}") + print(f"Найдена новая версия программы: {Fore.GREEN + version}") logging.info(f"Найдена новая версия программы: {version}!") - accept = input("Выполнить обновление? Y - да, N - нет: ") + accept = input(f"Выполнить обновление? {Fore.GREEN}Y{Fore.RESET} - да, {Fore.RED}N{Fore.RESET} - нет: {Fore.CYAN}") + print(Fore.RESET, end='\r') if accept.lower() == "y": logging.info("Обновление подтверждено") - print("Скачиваю обновление...") + print(Fore.CYAN + "Скачиваю обновление...") try: logging.info("Скачивание...") update_url = (f"https://github.com/Skrepysh/mineSquid/releases/download/v{version}" @@ -386,24 +391,24 @@ def update(self): os.chdir(os.environ['temp']) open("mineSquidUpdate.exe", "wb").write(requests.get(update_url, allow_redirects=True).content) except Exception: - print("Не удалось скачать обновление(((\nПроверьте подключение к интернету") + print(Fore.RED + "Не удалось скачать обновление(((\nПроверьте подключение к интернету") sleep(1.5) raise Restart print("Запускаю процесс установки...") - logging.info("Запускаю процесс установки...") + logging.info(Fore.CYAN + "Запускаю процесс установки...") if os.path.exists(f'{os.environ["temp"]}\\mineSquidUpdate.exe'): Popen(f'{os.environ["temp"]}\\mineSquidUpdate.exe /Silent') else: - print("При обновлении произошла ошибка!") + print(Fore.RED + "При обновлении произошла ошибка!") exit() else: logging.info("Обновление отменено") - print("Обновление отменено") + print(Fore.RED + "Обновление отменено") sleep(1) raise Restart else: logging.info("Обновлений нет") - print("Обновлений нет") + print(Fore.LIGHTMAGENTA_EX + "Обновлений нет") sleep(1) raise Restart diff --git a/version.txt b/version.txt index 8f14589..2b6ac00 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.23 \ No newline at end of file +2.24 \ No newline at end of file