8 Commits
v1.4 ... v1.5

Author SHA1 Message Date
eb33215856 Обновлён до 1.5 2021-01-21 14:01:44 +02:00
243e06ee0b Обновление 1.5
• Добавлен Discord RPC;
• Вывод может быть цаетным (опционально);
• Звуковые эффекты теперь можно выключить;
• Пункты меню "Помощь" и "Настройки" сильно изменены.
2021-01-21 14:00:58 +02:00
2b50827e58 Последний фикс README на сегодня :) 2021-01-16 00:22:22 +02:00
79901de58c Ещё один фикс README 2021-01-16 00:21:26 +02:00
5354e0e487 Update README.md 2021-01-16 00:19:23 +02:00
f0b5985aaa Фикс заголовков 2021-01-16 00:13:28 +02:00
bd722212b5 Мелкий фикс MD 2021-01-16 00:10:19 +02:00
3f679531f7 TXT файл был заменён на MD 2021-01-16 00:09:14 +02:00
11 changed files with 1178 additions and 427 deletions

View File

@@ -1,20 +1,19 @@
Добро пожаловать в AutoZoom!
## Добро пожаловать в AutoZoom!
В этом файле описаны все шаги которые нужно выполнить для работы с программой.
Содержание
1. Описание и информация
2. Инструкция по установке
3. Инструкция по использованию
4. Благодарности и помощь
### Содержание
1. [Описание и информация](https://github.com/profitrollgame/autozoom#1-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B)
2. [Инструкция по установке](https://github.com/profitrollgame/autozoom#21-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5)
3. [Инструкция по использованию](https://github.com/profitrollgame/autozoom#3-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E)
4. [Благодарности и помощь](https://github.com/profitrollgame/autozoom#4-%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%81%D0%BB%D0%BE%D0%B2%D0%B0)
GitHub вики проекта: https://github.com/profitrollgame/autozoom/wiki
Обратная связь и предложения: https://t.me/profitroll
Сообщить об ошибке/баге: https://github.com/profitrollgame/autozoom/issues
### Полезные ссылки
* [GitHub вики проекта](https://github.com/profitrollgame/autozoom/wiki)
* [Обратная связь и предложения](https://t.me/profitroll)
* [Сообщить об ошибке/баге](https://github.com/profitrollgame/autozoom/issues)
-----------------------= №1 =-----------------------
--------- Информация и описание программы ----------
----------------------------------------------------
### 1. Информация и описание программы
AutoZoom создан для автоматизации присоединения к
всевозможным Zoom конференциями. С помощью этой утилиты
@@ -30,30 +29,23 @@ AutoZoom создан для автоматизации присоединени
для удобства, интереса ради или даже в шутку.
----------------------= №2.1 =----------------------
------------- Инструкция по установке --------------
----------------------------------------------------
### 2.1. Инструкция по установке
1. Переложите папку
Пришло время найти место для нашей программы. Скопируйте папку из этого
1. Пришло время найти место для нашей программы. Скопируйте папку из этого
архива в любое удобное место на компьютере (если ещё этого не сделали).
2. Установите Python3
Попробуйте запустить ваш start.bat в папке AutoZoom. Возможно, он сам отправит вас на страницу загрузки Python.
2. Попробуйте запустить ваш `start.bat` в папке `AutoZoom`. Возможно, он сам отправит вас на страницу загрузки Python.
Если же этого не произошло - сделать это можно вручную с официального сайта или из магазина приложений
Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?activetab=pivot:overviewtab&source=lp).
3. Откройте редактор
Дважды нажмите на start.bat и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
3. Дважды нажмите на `start.bat` и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
удобный день. Введите все нужные данные. Название конференции, дату, время, ссылку на приглашение.
4. Настройте вход в Zoom
Теперь самая важная часть. Установите Zoom (https://zoom.us/download) на свой ПК.
4. Теперь самая важная часть. Установите Zoom (https://zoom.us/download) на свой ПК.
Запустите его и зарегистрируйтесь/войдите в аккаунт. При входе ОБЯЗАТЕЛЬНО
нужно нажать на галочку о сохранении аккаунта "Не выполнять выход".
5. Настройки клиента Zoom
Нажмите на шестерёнку под вашим аватаром (правый верхний угол) и зайдите
5. Нажмите на шестерёнку под вашим аватаром (правый верхний угол) и зайдите
в пункт "Видеоизображение". В этом пункте найдите галочку "Выключать мое видео
при входе в конференцию" и активируйте её. Затем уберите галочку с "Всегда показывать диалоговое
окно предварительного просмотра видео при подключении к видеоконференции". Замечательно,
@@ -61,27 +53,24 @@ Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?active
подключать звук с компьютера" и "Отключить звук моего микрофона при подключении к конференции". Также
можно убрать галочку с "Нажмите и удерживайте клавишу пробел, чтобы временно включить свой звук", если нужно.
Почти закончили. Теперь перейдите в пункт "Сочетания клавиш" и выключите всё вам не нужное дабы случайно
не помешать процессу автоматизации. Некоторые сочетания нужно удалить. Например, Alt+A лучше удалить нажав
не помешать процессу автоматизации. Некоторые сочетания нужно удалить. Например, `Alt+A` лучше удалить нажав
сначала на неё, а потом на Backspace. Желательно убрать все ненужные сочетания сразу.
6. Готово
Вроде как всё настроено, пришло время открыть в папке приложения файл start.bat двойным нажатием и всё готово.
6. Вроде как всё настроено, пришло время открыть в папке приложения файл `start.bat` двойным нажатием и всё готово.
После вопроса про OBS можно перейти к опциональным шагам ниже для записи конференций или же просто нажать
"Н" на клавиатуре и перейти сразу к делу.
----------------------= №2.2 =----------------------
### 2.2. Запись конференций
(Опционально) Запись конференций
С официального сайта (https://obsproject.com/download) скачайте и установите OBS Studio для записи всех конференций.
С [официального сайта](https://obsproject.com/download) скачайте и установите OBS Studio для записи всех конференций.
После стандартного процесса установки откройте только что установленный OBS. В вопросах мастера настойки укажите,
что вас интересует запись. Разрешение укажите нужное вам.
Пройдя всё банальное и объяснённое в установщике отправляемся в настройки. Сразу же находим пункт "Вывод" в боковой
панели и меняем формат записи на mp4, если нужно будет потом редактировать видео. Если же нет не трогаем.
панели и меняем формат записи на `mp4`, если нужно будет потом редактировать видео. Если же нет не трогаем.
Потом двигаемся к пункту "Горячие клавиши" и находим "Начать запись" и "Остановить запись". Тыкаем на поле мышкой, а
затем прожимаем необходимую комбинацию клавиш. Рекомендую устанавливать на старт "Shift+F7", а на остановку "Shift+F8",
затем прожимаем необходимую комбинацию клавиш. Рекомендую устанавливать на старт `Shift+F7`, а на остановку `Shift+F8`,
однако можете поставить всё что вам удобно.
Чтобы наша запись работала правильно необходимо открыть в боковой панели "Общие" и в подразделе "Системный трей" поставить
@@ -99,61 +88,57 @@ Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?active
Если нужно ещё и записать ваш голос с микрофона снова жмём + добавляя устройство ВХОДНОГО аудиопотока,
выбираем нужный микрофон и дальше снова "ОК". Замечательно, в OBS всё настроено. Двигаем в AutoZoom.
В случае если вы ставили свои комбинации клавиш (вместо рекомендуемых), то сейчас нужно открыть run.bat в папке
В случае если вы ставили свои комбинации клавиш (вместо рекомендуемых), то сейчас нужно открыть `start.bat` в папке
AutoZoom и выбрать пункт "Настройки". Затем выберите пункт "Начать запись" и введите желаемую комбинацию
клавиш (например, Shift+F7), нажмите Enter. Теперь выберите пункт "Остановить запись" и снова введите комбинацию клавиш.
клавиш (например, `Shift+F7`), нажмите `Enter`. Теперь выберите пункт "Остановить запись" и снова введите комбинацию клавиш.
Желательно, чтобы комбинации были разными, дабы точно избежать сбоев, однако это не по принципиально. Чудесно, жмакаем
последний пункт здесь и в меню редактора. Движемся дальше к run.bat.
Открывая AutoZoom можно обнаружить, что он спрашивает хотим ли мы использовать OBS. Пишем Y или Д и жмём Enter.
В появившемся окне выбираем .exe файл нашего OBS. Обычно он лежит в "C:/Program Files/obs-studio/bin/64bit/obs64.exe",
но у вас может быть вместо 64bit папка 32bit, а файл obs32.exe. В случае с выбранным вами другим путём при
Открывая AutoZoom можно обнаружить, что он спрашивает хотим ли мы использовать OBS. Пишем `Y` или `Д` и жмём `Enter`.
В появившемся окне выбираем .exe файл нашего OBS. Обычно он лежит в `C:/Program Files/obs-studio/bin/64bit/obs64.exe`,
но у вас может быть вместо `64bit` папка `32bit`, а файл `obs32.exe`. В случае с выбранным вами другим путём при
установке ищите файл там, куда кинули.
После выбора `.exe` файла вам должно в консоль AutoZoom написать пути ядра и приложения OBS.
Они также будут храниться в файлах AutoZoom, если вдруг понадобится их изменить.
----------------------= №2.3 =----------------------
(Опционально) Telegram бот
### 2.3. Telegram бот
Если же вам нужно получать уведомления от бота через Telegram - такая опция тоже есть.
Для этого нужно создать бота через BotFather (@BotFather) командой /newbot.
Затем вводим имя нашему боту, по сути любое которое нужно. Затем id бота чтобы оно заканчивалось на "bot" или "_bot".
Для этого нужно создать бота через BotFather ([@BotFather](https://t.me/botfather)) командой `/newbot`.
Затем вводим имя нашему боту, по сути любое которое нужно. Затем id бота чтобы оно заканчивалось на `bot` или `_bot`.
После этого мы получаем HTTP API (токен бота) который вводим во время запуска AutoZoom или же перейдя в пункт
настроек. После ввода туда токена нужно написать нашему только что созданному боту через его имя (то, что на "bot" кончается)
номер который выдаст AutoZoom.
По желанию можно введя команду /setuserpic и выбрав вашего бота ещё и сменить его аватар.
По желанию можно введя команду `/setuserpic` и выбрав вашего бота ещё и сменить его аватар.
Теперь каждый раз когда AutoZoom будет начинать работу или заходить/покидать конференцию вы сразу же получите
сообщение в вашу личку Telegram.
-----------------------= №3 =-----------------------
------------ Инструкция по использованию -----------
----------------------------------------------------
### 3. Инструкция по использованию
У нас есть рабочая и настроенная программа, но как же этим чудом теперь пользоваться? Всё очень просто.
Для начала открываем наш start.bat и тыкаем в пункт "Редактор". Там жмём "Добавить урок" и следуем шагам в приложении.
Для начала открываем наш `start.bat` и тыкаем в пункт "Редактор". Там жмём "Добавить урок" и следуем шагам в приложении.
Чтобы удалить конференцию в меню редактора можно нажать "Удалить урок" и выбрать индекс (число слева посередине каждого урока).
Также, если вдруг что-то перенеслось, можно изменить конференции. нажав в редакторе "Изменить урок".
Если нужно записать программу в автозапуск - сделать это легко.
Для этого создайте ярлык для daemon.bat или start.bat, вырежьте его и вставьте по пути автозапуска
(обычно это "C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup").
Для этого создайте ярлык для `daemon.bat` или `start.bat`, вырежьте его и вставьте по пути автозапуска
(обычно это `C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`).
Готово! Теперь при запуске компьютера через некоторое время после входа в пользователя у вас запустится AutoZoom сам. Это
может быть полезно если хочется полностью автоматизировать присоединение к конференциям.
Также если что-то пошло не так - можно в меню настроек сбросить все параметры до "По умолчанию".
-----------------------= №4 =-----------------------
--------------- Заключительные слова ---------------
----------------------------------------------------
### 4. Заключительные слова
На этом полная установка подходит к концу.
Если же вы нашли ошибки не стесняйтесь писать в Telegram мне прямо в личку (https://t.me/profitroll).
Если же вы нашли ошибки оставляйте свои репорты на [GitHub](https://github.com/profitrollgame/autozoom/issues) или пишите мне в [Telegram](https://t.me/profitroll).
Приятного использования!
P.S.: Отдельное спасибо Kusyaka за помощь в создании сего творения.
Без тебя, если честно, у меня бы ничего не вышло, дружище <3
Без тебя, если честно, у меня бы ничего не вышло, дружище <3

24
colors.py Normal file
View File

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
RESET = '\u001b[0m'
BLACK = '\u001b[30m'
RED = '\u001b[31m'
GREEN = '\u001b[32m'
YELLOW = '\u001b[33m'
BLUE = '\u001b[34m'
MAGENTA = '\u001b[35m'
CYAN = '\u001b[36m'
WHITE = '\u001b[37m'
BBLACK = '\u001b[30;1m'
BRED = '\u001b[31;1m'
BGREEN = '\u001b[32;1m'
BYELLOW = '\u001b[33;1m'
BBLUE = '\u001b[34;1m'
BMAGENTA = '\u001b[35;1m'
BCYAN = '\u001b[36;1m'
BWHITE = '\u001b[37;1m'
ULINE = '\u001b[4m'
REVERSE = '\u001b[7m'

843
daemon.py

File diff suppressed because it is too large Load Diff

View File

@@ -4,5 +4,10 @@
"shutdown_enabled": true,
"start": "shift+f7",
"stop": "shift+f8",
"telegram_enabled": false
"telegram_enabled": false,
"use_colors": true,
"run_fullscreen": false,
"use_rpc": true,
"sounds": true,
"end_mode": "shutdown"
}

46
functions.py Normal file
View File

@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
import pip
import json
import os
import importlib
from pathlib import Path
from colors import *
path = Path(__file__).resolve().parent
sounds_folder = str(Path(str(path)+"/sounds/")) + os.sep
files_folder = str(Path(str(path)+"/files/")) + os.sep
def getConfig(some_var):
global files_folder
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"
saveJson(files_folder+'config.json', temp_config_list)
else:
try:
with open(f"{files_folder}config.json", encoding="utf-8") as json_file:
config_list = json.load(json_file)
return config_list[some_var]
except:
return "Error"
else:
os.mkdir(files_folder)
def saveJson(filename, value):
with open(filename, 'w', encoding="utf-8") as f:
json.dump(value, f, indent=4, ensure_ascii=False)

110
libinstaller.py Normal file
View File

@@ -0,0 +1,110 @@
# -*- coding: utf-8 -*-
import os, sys
from colors import *
from functions import getConfig
# Работает не очень стабильно при отсутствии интернета
# try:
# if getConfig("debug"):
# updatepip = os.system('"{}" -m pip install -U '.format(sys.executable) + '--upgrade pip')
# print(f"{RESET}[{BGREEN}OK{RESET}] Обновлён {YELLOW}PIP{RESET}.")
# else:
# updatepip = os.system('"{}" -m pip install -U '.format(sys.executable) + '--upgrade pip' + " -q --no-warn-script-location")
# print(f"{RESET}[{BGREEN}OK{RESET}] Обновлён {YELLOW}PIP{RESET}.")
# except:
# updatepip = os.system('"{}" -m pip install -U '.format(sys.executable) + '--upgrade pip' + " -q --no-warn-script-location")
# if updatepip != 0:
# sys.exit(f"{RESET}[{BRED}ERR{RESET}] Обновление {YELLOW}PIP {RESET}провалилось.")
#########################################################
libs = []
###################################
try:
import easygui
except ModuleNotFoundError:
libs.append("easygui")
###################################
try:
import tkinter
except ModuleNotFoundError:
libs.append("tkinter")
###################################
try:
import keyboard
except ModuleNotFoundError:
libs.append("keyboard")
###################################
try:
import ast
except ModuleNotFoundError:
libs.append("ast")
###################################
try:
import inputimeout
except ModuleNotFoundError:
libs.append("inputimeout")
###################################
try:
import telegram_send
except ModuleNotFoundError:
libs.append("telegram_send")
###################################
try:
import wget
except ModuleNotFoundError:
libs.append("wget")
###################################
try:
import requests
except ModuleNotFoundError:
libs.append("requests")
###################################
try:
from zipfile import ZipFile
except ModuleNotFoundError:
libs.append("zipfile")
###################################
try:
import asyncio
except ModuleNotFoundError:
libs.append("asyncio")
###################################
try:
from pypresence import Presence
except ModuleNotFoundError:
libs.append("pypresence")
###################################
if len(libs) > 0:
print("Не хватает нужных модулей, пробуем установить...")
for each in libs:
try:
if getConfig("debug"):
response = os.system('"{}" -m pip install -U '.format(sys.executable) + each)
else:
response = os.system('"{}" -m pip install -U '.format(sys.executable) + each + " -q --no-warn-script-location")
except:
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}.")
if response != 0:
sys.exit(f"{RESET}[{BRED}ERR{RESET}] Установка {YELLOW}{each} {RESET}провалилась.")
print(f"{RESET}[{BGREEN}OK{RESET}] Все модули были успешно установлены.")
try:
import easygui
import tkinter
import keyboard
import ast
import inputimeout
import telegram_send
import wget
import requests
import asyncio
from zipfile import ZipFile
from pypresence import Presence
except ModuleNotFoundError:
sys.exit(f"\n#############################################################################\n{BGREEN} Пожалуйста, перезапустите программу для продолжения!{RESET}\n Если это сообщение видно не впервые - напишите {BRED}@profitroll {RESET}в {CYAN}Telegram {RESET}или\n включите {BRED}debug {RESET}в {BRED}files/config.json {RESET}и решите проблему самостоятельно.\n#############################################################################")
#########################################################

184
main.py
View File

@@ -1,55 +1,100 @@
# -*- coding: utf-8 -*-
import sys
import webbrowser
import os
import time
import platform
import subprocess
from daemon import install
from pathlib import Path
install('wget')
install('zipfile')
install('requests')
from functions import *
os.system("title")
from daemon import main, editor, settings, clear
import rpc
if getConfig("use_colors"):
from colors import *
else:
RESET = ''
BLACK = RED = GREEN = YELLOW = BLUE = MAGENTA = CYAN = WHITE = ''
BBLACK = BRED = BGREEN = BYELLOW = BBLUE = BMAGENTA = BCYAN = BWHITE = ''
ULINE = REVERSE = ''
import libinstaller
import wget
import requests
import keyboard
from zipfile import ZipFile
from daemon import main, editor, settings, clear
version = 1.4
version = 1.5
path = Path(__file__).resolve().parent
def mainMenu():
try:
os.system("title AutoZoom (Главная)")
global version
global path
rpc.inMenu()
while True:
serv_ver = requests.get("https://www.end-play.xyz/AutoZoomVersion.txt").text
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 = ' (!)'
show_version = f' ({BRED}!{RESET})'
else:
show_version = ''
#clear()
menu_choose = input(f'» Главное меню\n\n1. Запуск\n2. Редактор\n3. Настройки\n4. Обновление{show_version}\n5. Помощь и связь\n6. Закрыть приложение\n\n > ')
print(f'{BBLACK}»{RESET} Главное меню\n')
print(f' {BRED}1.{RESET} Запуск')
print(f' {BRED}2.{RESET} Редактор')
print(f' {BRED}3.{RESET} Настройки')
print(f' {BRED}4.{RESET} Обновление{show_version}')
print(f' {BRED}5.{RESET} Помощь и связь')
print(f' {BRED}6.{RESET} Закрыть приложение')
menu_choose = input(f'\n > {BRED}')
if menu_choose == '1':
main('menu')
elif menu_choose == '2':
rpc.inEditor()
editor()
elif menu_choose == '3':
rpc.inSettings()
settings()
elif menu_choose == '4':
rpc.inUpdater()
updater(serv_ver, version)
elif menu_choose == '5':
rpc.inHelp()
helpMenu()
elif menu_choose == '6':
rpc.disconnect()
clear()
sys.exit()
else:
clear()
continue
except:
except KeyboardInterrupt:
rpc.disconnect()
clear()
print(f'Закрываем приложение {BGREEN}AutoZoom{RESET}...')
sys.exit()
def os_arch():
is_64bits = sys.maxsize > 2**32
@@ -62,17 +107,26 @@ def os_arch():
def helpMenu():
try:
while True:
os.system("title AutoZoom (Помощь)")
clear()
global version
global path
help_choose = input(f'» Меню помощи\n\n1. Документация\n2. Telegram проекта\n3. Связаться с автором\n4. Сводка информации\n5. В главное меню\n\n > ')
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} В главное меню')
help_choose = input(f'\n > {BRED}')
if help_choose == '1':
try:
clear()
webbrowser.open("https://github.com/profitrollgame/autozoom/wiki")
except:
clear()
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://github.com/profitrollgame/autozoom/wiki\n\n > ')
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://github.com/profitrollgame/autozoom/wiki{RESET}\n\n > ')
clear()
elif help_choose == '2':
try:
@@ -80,7 +134,7 @@ def helpMenu():
webbrowser.open("https://t.me/auto_zoom")
except:
clear()
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://t.me/auto_zoom\n\n > ')
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/auto_zoom{RESET}\n\n > ')
clear()
elif help_choose == '3':
try:
@@ -88,44 +142,48 @@ def helpMenu():
webbrowser.open("https://t.me/profitroll")
except:
clear()
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://t.me/profitroll\n\n > ')
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/profitroll{RESET}\n\n > ')
clear()
if help_choose == '4':
clear()
print('» Информация о системе\n')
print('Система:')
print(f'ОС: {platform.system()}')
print(f'• Релиз: {platform.release()}')
print(f'• Разрядность: {os_arch()}')
print('\nPython:')
print(f'• Версия: {platform.python_version()}')
print(f'• Вариант: {platform.python_implementation()}')
print(f' Ревизия: {platform.python_revision()}')
print(f' Расположение: {sys.path[4]}')
print('\nAutoZoom:')
print(f'• Версия: {version}')
print(f'• Расположение: {path}')
print(f'{BBLACK}»{RESET} Информация о системе\n')
print(' Система:')
print(f' {BBLACK}{RESET} ОС: {YELLOW}{platform.system()}{RESET}')
print(f' {BBLACK}{RESET} Релиз: {YELLOW}{platform.release()}{RESET}')
print(f' {BBLACK}{RESET} Разрядность: {YELLOW}{os_arch()}{RESET}')
print('\n Python:')
print(f' {BBLACK}{RESET} Версия: {YELLOW}{platform.python_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} Расположение: {BRED}{path}{RESET}')
none = input('\n > ')
clear()
elif help_choose == '5':
rpc.inMenu()
clear()
os.system("title AutoZoom (Главная)")
return
else:
clear()
continue
except KeyboardInterrupt:
rpc.inMenu()
clear()
return
def updater(serv_ver, version):
try:
while True:
os.system("title AutoZoom (Обновления)")
clear()
if float(serv_ver) > float(version):
show_version = ' (!)'
show_version = f' ({BRED}!{RESET})'
serv_ver = serv_ver.rstrip('\n')
show_action = f'Обновить до {serv_ver}'
changelog_text = f'Изменения в версии {serv_ver}:'
show_action = f'Обновить до {BGREEN}{serv_ver}{RESET}'
changelog_text = f'Изменения в версии {BGREEN}{serv_ver}{RESET}:'
changelog_footer = '\nОбновитесь чтобы вышеуказанное работало.'
else:
show_version = ''
@@ -134,16 +192,29 @@ def updater(serv_ver, version):
changelog_footer = ''
updater_choose = input(f'» Меню обновлений\n\n1. {show_action}\n2. Список изменений\n3. В главное меню\n\n > ')
print(f'{BBLACK}»{RESET} Меню обновлений\n')
print(f' {BRED}1.{RESET} {show_action}')
print(f' {BRED}2.{RESET} Список изменений')
print(f' {BRED}3.{RESET} В главное меню')
updater_choose = input(f'\n > {BRED}')
if updater_choose == '1':
while True:
clear()
updater_decide = input(f'1. Установить\n2. Отменить\n\n > ')
print(f'{RESET}Подтвердите действие:\n')
print(f' {BRED}1.{RESET} Установить')
print(f' {BRED}2.{RESET} Отменить')
updater_decide = input('\n > ')
if updater_decide == '1':
clear()
wget.download('https://www.end-play.xyz/AutoZoomLatest.zip', out='AutoZoomLatest.zip')
try:
wget.download('https://www.end-play.xyz/AutoZoomLatest.zip', out='AutoZoomLatest.zip')
except:
print(f'Не удалось загрузить архив с последней версией.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
none = input('\n > ')
continue
with ZipFile('AutoZoomLatest.zip', 'r') as zipObj:
zipObj.extractall()
print('Все файлы были успешно загружены')
@@ -153,6 +224,9 @@ def updater(serv_ver, version):
clear()
none = input('Обновление завершено, перезапустите AutoZoom.\n\n > ')
rpc.disconnect()
clear()
print(f'Закрываем приложение {BGREEN}AutoZoom{RESET}...')
sys.exit()
elif updater_decide == '2':
clear()
@@ -160,26 +234,42 @@ def updater(serv_ver, version):
else:
continue
elif updater_choose == '2':
changelog = requests.get("https://www.end-play.xyz/AutoZoomChangelog.txt")
changelog.encoding = None
clear()
print(f'{changelog_text}\n')
print(changelog.text)
print(changelog_footer)
none = input('\n > ')
continue
try:
changelog = requests.get("https://www.end-play.xyz/AutoZoomChangelog.txt")
changelog.encoding = None
clear()
print(f'{RESET}{changelog_text}\n')
print(changelog.text)
print(changelog_footer)
none = input('\n > ')
continue
except:
print(f'{RESET}Не удалось загрузить чейнджлог.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
none = input('\n > ')
continue
elif updater_choose == '3':
rpc.inMenu()
clear()
os.system("title AutoZoom (Главная)")
return
else:
continue
except:
except KeyboardInterrupt:
rpc.inMenu()
clear()
return
if __name__ == '__main__':
os.system("title Загрузка main...")
from functions import getConfig
from daemon import clear
import time
clear()
mainMenu()
if getConfig("run_fullscreen"):
keyboard.press('alt, enter')
time.sleep(.25)
keyboard.release('alt, enter')
os.system("title AutoZoom (Главная)")
mainMenu()
sys.exit()

290
rpc.py Normal file
View File

@@ -0,0 +1,290 @@
# -*- coding: utf-8 -*-
import time
import os
import sys
from functions import *
version = '1.5'
import libinstaller
from pypresence import Presence
client_id = '800049969960058882'
RPC = Presence(client_id,pipe=0)
connected = False
if getConfig("use_rpc"):
try:
RPC.connect()
connected = True
except:
pass
else:
connected = False
def disconnect():
if getConfig("use_rpc"):
try:
RPC.close()
connected = False
except:
pass
def connect():
try:
RPC.connect()
connected = True
except:
pass
def reset():
if getConfig("use_rpc"):
RPC.clear()
def waitLesson(lesson, start):
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'Ждём начала «{lesson}»', details='Урок не начался', start=start)
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def onLesson(lesson, start):
try:
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)
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def inMenu():
try:
if getConfig("use_rpc"):
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='В главном меню')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def shutdown(end):
try:
if getConfig("use_rpc"):
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)
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def inSettings():
try:
if getConfig("use_rpc"):
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='В главном меню')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def inEditor():
try:
if getConfig("use_rpc"):
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='В главном меню')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def inUpdater():
try:
if getConfig("use_rpc"):
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='В главном меню')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
def inHelp():
try:
if getConfig("use_rpc"):
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='В главном меню')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
except AssertionError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
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='Режим отладки')
except AttributeError:
if getConfig("debug"):
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
time.sleep(2)
################################################################################
# Неудачная попытка работы с 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(2)
# 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': 'Ожидание',
# }
# )

BIN
sounds/recordstart.wav Normal file

Binary file not shown.

BIN
sounds/recordstop.wav Normal file

Binary file not shown.

View File

@@ -1 +1,3 @@
python main.py
echo AutoZoom needs Python 3 to work. Please read README.md!
python main.py
pause