Skip to content

Commit

Permalink
v2.20
Browse files Browse the repository at this point in the history
Updated program to version 2.20
  • Loading branch information
Skrepysh committed Oct 4, 2023
1 parent 05fdb1d commit cc3a428
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 81 deletions.
14 changes: 7 additions & 7 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import os
from os import system, getcwd
import time
import argparse
from argparse import ArgumentParser
from minesquid import MineSquid, ZeroSelector, Restart
from tkinter import messagebox as msg

parser = argparse.ArgumentParser(description='Привет!')
parser = ArgumentParser(description='Привет!')
group1 = parser.add_mutually_exclusive_group()
group1.add_argument("--mpname", default=0, help="используйте --mpname [имя модпака] для создания ярлыков быстрого "
"доступа к определенным модпакам ПО ИМЕНИ"
Expand All @@ -19,7 +19,7 @@
group1.add_argument("--restore", default=0, nargs='?', const=1, help="используйте --restore, чтобы восстановить бэкап")
args = parser.parse_args()

program_version = "2.19"
program_version = "2.20"
ok = MineSquid(program_version)
logging = ok.logging

Expand All @@ -30,7 +30,7 @@
ok.read_config()
ok.checker()
ok.build_list()
logging.info(f'Путь к программе: {os.getcwd()}')
logging.info(f'Путь к программе: {ok.program_directory}')
logging.info(f'Путь к игре: {ok.game_directory}')
logging.info(f'Путь к папке с пользовательскими данными: {ok.userappdata}')
if (int(args.mpnum) != 0 and int(args.mpnum) > 0) and int(args.mpnum) < len(ok.list) - 1:
Expand Down Expand Up @@ -77,10 +77,10 @@
except Restart:
print("Перезапуск...")
logging.info("Программа перезапускается...")
os.system("cls")
system("cls")
pass
except Exception as err:
os.system("cls")
system("cls")
logging.error("Неизвестная ошибка!!")
print("Неизвестная ошибка, смотри логи")
logging.exception(err)
Expand Down
126 changes: 53 additions & 73 deletions minesquid.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import configparser
import time
from configparser import ConfigParser
import logging
import os
import sys
import shutil
import time
from sys import exit, argv
from shutil import rmtree, copytree
from time import sleep
from progress.bar import Bar
import datetime as dt
from datetime import datetime
from tkinter import messagebox as msg
from tkinter import filedialog
import requests
import subprocess
from subprocess import Popen


class ZeroSelector(Exception):
Expand All @@ -21,72 +23,47 @@ class Restart(Exception):

class MineSquid:
def __init__(self, version):
self.dt = dt.datetime.now()
self.dt = datetime.now()
self.user_choice = ""
self.list = []
self.version = str(version)
self.game_directory = 'не назначена'
self.program_directory = os.path.dirname(os.path.abspath(sys.argv[0]))
self.program_directory = os.path.dirname(os.path.abspath(argv[0]))
self.userappdata = f'{os.environ["appdata"]}\\mineSquid'
self.config = configparser.ConfigParser()
self.config = ConfigParser()
self.logging = logging
# noinspection PyGlobalUndefined

@staticmethod
def error():
time.sleep(1)
sleep(0.5)
os.system("cls")

@staticmethod
def finish():
print("завершение работы...")
time.sleep(0.5)
sleep(0.5)
logging.info("Работа программы завершена")
sys.exit()
exit()

def enter_path(self):
logging.info("Запущен enter_path!")
while True:
logging.info("Запрашиваем путь к папке с игрой")
print("Не вводите ничего, чтобы использовать стандартный путь %appdata%/.minecraft\nc - отмена")
inp = str(input("Введите путь к папке с игрой: "))
logging.info(f"Пользователь ввел {inp}")
inp = inp.replace('"', '')
if inp.replace(" ", "") == "":
if os.path.exists(f'{os.environ["appdata"]}\\.minecraft'):
inp = "default"
logging.info("Выбран стандартный путь %appdata%/.minecraft")
print("Выбран стандартный путь %appdata%/.minecraft")
break
else:
print("Ooooops! Стандартный путь не существует, выберите другой!\n*******")
elif inp.lower() == "c":
print("Редактирование отменено")
inp = self.game_directory
break
elif not os.path.exists(inp):
print("Путь не существует!\n*******")
logging.info("Ooooops! Путь не существует")
path = filedialog.askdirectory(initialdir=f'{os.environ["appdata"]}\\.minecraft')
if path != '':
return path
else:
logging.info("Введен действительный путь")
print("Введен действительный путь")
break
time.sleep(1)
os.system("cls")
return str(inp)
print("Редактирование отменено")
time.sleep(1)
return self.game_directory

def setup_logger(self, mode=0):
def setup_logger(self):
if not os.path.exists(f"{self.userappdata}\\logs"):
os.makedirs(f"{self.userappdata}\\logs")
if mode == 0:
logging.basicConfig(level=logging.DEBUG,
filename=f"{self.userappdata}\\logs\\{self.dt.hour}_{self.dt.minute}_"
f"{self.dt.second}_at_{self.dt.day}_{self.dt.month}_"
f"{self.dt.year}.log", filemode="w+",
format="%(asctime)s #%(levelname)s, %(funcName)s(): %(message)s")
else:
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s #%(levelname)s: %(message)s")
logging.basicConfig(level=logging.DEBUG,
filename=f"{self.userappdata}\\logs\\{self.dt.hour}_{self.dt.minute}_"
f"{self.dt.second}_at_{self.dt.day}_{self.dt.month}_"
f"{self.dt.year}.log", filemode="w+",
format="%(asctime)s #%(levelname)s, %(funcName)s(): %(message)s")

def read_config(self):
logging.info("Read_config запущен")
Expand Down Expand Up @@ -146,7 +123,7 @@ def checker(self):

def ui(self):
logging.info("UI запущен")
print("Привет!")
print(f"Привет, {os.getlogin()}!")
print("Версия программы: " + self.version)
print(f'Путь к папке с игрой: {self.game_directory}')
print("Список модпаков: ")
Expand All @@ -172,26 +149,27 @@ def ui(self):
if selector == "re":
self.restore_backup()
elif selector == "set":
os.system("cls")
print("Редактирование конфига...")
logging.info("Введена команда set, начат процесс изменения пути к папке с игрой...")
self.edit_config()
raise Restart
elif selector == "upd":
logging.info('Пользователь ввел upd')
self.update()
sys.exit()
exit()
elif selector == "?":
subprocess.Popen(f"notepad {self.program_directory}\\readME.txt")
Popen(f"notepad {self.program_directory}\\readME.txt")
raise Restart
elif selector == "q" or selector == "quit":
logging.info("Пользователь ввел команду q!")
logging.info("Пользователь ввел q!")
self.finish()
else:
selector = int(selector)
if selector == 0:
logging.error("Пользователь ввел '0'!!!")
raise ZeroSelector
else:
logging.info(f'Пользователь ввел {selector}')
self.load_modpack(selector - 1)

def build_list(self):
Expand All @@ -208,9 +186,10 @@ def edit_config(self):
self.config.set("paths", "game_path", self.enter_path())
with open(f"{self.userappdata}\\config.ini", "w") as f:
self.config.write(f)
logging.info('Конфиг создан успешно')
logging.info('Конфиг отредактирован успешно')

def repair_config(self):
logging.warning('Запуск восстановление конфига!')
if os.path.exists(f"{self.userappdata}\\config.ini"):
os.remove(f"{self.userappdata}\\config.ini")
else:
Expand All @@ -220,6 +199,7 @@ def repair_config(self):
self.config.set("paths", "game_path", "default")
self.config.write(cfg)
self.edit_config()
logging.info('Конфиг восстановлен')

def load_modpack(self, modpack_number):
if self.game_directory != 'не назначена':
Expand All @@ -228,16 +208,16 @@ def load_modpack(self, modpack_number):
print("работаю..")
logging.info("Начата работа над модпаком...")
pb1 = Bar("Выполнение", max=4, fill='@')
shutil.rmtree(f"{self.userappdata}\\backup")
rmtree(f"{self.userappdata}\\backup")
logging.info("Удален текущий бэкап")
pb1.next()
shutil.copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\backup")
copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\backup")
logging.info("Сделан бэкап текущих модов")
pb1.next()
shutil.rmtree(f"{self.game_directory}\\mods")
rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
pb1.next()
shutil.copytree(f"{self.userappdata}\\modpacks\\{self.user_choice}", f"{self.game_directory}\\mods\\")
copytree(f"{self.userappdata}\\modpacks\\{self.user_choice}", f"{self.game_directory}\\mods\\")
logging.info("Модпак скопирован в папку mods")
logging.info("ГОТОВО!")
pb1.next()
Expand All @@ -246,7 +226,7 @@ def load_modpack(self, modpack_number):
self.finish()
else:
print("Папка с игрой не указана!")
time.sleep(1.5)
sleep(1.5)
raise Restart

def restore_backup(self):
Expand All @@ -257,16 +237,16 @@ def restore_backup(self):
if os.path.exists(f"{self.game_directory}\\mods"):
pb2.next()
bob = True
shutil.copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\bob", dirs_exist_ok=True)
copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\bob", dirs_exist_ok=True)
logging.info("Бэкап сделан перед восстановлением бэкапа)")
shutil.rmtree(f"{self.game_directory}\\mods")
rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
else:
pb2.next()
shutil.copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\mods\\")
copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\mods\\")
pb2.next()
if bob:
shutil.rmtree(f"{self.userappdata}\\backup")
rmtree(f"{self.userappdata}\\backup")
os.rename(f"{self.userappdata}\\bob", f"{self.userappdata}\\backup")
else:
pass
Expand All @@ -277,18 +257,18 @@ def restore_backup(self):
self.finish()
else:
print("Папка с игрой не указана!")
time.sleep(1.5)
sleep(1.5)
raise Restart

def update(self):
logging.info("Начата проверка обновлений...")
print("Проверка обновлений...")
try:
version_url = "https://raw.githubusercontent.com/Skrepysh/mineSquid/main/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Проверьте подключение к интернету")
time.sleep(1.5)
sleep(1.5)
raise Restart
if float(version) > float(self.version):
print(f"Найдена новая версия программы: {version}")
Expand All @@ -305,30 +285,30 @@ def update(self):
open("mineSquidUpdate.exe", "wb").write(requests.get(update_url, allow_redirects=True).content)
except Exception:
print("Не удалось скачать обновление(((\nПроверьте подключение к интернету")
time.sleep(1.5)
sleep(1.5)
raise Restart
print("Запускаю процесс установки...")
logging.info("Запускаю процесс установки...")
if os.path.exists(f'{os.environ["temp"]}\\mineSquidUpdate.exe'):
subprocess.Popen(f'{os.environ["temp"]}\\mineSquidUpdate.exe /Silent')
Popen(f'{os.environ["temp"]}\\mineSquidUpdate.exe /Silent')
else:
print("При обновлении произошла ошибка!")
sys.exit()
exit()
else:
logging.info("Обновление отменено")
print("Обновление отменено")
time.sleep(1)
sleep(1)
raise Restart
else:
logging.info("Обновлений нет")
print("Обновлений нет")
time.sleep(1)
sleep(1)
raise Restart

def run(self):
os.chdir(self.userappdata)
if os.path.exists(f"{self.game_directory}\\tempfiles\\") and self.game_directory != 'не назначена':
shutil.rmtree(f"{self.game_directory}\\tempfiles")
rmtree(f"{self.game_directory}\\tempfiles")
else:
pass
if self.game_directory != 'не назначена':
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.19
2.20

0 comments on commit cc3a428

Please sign in to comment.