Обновление 2.0
This commit is contained in:
parent
310faaf79b
commit
2183db0515
@ -1,6 +1,5 @@
|
||||
## Добро пожаловать в AutoZoom!
|
||||
|
||||
Contact me [directly](https://t.me/profitroll) or via [Support Center](https://www.tidio.com/talk/ydqcvfvgkud3jjk2482uaesvjpeohlh3) if you need English translation.
|
||||
В этом файле описаны все шаги которые нужно выполнить для работы с программой.
|
||||
|
||||
### Содержание
|
||||
@ -13,7 +12,6 @@ Contact me [directly](https://t.me/profitroll) or via [Support Center](https://w
|
||||
* [GitHub вики проекта](https://github.com/profitrollgame/autozoom/wiki)
|
||||
* [Обратная связь и предложения](https://t.me/profitroll)
|
||||
* [Сообщить об ошибке/баге](https://github.com/profitrollgame/autozoom/issues)
|
||||
* [Центр поддержки](https://www.tidio.com/talk/ydqcvfvgkud3jjk2482uaesvjpeohlh3)
|
||||
|
||||
### 1. Информация и описание программы
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"debug": false,
|
||||
"shutdown_timeout": 30,
|
||||
"shutdown_enabled": true,
|
||||
"start": "shift+f7",
|
||||
"stop": "shift+f8",
|
||||
"telegram_enabled": false,
|
||||
"use_colors": true,
|
||||
"run_fullscreen": false,
|
||||
"use_rpc": true,
|
||||
"sounds": true,
|
||||
"end_mode": "shutdown",
|
||||
"obs_exe": null,
|
||||
"obs_core": null
|
||||
}
|
167
functions.py
167
functions.py
@ -1,33 +1,130 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pip
|
||||
import time
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import gzip
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
path = Path(__file__).resolve().parent
|
||||
sounds_folder = str(Path(str(path)+"/sounds/")) + os.sep
|
||||
files_folder = str(Path(str(path)+"/files/")) + os.sep
|
||||
logs_folder = str(Path(str(path)+"/logs/")) + os.sep
|
||||
|
||||
|
||||
default_config = {
|
||||
"debug": False,
|
||||
"shutdown_timeout": 30,
|
||||
"shutdown_enabled": True,
|
||||
"start": "shift+f7",
|
||||
"stop": "shift+f8",
|
||||
"telegram_enabled": False,
|
||||
"use_colors": True,
|
||||
"run_fullscreen": False,
|
||||
"use_rpc": True,
|
||||
"sounds": True,
|
||||
"end_mode": "shutdown",
|
||||
"obs_exe": None,
|
||||
"obs_core": None,
|
||||
"update_check": True,
|
||||
"write_logs": True,
|
||||
"log_size": 512
|
||||
}
|
||||
|
||||
|
||||
# Функция проверки размера файла
|
||||
def checkSize():
|
||||
global logs_folder
|
||||
|
||||
i = 0
|
||||
|
||||
while i < 2:
|
||||
try:
|
||||
log = os.stat(logs_folder + 'latest.log')
|
||||
|
||||
if (log.st_size / 1024) > getConfig("log_size"):
|
||||
with open(logs_folder + 'latest.log', 'rb') as f_in:
|
||||
with gzip.open(f'{logs_folder}{datetime.now().strftime("%d.%m.%Y_%H:%M:%S")}.zip', 'wb') as f_out:
|
||||
shutil.copyfileobj(f_in, f_out)
|
||||
|
||||
if getConfig("debug"):
|
||||
print(f'Copied {logs_folder}{datetime.now().strftime("%d.%m.%Y_%H:%M:%S")}.zip')
|
||||
|
||||
open(logs_folder + 'latest.log', 'w').close()
|
||||
|
||||
i = 2
|
||||
|
||||
except FileNotFoundError:
|
||||
if getConfig("debug"):
|
||||
print('Log file not found')
|
||||
time.sleep(2)
|
||||
|
||||
try:
|
||||
log = open(logs_folder + 'latest.log', 'a')
|
||||
open(logs_folder + 'latest.log', 'a').close()
|
||||
except:
|
||||
try:
|
||||
os.mkdir(logs_folder)
|
||||
log = open(logs_folder + 'latest.log', 'a')
|
||||
open(logs_folder + 'latest.log', 'a').close()
|
||||
except:
|
||||
if getConfig("debug"):
|
||||
time.sleep(2)
|
||||
print('Log file could not be created')
|
||||
|
||||
i += 1
|
||||
|
||||
|
||||
# Функция добавления в лог
|
||||
def appendLog(message):
|
||||
|
||||
if getConfig("write_logs"):
|
||||
|
||||
global logs_folder
|
||||
|
||||
checkSize()
|
||||
|
||||
try:
|
||||
log = open(logs_folder + 'latest.log', 'a')
|
||||
open(logs_folder + 'latest.log', 'a').close()
|
||||
except:
|
||||
try:
|
||||
os.mkdir(logs_folder)
|
||||
log = open(logs_folder + 'latest.log', 'a')
|
||||
open(logs_folder + 'latest.log', 'a').close()
|
||||
except:
|
||||
time.sleep(2)
|
||||
print('Log file could not be created')
|
||||
|
||||
log.write(f'[{datetime.now().strftime("%H:%M:%S | %d.%m.%Y")}] {message}\n')
|
||||
log.close()
|
||||
|
||||
|
||||
# Функция добавления переменных, если их нет
|
||||
def repairConfig(some_dic):
|
||||
global files_folder
|
||||
global default_config
|
||||
|
||||
for key in some_dic:
|
||||
try:
|
||||
some_dic[key]
|
||||
except NameError:
|
||||
some_dic[key] = default_config[key]
|
||||
|
||||
saveJson(files_folder+'config.json', some_dic)
|
||||
|
||||
|
||||
def getConfig(some_var):
|
||||
global files_folder
|
||||
global default_config
|
||||
|
||||
if os.path.exists(files_folder):
|
||||
if not os.path.exists(files_folder+'config.json'):
|
||||
temp_config_list = {}
|
||||
temp_config_list["debug"] = False
|
||||
temp_config_list["shutdown_timeout"] = 30
|
||||
temp_config_list["shutdown_enabled"] = True
|
||||
temp_config_list["start"] = "shift+f7"
|
||||
temp_config_list["stop"] = "shift+f8"
|
||||
temp_config_list["telegram_enabled"] = False
|
||||
temp_config_list["use_colors"] = True
|
||||
temp_config_list["run_fullscreen"] = False
|
||||
temp_config_list["use_rpc"] = True
|
||||
temp_config_list["sounds"] = True
|
||||
temp_config_list["end_mode"] = "shutdown"
|
||||
temp_config_list["obs_exe"] = None
|
||||
temp_config_list["obs_core"] = None
|
||||
temp_config_list = default_config
|
||||
|
||||
saveJson(files_folder+'config.json', temp_config_list)
|
||||
return temp_config_list[some_var]
|
||||
else:
|
||||
@ -35,26 +132,24 @@ def getConfig(some_var):
|
||||
with open(f"{files_folder}config.json", encoding="utf-8") as json_file:
|
||||
config_list = json.load(json_file)
|
||||
json_file.close()
|
||||
return config_list[some_var]
|
||||
|
||||
try:
|
||||
return config_list[some_var]
|
||||
except:
|
||||
try:
|
||||
repairConfig(config_list)
|
||||
config_list = json.load(json_file)
|
||||
json_file.close()
|
||||
return config_list[some_var]
|
||||
except:
|
||||
return default_config[some_var]
|
||||
except:
|
||||
return "Error"
|
||||
else:
|
||||
os.mkdir(files_folder)
|
||||
if not os.path.exists(files_folder+'config.json'):
|
||||
temp_config_list = {}
|
||||
temp_config_list["debug"] = False
|
||||
temp_config_list["shutdown_timeout"] = 30
|
||||
temp_config_list["shutdown_enabled"] = True
|
||||
temp_config_list["start"] = "shift+f7"
|
||||
temp_config_list["stop"] = "shift+f8"
|
||||
temp_config_list["telegram_enabled"] = False
|
||||
temp_config_list["use_colors"] = True
|
||||
temp_config_list["run_fullscreen"] = False
|
||||
temp_config_list["use_rpc"] = True
|
||||
temp_config_list["sounds"] = True
|
||||
temp_config_list["end_mode"] = "shutdown"
|
||||
temp_config_list["obs_exe"] = None
|
||||
temp_config_list["obs_core"] = None
|
||||
temp_config_list = default_config
|
||||
|
||||
saveJson(files_folder+'config.json', temp_config_list)
|
||||
return temp_config_list[some_var]
|
||||
else:
|
||||
@ -62,12 +157,22 @@ def getConfig(some_var):
|
||||
with open(f"{files_folder}config.json", encoding="utf-8") as json_file:
|
||||
config_list = json.load(json_file)
|
||||
json_file.close()
|
||||
return config_list[some_var]
|
||||
|
||||
try:
|
||||
return config_list[some_var]
|
||||
except:
|
||||
try:
|
||||
repairConfig(config_list)
|
||||
config_list = json.load(json_file)
|
||||
json_file.close()
|
||||
return config_list[some_var]
|
||||
except:
|
||||
return default_config[some_var]
|
||||
|
||||
except:
|
||||
return "Error"
|
||||
|
||||
|
||||
|
||||
def saveJson(filename, value):
|
||||
with open(filename, 'w', encoding="utf-8") as f:
|
||||
json.dump(value, f, indent=4, ensure_ascii=False)
|
||||
|
@ -3,6 +3,7 @@
|
||||
import os, sys
|
||||
from colors import *
|
||||
from functions import getConfig
|
||||
from functions import appendLog
|
||||
|
||||
# Работает не очень стабильно при отсутствии интернета
|
||||
# try:
|
||||
@ -24,65 +25,84 @@ libs = []
|
||||
try:
|
||||
import easygui
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module easygui")
|
||||
libs.append("easygui")
|
||||
###################################
|
||||
try:
|
||||
import tkinter
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module tkinter")
|
||||
libs.append("tkinter")
|
||||
###################################
|
||||
try:
|
||||
import keyboard
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module keyboard")
|
||||
libs.append("keyboard")
|
||||
###################################
|
||||
try:
|
||||
import ast
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module ast")
|
||||
libs.append("ast")
|
||||
###################################
|
||||
try:
|
||||
import inputimeout
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module inputimeout")
|
||||
libs.append("inputimeout")
|
||||
###################################
|
||||
try:
|
||||
import telegram_send
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module telegram_send")
|
||||
libs.append("telegram_send")
|
||||
###################################
|
||||
try:
|
||||
import wget
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module wget")
|
||||
libs.append("wget")
|
||||
###################################
|
||||
try:
|
||||
import requests
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module requests")
|
||||
libs.append("requests")
|
||||
###################################
|
||||
try:
|
||||
import playsound
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module playsound")
|
||||
libs.append("playsound")
|
||||
###################################
|
||||
try:
|
||||
from zipfile import ZipFile
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module zipfile")
|
||||
libs.append("zipfile")
|
||||
###################################
|
||||
try:
|
||||
import asyncio
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module asyncio")
|
||||
libs.append("asyncio")
|
||||
###################################
|
||||
try:
|
||||
import getpass
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module getpass")
|
||||
libs.append("getpass")
|
||||
###################################
|
||||
try:
|
||||
from pypresence import Presence
|
||||
except ModuleNotFoundError:
|
||||
appendLog("No module pypresence")
|
||||
libs.append("pypresence")
|
||||
###################################
|
||||
if len(libs) > 0:
|
||||
print("Не хватает нужных модулей, пробуем установить...")
|
||||
print("Не хватает нужных модулей, пробуем установить...\nЭто может занять некоторое время. Пожалуйста, не закрывайте программу.")
|
||||
appendLog('Missing some modules, trying to install them')
|
||||
|
||||
for each in libs:
|
||||
try:
|
||||
@ -94,8 +114,14 @@ if len(libs) > 0:
|
||||
response = os.system('"{}" -m pip install -U '.format(sys.executable) + each + " -q --no-warn-script-location")
|
||||
|
||||
print(f"{RESET}[{BGREEN}OK{RESET}] Установлен модуль {YELLOW}{each}{RESET}.")
|
||||
|
||||
appendLog(f'Module {each} installed')
|
||||
|
||||
if response != 0:
|
||||
appendLog(f'Failed to install {each}')
|
||||
sys.exit(f"{RESET}[{BRED}ERR{RESET}] Установка {YELLOW}{each} {RESET}провалилась.")
|
||||
|
||||
appendLog('Everything seems to be installed')
|
||||
print(f"{RESET}[{BGREEN}OK{RESET}] Все модули были успешно установлены.")
|
||||
|
||||
try:
|
||||
@ -109,6 +135,7 @@ if len(libs) > 0:
|
||||
import requests
|
||||
import playsound
|
||||
import asyncio
|
||||
import getpass
|
||||
from zipfile import ZipFile
|
||||
from pypresence import Presence
|
||||
except ModuleNotFoundError:
|
||||
|
144
main.py
144
main.py
@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import pip
|
||||
import webbrowser
|
||||
import os
|
||||
import time
|
||||
@ -28,9 +29,10 @@ import libinstaller
|
||||
import wget
|
||||
import requests
|
||||
import keyboard
|
||||
import getpass
|
||||
from zipfile import ZipFile
|
||||
|
||||
version = 1.8
|
||||
version = 2.0
|
||||
path = Path(__file__).resolve().parent
|
||||
|
||||
def mainMenu():
|
||||
@ -40,26 +42,38 @@ def mainMenu():
|
||||
global version
|
||||
global path
|
||||
|
||||
appendLog('Main menu opened')
|
||||
rpc.inMenu()
|
||||
|
||||
while True:
|
||||
print(f'{RESET}Загрузка данных о последней версии...')
|
||||
try:
|
||||
os.system("title Загрузка данных...")
|
||||
serv_ver = requests.get("https://www.end-play.xyz/AutoZoomVersion.txt").text
|
||||
os.system("title AutoZoom (Главная)")
|
||||
clear()
|
||||
except:
|
||||
os.system("title Ошибка загрузки данных")
|
||||
print(f'Не удалось загрузить данные о последней версии.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
|
||||
none = input('\n > ')
|
||||
rpc.disconnect()
|
||||
sys.exit()
|
||||
if float(serv_ver) > float(version):
|
||||
show_version = f' ({BRED}!{RESET})'
|
||||
else:
|
||||
show_version = ''
|
||||
if getConfig("update_check"):
|
||||
print(f'{RESET}Загрузка данных о последней версии...')
|
||||
|
||||
try:
|
||||
os.system("title Загрузка данных...")
|
||||
serv_ver = requests.get("https://www.end-play.xyz/AutoZoomVersion.txt").text
|
||||
os.system("title AutoZoom (Главная)")
|
||||
clear()
|
||||
|
||||
except Exception as exp:
|
||||
appendLog(f'Version number load failed {exp}')
|
||||
os.system("title Ошибка загрузки данных")
|
||||
print(f'Не удалось загрузить данные о последней версии.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
|
||||
none = input('\n > ')
|
||||
rpc.disconnect()
|
||||
sys.exit()
|
||||
|
||||
if float(serv_ver) > float(version):
|
||||
show_version = f' ({BRED}!{RESET})'
|
||||
else:
|
||||
show_version = ''
|
||||
|
||||
else:
|
||||
os.system("title AutoZoom (Главная)")
|
||||
show_version = ''
|
||||
serv_ver = 'disabled'
|
||||
appendLog('Skipping update check')
|
||||
|
||||
print(f'{BBLACK}»{RESET} Главное меню\n')
|
||||
print(f' {BRED}1.{RESET} Запуск')
|
||||
print(f' {BRED}2.{RESET} Редактор')
|
||||
@ -71,20 +85,26 @@ def mainMenu():
|
||||
print(RESET)
|
||||
|
||||
if menu_choose == '1':
|
||||
appendLog('Went to daemon')
|
||||
main('menu')
|
||||
elif menu_choose == '2':
|
||||
appendLog('Went to editor')
|
||||
rpc.inEditor()
|
||||
editor()
|
||||
elif menu_choose == '3':
|
||||
appendLog('Went to settings')
|
||||
rpc.inSettings()
|
||||
settings()
|
||||
elif menu_choose == '4':
|
||||
appendLog('Went to updater')
|
||||
rpc.inUpdater()
|
||||
updater(serv_ver, version)
|
||||
elif menu_choose == '5':
|
||||
appendLog('Went to help')
|
||||
rpc.inHelp()
|
||||
helpMenu()
|
||||
elif menu_choose == '6':
|
||||
appendLog('Exited AutoZoom')
|
||||
rpc.disconnect()
|
||||
clear()
|
||||
sys.exit()
|
||||
@ -109,44 +129,74 @@ def helpMenu():
|
||||
try:
|
||||
while True:
|
||||
os.system("title AutoZoom (Помощь)")
|
||||
appendLog('Help menu opened')
|
||||
clear()
|
||||
global version
|
||||
global path
|
||||
|
||||
print(f'{BBLACK}»{RESET} Меню помощи\n')
|
||||
print(f' {BRED}1.{RESET} Документация')
|
||||
print(f' {BRED}2.{RESET} Telegram проекта')
|
||||
print(f' {BRED}3.{RESET} Связаться с автором')
|
||||
print(f' {BRED}4.{RESET} Сводка информации')
|
||||
print(f' {BRED}5.{RESET} В главное меню')
|
||||
print(f' {BRED}2.{RESET} Сайт проекта')
|
||||
print(f' {BRED}3.{RESET} Центр поддержки')
|
||||
print(f' {BRED}4.{RESET} Telegram проекта')
|
||||
print(f' {BRED}5.{RESET} Связаться с автором')
|
||||
print(f' {BRED}6.{RESET} Сводка информации')
|
||||
print(f' {BRED}7.{RESET} В главное меню')
|
||||
help_choose = input(f'\n > {BRED}')
|
||||
|
||||
if help_choose == '1':
|
||||
try:
|
||||
clear()
|
||||
appendLog('Opened AutoZoom wiki')
|
||||
webbrowser.open("https://github.com/profitrollgame/autozoom/wiki")
|
||||
except:
|
||||
except Exception as exp:
|
||||
clear()
|
||||
appendLog(f'Failed to open AutoZoom wiki: {exp}')
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://github.com/profitrollgame/autozoom/wiki{RESET}\n\n > ')
|
||||
clear()
|
||||
elif help_choose == '2':
|
||||
try:
|
||||
clear()
|
||||
webbrowser.open("https://t.me/auto_zoom")
|
||||
except:
|
||||
appendLog('Opened AutoZoom website')
|
||||
webbrowser.open("https://www.end-play.xyz/autozoom")
|
||||
except Exception as exp:
|
||||
clear()
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/auto_zoom{RESET}\n\n > ')
|
||||
appendLog(f'Failed to open AutoZoom website: {exp}')
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://www.end-play.xyz/autozoom{RESET}\n\n > ')
|
||||
clear()
|
||||
elif help_choose == '3':
|
||||
try:
|
||||
clear()
|
||||
webbrowser.open("https://t.me/profitroll")
|
||||
except:
|
||||
appendLog('Opened AutoZoom support center')
|
||||
webbrowser.open("https://www.tidio.com/talk/ydqcvfvgkud3jjk2482uaesvjpeohlh3")
|
||||
except Exception as exp:
|
||||
clear()
|
||||
appendLog(f'Failed to open AutoZoom support center: {exp}')
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://www.tidio.com/talk/ydqcvfvgkud3jjk2482uaesvjpeohlh3{RESET}\n\n > ')
|
||||
clear()
|
||||
elif help_choose == '4':
|
||||
try:
|
||||
clear()
|
||||
appendLog('Opened AutoZoom Telegram group')
|
||||
webbrowser.open("https://t.me/auto_zoom")
|
||||
except Exception as exp:
|
||||
clear()
|
||||
appendLog(f'Failed to open AutoZoom Telegram group: {exp}')
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/auto_zoom{RESET}\n\n > ')
|
||||
clear()
|
||||
elif help_choose == '5':
|
||||
try:
|
||||
clear()
|
||||
appendLog('Opened AutoZoom\'s developer Telegram')
|
||||
webbrowser.open("https://t.me/profitroll")
|
||||
except Exception as exp:
|
||||
clear()
|
||||
appendLog(f'Failed to open AutoZoom\'s developer Telegram: {exp}')
|
||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/profitroll{RESET}\n\n > ')
|
||||
clear()
|
||||
if help_choose == '4':
|
||||
if help_choose == '6':
|
||||
clear()
|
||||
appendLog(f'Showing system information:\n=============================================\nHelpful data for fault search:\n\nOS: {platform.system()}\nRelease: {platform.release()}\nArch: {os_arch()}\nPy Ver: {platform.python_version()}\nPIP Ver: {pip.__version__}\nImpl: {platform.python_implementation()}\nRev: {platform.python_revision()}\nPy Path: {sys.path[4]}\nAZ Ver: {version}\nAZ User: {getpass.getuser()}\nAZ Path: {path}\n=============================================')
|
||||
print(f'{BBLACK}»{RESET} Информация о системе\n')
|
||||
print(' Система:')
|
||||
print(f' {BBLACK}•{RESET} ОС: {YELLOW}{platform.system()}{RESET}')
|
||||
@ -154,15 +204,17 @@ def helpMenu():
|
||||
print(f' {BBLACK}•{RESET} Разрядность: {YELLOW}{os_arch()}{RESET}')
|
||||
print('\n Python:')
|
||||
print(f' {BBLACK}•{RESET} Версия: {YELLOW}{platform.python_version()}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Версия PIP: {YELLOW}{pip.__version__}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Вариант: {YELLOW}{platform.python_implementation()}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Ревизия: {YELLOW}{platform.python_revision()}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Расположение: {BRED}{sys.path[4]}{RESET}')
|
||||
print('\n AutoZoom:')
|
||||
print(f' {BBLACK}•{RESET} Версия: {YELLOW}{version}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Пользователь: {YELLOW}{getpass.getuser()}{RESET}')
|
||||
print(f' {BBLACK}•{RESET} Расположение: {BRED}{path}{RESET}')
|
||||
none = input('\n > ')
|
||||
clear()
|
||||
elif help_choose == '5':
|
||||
elif help_choose == '7':
|
||||
rpc.inMenu()
|
||||
clear()
|
||||
os.system("title AutoZoom (Главная)")
|
||||
@ -179,13 +231,20 @@ def updater(serv_ver, version):
|
||||
try:
|
||||
while True:
|
||||
os.system("title AutoZoom (Обновления)")
|
||||
appendLog('Updater menu opened')
|
||||
clear()
|
||||
|
||||
if float(serv_ver) > float(version):
|
||||
show_version = f' ({BRED}!{RESET})'
|
||||
serv_ver = serv_ver.rstrip('\n')
|
||||
show_action = f'Обновить до {BGREEN}{serv_ver}{RESET}'
|
||||
changelog_text = f'Изменения в версии {BGREEN}{serv_ver}{RESET}:'
|
||||
changelog_footer = '\nОбновитесь чтобы вышеуказанное работало.'
|
||||
elif serv_ver == 'disabled':
|
||||
show_version = ''
|
||||
show_action = f'Переустановить'
|
||||
changelog_text = f'Изменения в вашей версии:'
|
||||
changelog_footer = ''
|
||||
else:
|
||||
show_version = ''
|
||||
show_action = f'Переустановить'
|
||||
@ -198,7 +257,10 @@ def updater(serv_ver, version):
|
||||
print(f' {BRED}2.{RESET} Список изменений')
|
||||
print(f' {BRED}3.{RESET} В главное меню')
|
||||
updater_choose = input(f'\n > {BRED}')
|
||||
|
||||
if updater_choose == '1':
|
||||
appendLog('Choosed to update')
|
||||
|
||||
while True:
|
||||
clear()
|
||||
print(f'{RESET}Подтвердите действие:\n')
|
||||
@ -207,54 +269,69 @@ def updater(serv_ver, version):
|
||||
updater_decide = input('\n > ')
|
||||
|
||||
if updater_decide == '1':
|
||||
appendLog('Trying to update AutoZoom')
|
||||
clear()
|
||||
|
||||
try:
|
||||
wget.download('https://www.end-play.xyz/AutoZoomLatest.zip', out='AutoZoomLatest.zip')
|
||||
except:
|
||||
appendLog('Latest zip downloaded')
|
||||
except Exception as exp:
|
||||
print(f'Не удалось загрузить архив с последней версией.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
|
||||
appendLog(f'Failed to download zip: {exp}')
|
||||
none = input('\n > ')
|
||||
continue
|
||||
|
||||
with ZipFile('AutoZoomLatest.zip', 'r') as zipObj:
|
||||
zipObj.extractall()
|
||||
print('Все файлы были успешно загружены')
|
||||
print('Все файлы были успешно загружены')
|
||||
appendLog('Latest zip extracted')
|
||||
|
||||
if os.path.exists("AutoZoomLatest.zip"):
|
||||
os.remove("AutoZoomLatest.zip")
|
||||
os.remove("AutoZoomLatest.zip")
|
||||
appendLog('Latest used zip deleted')
|
||||
|
||||
clear()
|
||||
none = input('Обновление завершено, перезапустите AutoZoom.\n\n > ')
|
||||
rpc.disconnect()
|
||||
clear()
|
||||
print(f'Закрываем приложение {BGREEN}AutoZoom{RESET}...')
|
||||
appendLog('Exiting AutoZoom after an update')
|
||||
sys.exit()
|
||||
elif updater_decide == '2':
|
||||
clear()
|
||||
appendLog('Aborted update')
|
||||
break
|
||||
else:
|
||||
continue
|
||||
|
||||
elif updater_choose == '2':
|
||||
appendLog('Choosed to check changelog')
|
||||
try:
|
||||
changelog = requests.get("https://www.end-play.xyz/AutoZoomChangelog.txt")
|
||||
changelog.encoding = None
|
||||
appendLog('Changelog loaded')
|
||||
clear()
|
||||
print(f'{RESET}{changelog_text}\n')
|
||||
print(changelog.text)
|
||||
print(changelog_footer)
|
||||
none = input('\n > ')
|
||||
continue
|
||||
except:
|
||||
except Exception as exp:
|
||||
print(f'{RESET}Не удалось загрузить чейнджлог.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
|
||||
appendLog(f'Failed to check changelog: {exp}')
|
||||
none = input('\n > ')
|
||||
continue
|
||||
|
||||
elif updater_choose == '3':
|
||||
rpc.inMenu()
|
||||
clear()
|
||||
appendLog('Returning to main menu')
|
||||
os.system("title AutoZoom (Главная)")
|
||||
return
|
||||
|
||||
else:
|
||||
continue
|
||||
|
||||
except KeyboardInterrupt:
|
||||
rpc.inMenu()
|
||||
clear()
|
||||
@ -271,6 +348,7 @@ if __name__ == '__main__':
|
||||
keyboard.press('alt, enter')
|
||||
time.sleep(.25)
|
||||
keyboard.release('alt, enter')
|
||||
|
||||
os.system("title AutoZoom (Главная)")
|
||||
mainMenu()
|
||||
sys.exit()
|
||||
|
12
requirements.txt
Normal file
12
requirements.txt
Normal file
@ -0,0 +1,12 @@
|
||||
easygui
|
||||
tkinter
|
||||
keyboard
|
||||
ast
|
||||
inputimeout
|
||||
telegram_send
|
||||
wget
|
||||
requests
|
||||
playsound
|
||||
asyncio
|
||||
zipfile
|
||||
pypresence
|
168
rpc.py
168
rpc.py
@ -6,7 +6,7 @@ import sys
|
||||
from colors import *
|
||||
from functions import *
|
||||
|
||||
version = '1.8'
|
||||
version = '2.0'
|
||||
|
||||
import libinstaller
|
||||
from pypresence import Presence
|
||||
@ -33,8 +33,9 @@ def disconnect():
|
||||
try:
|
||||
RPC.close()
|
||||
connected = False
|
||||
appendLog('Discord RPC disconnected')
|
||||
except:
|
||||
pass
|
||||
appendLog('Discord RPC failed to disconnect')
|
||||
|
||||
def connect():
|
||||
global connected
|
||||
@ -42,12 +43,14 @@ def connect():
|
||||
try:
|
||||
RPC.connect()
|
||||
connected = True
|
||||
appendLog('Discord RPC connected')
|
||||
except:
|
||||
pass
|
||||
appendLog('Discord RPC failed to connect')
|
||||
|
||||
def reset():
|
||||
if getConfig("use_rpc"):
|
||||
RPC.clear()
|
||||
appendLog('Discord RPC status cleared')
|
||||
|
||||
|
||||
|
||||
@ -56,12 +59,15 @@ def waitLesson(lesson, start):
|
||||
if getConfig("use_rpc"):
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_waiting', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Ожидание', state=f'Ждём начала «{lesson}»', details='Урок не начался', start=start)
|
||||
RPC.update(large_image='1024_cover', small_image='status_waiting', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Ожидание', state=f'Ждём начала «{lesson}»', details='Конференция не началась', start=start)
|
||||
appendLog(f'Discord RPC changed to waitLesson (Lesson: {lesson}, Start: {start})')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -71,12 +77,15 @@ def onLesson(lesson, start):
|
||||
if getConfig("use_rpc"):
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_lesson', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Урок', state=f'Слушаем «{lesson}»', details='Идёт урок', start=start)
|
||||
RPC.update(large_image='1024_cover', small_image='status_lesson', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Конференция', state=f'Слушаем «{lesson}»', details='Идёт конференция', start=start)
|
||||
appendLog(f'Discord RPC changed to onLesson (Lesson: {lesson}, Start: {start})')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -87,11 +96,14 @@ def inMenu():
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_menu', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Главное меню', state='Открыт список опций', details='В главном меню')
|
||||
appendLog('Discord RPC changed to inMenu')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -102,11 +114,14 @@ def shutdown(end):
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_shutdown', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Выключение', state='Отсчёт до авто-выключения', details='Выключение ПК', end=end)
|
||||
appendLog(f'Discord RPC changed to shutdown (End: {end})')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -117,11 +132,14 @@ def inSettings():
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_settings', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Настройки', state='Открыты настройки', details='В главном меню')
|
||||
appendLog('Discord RPC changed to inSettings')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -132,11 +150,14 @@ def inEditor():
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_editing', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Редактор', state='Открыт редактор', details='В главном меню')
|
||||
appendLog('Discord RPC changed to inEditor')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -147,11 +168,14 @@ def inUpdater():
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_updating', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Обновление', state='Открыт центр обновлений', details='В главном меню')
|
||||
appendLog('Discord RPC changed to inUpdater')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
@ -162,134 +186,44 @@ def inHelp():
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_support', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Помощь', state='Открыта помощь', details='В главном меню')
|
||||
appendLog('Discord RPC changed to inHelp')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
|
||||
def lessonEnded():
|
||||
try:
|
||||
if getConfig("use_rpc"):
|
||||
if connected == False:
|
||||
connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_waiting', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Ожидание', state=f'Ждём указаний', details='Все конференции закончились')
|
||||
appendLog('Discord RPC changed to lessonEnded')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
except AssertionError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
RPC.connect()
|
||||
RPC.update(large_image='1024_cover', small_image='status_settings', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Отладка', state='Модуль Discord RPC запущен в режиме тестирования', details='Режим отладки')
|
||||
appendLog('Discord RPC changed to debug')
|
||||
except AttributeError:
|
||||
appendLog('Discord RPC failed to change status')
|
||||
if getConfig("debug"):
|
||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
################################################################################
|
||||
# Неудачная попытка работы с discord_rpc. Потом, быть может, попробую ещё раз. #
|
||||
################################################################################
|
||||
|
||||
# import discord_rpc
|
||||
# import time
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# def readyCallback(current_user):
|
||||
# print('Our user: {}'.format(current_user))
|
||||
|
||||
# def disconnectedCallback(codeno, codemsg):
|
||||
# print('Disconnected from Discord rich presence RPC. Code {}: {}'.format(
|
||||
# codeno, codemsg
|
||||
# ))
|
||||
|
||||
# def errorCallback(errno, errmsg):
|
||||
# print('An error occurred! Error {}: {}'.format(
|
||||
# errno, errmsg
|
||||
# ))
|
||||
|
||||
# # Note: 'event_name': callback
|
||||
# callbacks = {
|
||||
# 'ready': readyCallback,
|
||||
# 'disconnected': disconnectedCallback,
|
||||
# 'error': errorCallback,
|
||||
# }
|
||||
|
||||
# # if __name__ != "__main__":
|
||||
# discord_rpc.initialize('800049969960058882', callbacks=callbacks, log=False)
|
||||
# none = input('init')
|
||||
|
||||
# i = 0
|
||||
|
||||
# while i < 10:
|
||||
# discord_rpc.update_presence(
|
||||
# **{
|
||||
# 'state': f'Загрузка...',
|
||||
# 'details': 'Загрузка...',
|
||||
# #'start_timestamp': start,
|
||||
# 'large_image_key': '1024_cover',
|
||||
# 'small_image_key': 'status_waiting',
|
||||
# 'large_image_text': f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom',
|
||||
# 'small_image_text': 'Ожидание',
|
||||
# }
|
||||
# )
|
||||
# discord_rpc.update_connection()
|
||||
# time.sleep(3)
|
||||
# discord_rpc.run_callbacks()
|
||||
# i += 1
|
||||
|
||||
# i = 0
|
||||
# start = time.time()
|
||||
# while i < 10:
|
||||
# i += 1
|
||||
|
||||
#large_image='1024_cover', small_image='status_waiting', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Ожидание', state=f'Ждём начала «{lesson}»', details='Урок не начался', start=start
|
||||
|
||||
# discord_rpc.update_presence(
|
||||
# **{
|
||||
# 'state': f'Ждём начала «lesson»',
|
||||
# 'details': 'Урок не начался',
|
||||
# 'start_timestamp': start,
|
||||
# 'large_image_key': '1024_cover',
|
||||
# 'small_image_key': 'status_waiting',
|
||||
# 'large_image_text': f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom',
|
||||
# 'small_image_text': 'Ожидание',
|
||||
# }
|
||||
# )
|
||||
|
||||
# discord_rpc.update_connection()
|
||||
# time.sleep(1)
|
||||
# discord_rpc.run_callbacks()
|
||||
|
||||
# discord_rpc.shutdown()
|
||||
|
||||
|
||||
# def disconnect():
|
||||
# if getConfig("use_rpc"):
|
||||
# discord_rpc.shutdown()
|
||||
|
||||
|
||||
# def inMenu():
|
||||
# if getConfig("use_rpc"):
|
||||
# discord_rpc.update_presence(
|
||||
# **{
|
||||
# 'state': f'Ждём начала «lesson»',
|
||||
# 'details': 'Урок не начался',
|
||||
# #'start_timestamp': start,
|
||||
# 'large_image_key': '1024_cover',
|
||||
# 'small_image_key': 'status_waiting',
|
||||
# 'large_image_text': f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom',
|
||||
# 'small_image_text': 'Ожидание',
|
||||
# }
|
||||
# )
|
||||
# discord_rpc.update_connection()
|
||||
|
||||
# def waitLesson(lesson, start):
|
||||
# if getConfig("use_rpc"):
|
||||
# discord_rpc.update_presence(
|
||||
# **{
|
||||
# 'state': f'Ждём начала «lesson»',
|
||||
# 'details': 'Урок не начался',
|
||||
# 'start_timestamp': start,
|
||||
# 'large_image_key': '1024_cover',
|
||||
# 'small_image_key': 'status_waiting',
|
||||
# 'large_image_text': f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom',
|
||||
# 'small_image_text': 'Ожидание',
|
||||
# }
|
||||
# )
|
||||
|
Reference in New Issue
Block a user