Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
2183db0515 | |||
|
310faaf79b | ||
5206b3e2fa | |||
7598e594da | |||
747e666cf1 | |||
c8e3f64762 | |||
84d47b131c | |||
eb33215856 | |||
243e06ee0b | |||
2b50827e58 | |||
79901de58c | |||
5354e0e487 | |||
f0b5985aaa | |||
bd722212b5 | |||
3f679531f7 |
@@ -1,20 +1,19 @@
|
|||||||
Добро пожаловать в AutoZoom!
|
## Добро пожаловать в AutoZoom!
|
||||||
|
|
||||||
В этом файле описаны все шаги которые нужно выполнить для работы с программой.
|
В этом файле описаны все шаги которые нужно выполнить для работы с программой.
|
||||||
|
|
||||||
Содержание
|
### Содержание
|
||||||
№1. Описание и информация
|
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. Инструкция по установке
|
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. Инструкция по использованию
|
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. Благодарности и помощь
|
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
|
* [GitHub вики проекта](https://github.com/profitrollgame/autozoom/wiki)
|
||||||
Сообщить об ошибке/баге: https://github.com/profitrollgame/autozoom/issues
|
* [Обратная связь и предложения](https://t.me/profitroll)
|
||||||
|
* [Сообщить об ошибке/баге](https://github.com/profitrollgame/autozoom/issues)
|
||||||
|
|
||||||
-----------------------= №1 =-----------------------
|
### 1. Информация и описание программы
|
||||||
--------- Информация и описание программы ----------
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
AutoZoom создан для автоматизации присоединения к
|
AutoZoom создан для автоматизации присоединения к
|
||||||
всевозможным Zoom конференциями. С помощью этой утилиты
|
всевозможным Zoom конференциями. С помощью этой утилиты
|
||||||
@@ -30,30 +29,23 @@ AutoZoom создан для автоматизации присоединени
|
|||||||
для удобства, интереса ради или даже в шутку.
|
для удобства, интереса ради или даже в шутку.
|
||||||
|
|
||||||
|
|
||||||
----------------------= №2.1 =----------------------
|
### 2.1. Инструкция по установке
|
||||||
------------- Инструкция по установке --------------
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
1. Переложите папку
|
1. Пришло время найти место для нашей программы. Скопируйте папку из этого
|
||||||
Пришло время найти место для нашей программы. Скопируйте папку из этого
|
|
||||||
архива в любое удобное место на компьютере (если ещё этого не сделали).
|
архива в любое удобное место на компьютере (если ещё этого не сделали).
|
||||||
|
|
||||||
2. Установите Python3
|
2. Попробуйте запустить ваш `start.bat` в папке `AutoZoom`. Возможно, он сам отправит вас на страницу загрузки Python.
|
||||||
Попробуйте запустить ваш start.bat в папке AutoZoom. Возможно, он сам отправит вас на страницу загрузки Python.
|
|
||||||
Если же этого не произошло - сделать это можно вручную с официального сайта или из магазина приложений
|
Если же этого не произошло - сделать это можно вручную с официального сайта или из магазина приложений
|
||||||
Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?activetab=pivot:overviewtab&source=lp).
|
Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?activetab=pivot:overviewtab&source=lp).
|
||||||
|
|
||||||
3. Откройте редактор
|
3. Дважды нажмите на `start.bat` и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
|
||||||
Дважды нажмите на start.bat и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
|
|
||||||
удобный день. Введите все нужные данные. Название конференции, дату, время, ссылку на приглашение.
|
удобный день. Введите все нужные данные. Название конференции, дату, время, ссылку на приглашение.
|
||||||
|
|
||||||
4. Настройте вход в Zoom
|
4. Теперь самая важная часть. Установите Zoom (https://zoom.us/download) на свой ПК.
|
||||||
Теперь самая важная часть. Установите 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. Желательно убрать все ненужные сочетания сразу.
|
сначала на неё, а потом на Backspace. Желательно убрать все ненужные сочетания сразу.
|
||||||
|
|
||||||
6. Готово
|
6. Вроде как всё настроено, пришло время открыть в папке приложения файл `start.bat` двойным нажатием и всё готово.
|
||||||
Вроде как всё настроено, пришло время открыть в папке приложения файл start.bat двойным нажатием и всё готово.
|
|
||||||
После вопроса про OBS можно перейти к опциональным шагам ниже для записи конференций или же просто нажать
|
После вопроса про OBS можно перейти к опциональным шагам ниже для записи конференций или же просто нажать
|
||||||
"Н" на клавиатуре и перейти сразу к делу.
|
"Н" на клавиатуре и перейти сразу к делу.
|
||||||
|
|
||||||
|
|
||||||
----------------------= №2.2 =----------------------
|
### 2.2. Запись конференций
|
||||||
|
|
||||||
(Опционально) Запись конференций
|
С [официального сайта](https://obsproject.com/download) скачайте и установите OBS Studio для записи всех конференций.
|
||||||
|
|
||||||
С официального сайта (https://obsproject.com/download) скачайте и установите OBS Studio для записи всех конференций.
|
|
||||||
После стандартного процесса установки откройте только что установленный OBS. В вопросах мастера настойки укажите,
|
После стандартного процесса установки откройте только что установленный 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.
|
выбираем нужный микрофон и дальше снова "ОК". Замечательно, в OBS всё настроено. Двигаем в AutoZoom.
|
||||||
|
|
||||||
В случае если вы ставили свои комбинации клавиш (вместо рекомендуемых), то сейчас нужно открыть run.bat в папке
|
В случае если вы ставили свои комбинации клавиш (вместо рекомендуемых), то сейчас нужно открыть `start.bat` в папке
|
||||||
AutoZoom и выбрать пункт "Настройки". Затем выберите пункт "Начать запись" и введите желаемую комбинацию
|
AutoZoom и выбрать пункт "Настройки". Затем выберите пункт "Начать запись" и введите желаемую комбинацию
|
||||||
клавиш (например, Shift+F7), нажмите Enter. Теперь выберите пункт "Остановить запись" и снова введите комбинацию клавиш.
|
клавиш (например, `Shift+F7`), нажмите `Enter`. Теперь выберите пункт "Остановить запись" и снова введите комбинацию клавиш.
|
||||||
Желательно, чтобы комбинации были разными, дабы точно избежать сбоев, однако это не по принципиально. Чудесно, жмакаем
|
Желательно, чтобы комбинации были разными, дабы точно избежать сбоев, однако это не по принципиально. Чудесно, жмакаем
|
||||||
последний пункт здесь и в меню редактора. Движемся дальше к run.bat.
|
последний пункт здесь и в меню редактора. Движемся дальше к run.bat.
|
||||||
|
|
||||||
Открывая AutoZoom можно обнаружить, что он спрашивает хотим ли мы использовать OBS. Пишем Y или Д и жмём Enter.
|
Открывая AutoZoom можно обнаружить, что он спрашивает хотим ли мы использовать OBS. Пишем `Y` или `Д` и жмём `Enter`.
|
||||||
В появившемся окне выбираем .exe файл нашего OBS. Обычно он лежит в "C:/Program Files/obs-studio/bin/64bit/obs64.exe",
|
В появившемся окне выбираем .exe файл нашего OBS. Обычно он лежит в `C:/Program Files/obs-studio/bin/64bit/obs64.exe`,
|
||||||
но у вас может быть вместо 64bit папка 32bit, а файл obs32.exe. В случае с выбранным вами другим путём при
|
но у вас может быть вместо `64bit` папка `32bit`, а файл `obs32.exe`. В случае с выбранным вами другим путём при
|
||||||
установке – ищите файл там, куда кинули.
|
установке – ищите файл там, куда кинули.
|
||||||
|
|
||||||
|
После выбора `.exe` файла вам должно в консоль AutoZoom написать пути ядра и приложения OBS.
|
||||||
|
Они также будут храниться в файлах AutoZoom, если вдруг понадобится их изменить.
|
||||||
|
|
||||||
----------------------= №2.3 =----------------------
|
|
||||||
|
|
||||||
(Опционально) Telegram бот
|
|
||||||
|
|
||||||
|
### 2.3. Telegram бот
|
||||||
Если же вам нужно получать уведомления от бота через Telegram - такая опция тоже есть.
|
Если же вам нужно получать уведомления от бота через Telegram - такая опция тоже есть.
|
||||||
Для этого нужно создать бота через BotFather (@BotFather) командой /newbot.
|
Для этого нужно создать бота через BotFather ([@BotFather](https://t.me/botfather)) командой `/newbot`.
|
||||||
Затем вводим имя нашему боту, по сути любое которое нужно. Затем id бота чтобы оно заканчивалось на "bot" или "_bot".
|
Затем вводим имя нашему боту, по сути любое которое нужно. Затем id бота чтобы оно заканчивалось на `bot` или `_bot`.
|
||||||
|
|
||||||
После этого мы получаем HTTP API (токен бота) который вводим во время запуска AutoZoom или же перейдя в пункт
|
После этого мы получаем HTTP API (токен бота) который вводим во время запуска AutoZoom или же перейдя в пункт
|
||||||
настроек. После ввода туда токена нужно написать нашему только что созданному боту через его имя (то, что на "bot" кончается)
|
настроек. После ввода туда токена нужно написать нашему только что созданному боту через его имя (то, что на "bot" кончается)
|
||||||
номер который выдаст AutoZoom.
|
номер который выдаст AutoZoom.
|
||||||
|
|
||||||
По желанию можно введя команду /setuserpic и выбрав вашего бота ещё и сменить его аватар.
|
По желанию можно введя команду `/setuserpic` и выбрав вашего бота ещё и сменить его аватар.
|
||||||
Теперь каждый раз когда AutoZoom будет начинать работу или заходить/покидать конференцию вы сразу же получите
|
Теперь каждый раз когда AutoZoom будет начинать работу или заходить/покидать конференцию вы сразу же получите
|
||||||
сообщение в вашу личку Telegram.
|
сообщение в вашу личку Telegram.
|
||||||
|
|
||||||
|
|
||||||
-----------------------= №3 =-----------------------
|
### 3. Инструкция по использованию
|
||||||
------------ Инструкция по использованию -----------
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
У нас есть рабочая и настроенная программа, но как же этим чудом теперь пользоваться? Всё очень просто.
|
У нас есть рабочая и настроенная программа, но как же этим чудом теперь пользоваться? Всё очень просто.
|
||||||
Для начала открываем наш start.bat и тыкаем в пункт "Редактор". Там жмём "Добавить урок" и следуем шагам в приложении.
|
Для начала открываем наш `start.bat` и тыкаем в пункт "Редактор". Там жмём "Добавить урок" и следуем шагам в приложении.
|
||||||
Чтобы удалить конференцию в меню редактора можно нажать "Удалить урок" и выбрать индекс (число слева посередине каждого урока).
|
Чтобы удалить конференцию в меню редактора можно нажать "Удалить урок" и выбрать индекс (число слева посередине каждого урока).
|
||||||
Также, если вдруг что-то перенеслось, можно изменить конференции. нажав в редакторе "Изменить урок".
|
Также, если вдруг что-то перенеслось, можно изменить конференции. нажав в редакторе "Изменить урок".
|
||||||
|
|
||||||
Если нужно записать программу в автозапуск - сделать это легко.
|
Если нужно записать программу в автозапуск - сделать это легко.
|
||||||
Для этого создайте ярлык для daemon.bat или start.bat, вырежьте его и вставьте по пути автозапуска
|
Для этого создайте ярлык для `daemon.bat` или `start.bat`, вырежьте его и вставьте по пути автозапуска
|
||||||
(обычно это "C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup").
|
(обычно это `C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`).
|
||||||
Готово! Теперь при запуске компьютера через некоторое время после входа в пользователя у вас запустится AutoZoom сам. Это
|
Готово! Теперь при запуске компьютера через некоторое время после входа в пользователя у вас запустится AutoZoom сам. Это
|
||||||
может быть полезно если хочется полностью автоматизировать присоединение к конференциям.
|
может быть полезно если хочется полностью автоматизировать присоединение к конференциям.
|
||||||
|
|
||||||
Также если что-то пошло не так - можно в меню настроек сбросить все параметры до "По умолчанию".
|
Также если что-то пошло не так - можно в меню настроек сбросить все параметры до "По умолчанию".
|
||||||
|
|
||||||
|
|
||||||
-----------------------= №4 =-----------------------
|
### 4. Заключительные слова
|
||||||
--------------- Заключительные слова ---------------
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
На этом полная установка подходит к концу.
|
На этом полная установка подходит к концу.
|
||||||
Если же вы нашли ошибки – не стесняйтесь писать в Telegram мне прямо в личку (https://t.me/profitroll).
|
Если же вы нашли ошибки – оставляйте свои репорты на [GitHub](https://github.com/profitrollgame/autozoom/issues) или пишите мне в [Telegram](https://t.me/profitroll).
|
||||||
|
|
||||||
Приятного использования!
|
Приятного использования!
|
||||||
|
|
||||||
P.S.: Отдельное спасибо Kusyaka за помощь в создании сего творения.
|
P.S.: Отдельное спасибо Kusyaka за помощь в создании сего творения.
|
||||||
Без тебя, если честно, у меня бы ничего не вышло, дружище <3
|
Без тебя, если честно, у меня бы ничего не вышло, дружище <3
|
24
colors.py
Normal file
24
colors.py
Normal 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'
|
4
daemon.sh
Normal file
4
daemon.sh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Running AutoZoom daemon with Python 3. Please read README.md!"
|
||||||
|
python3 daemon.py
|
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"debug": false,
|
|
||||||
"shutdown_timeout": 30,
|
|
||||||
"shutdown_enabled": true,
|
|
||||||
"start": "shift+f7",
|
|
||||||
"stop": "shift+f8",
|
|
||||||
"telegram_enabled": false
|
|
||||||
}
|
|
179
functions.py
Normal file
179
functions.py
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
# -*- 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 = default_config
|
||||||
|
|
||||||
|
saveJson(files_folder+'config.json', temp_config_list)
|
||||||
|
return temp_config_list[some_var]
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
with open(f"{files_folder}config.json", encoding="utf-8") as json_file:
|
||||||
|
config_list = json.load(json_file)
|
||||||
|
json_file.close()
|
||||||
|
|
||||||
|
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 = default_config
|
||||||
|
|
||||||
|
saveJson(files_folder+'config.json', temp_config_list)
|
||||||
|
return temp_config_list[some_var]
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
with open(f"{files_folder}config.json", encoding="utf-8") as json_file:
|
||||||
|
config_list = json.load(json_file)
|
||||||
|
json_file.close()
|
||||||
|
|
||||||
|
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)
|
||||||
|
f.close()
|
143
libinstaller.py
Normal file
143
libinstaller.py
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os, sys
|
||||||
|
from colors import *
|
||||||
|
from functions import getConfig
|
||||||
|
from functions import appendLog
|
||||||
|
|
||||||
|
# Работает не очень стабильно при отсутствии интернета
|
||||||
|
# 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:
|
||||||
|
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("Не хватает нужных модулей, пробуем установить...\nЭто может занять некоторое время. Пожалуйста, не закрывайте программу.")
|
||||||
|
appendLog('Missing some modules, trying to install them')
|
||||||
|
|
||||||
|
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}.")
|
||||||
|
|
||||||
|
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:
|
||||||
|
import easygui
|
||||||
|
import tkinter
|
||||||
|
import keyboard
|
||||||
|
import ast
|
||||||
|
import inputimeout
|
||||||
|
import telegram_send
|
||||||
|
import wget
|
||||||
|
import requests
|
||||||
|
import playsound
|
||||||
|
import asyncio
|
||||||
|
import getpass
|
||||||
|
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#############################################################################")
|
||||||
|
#########################################################
|
289
main.py
289
main.py
@@ -1,55 +1,121 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
import pip
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
import platform
|
import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
from daemon import install
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
install('wget')
|
from functions import *
|
||||||
install('zipfile')
|
|
||||||
install('requests')
|
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 wget
|
||||||
import requests
|
import requests
|
||||||
|
import keyboard
|
||||||
|
import getpass
|
||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
from daemon import main, editor, settings, clear
|
|
||||||
|
|
||||||
version = 1.4
|
version = 2.0
|
||||||
path = Path(__file__).resolve().parent
|
path = Path(__file__).resolve().parent
|
||||||
|
|
||||||
def mainMenu():
|
def mainMenu():
|
||||||
try:
|
try:
|
||||||
|
os.system("title AutoZoom (Главная)")
|
||||||
|
|
||||||
global version
|
global version
|
||||||
global path
|
global path
|
||||||
|
|
||||||
while True:
|
appendLog('Main menu opened')
|
||||||
serv_ver = requests.get("https://www.end-play.xyz/AutoZoomVersion.txt").text
|
rpc.inMenu()
|
||||||
if float(serv_ver) > float(version):
|
|
||||||
show_version = ' (!)'
|
|
||||||
else:
|
|
||||||
show_version = ''
|
|
||||||
|
|
||||||
#clear()
|
while True:
|
||||||
menu_choose = input(f'» Главное меню\n\n1. Запуск\n2. Редактор\n3. Настройки\n4. Обновление{show_version}\n5. Помощь и связь\n6. Закрыть приложение\n\n > ')
|
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} Редактор')
|
||||||
|
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}')
|
||||||
|
print(RESET)
|
||||||
|
|
||||||
if menu_choose == '1':
|
if menu_choose == '1':
|
||||||
|
appendLog('Went to daemon')
|
||||||
main('menu')
|
main('menu')
|
||||||
elif menu_choose == '2':
|
elif menu_choose == '2':
|
||||||
|
appendLog('Went to editor')
|
||||||
|
rpc.inEditor()
|
||||||
editor()
|
editor()
|
||||||
elif menu_choose == '3':
|
elif menu_choose == '3':
|
||||||
|
appendLog('Went to settings')
|
||||||
|
rpc.inSettings()
|
||||||
settings()
|
settings()
|
||||||
elif menu_choose == '4':
|
elif menu_choose == '4':
|
||||||
|
appendLog('Went to updater')
|
||||||
|
rpc.inUpdater()
|
||||||
updater(serv_ver, version)
|
updater(serv_ver, version)
|
||||||
elif menu_choose == '5':
|
elif menu_choose == '5':
|
||||||
|
appendLog('Went to help')
|
||||||
|
rpc.inHelp()
|
||||||
helpMenu()
|
helpMenu()
|
||||||
elif menu_choose == '6':
|
elif menu_choose == '6':
|
||||||
|
appendLog('Exited AutoZoom')
|
||||||
|
rpc.disconnect()
|
||||||
clear()
|
clear()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
else:
|
else:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
except:
|
except KeyboardInterrupt:
|
||||||
|
rpc.disconnect()
|
||||||
clear()
|
clear()
|
||||||
|
print(f'Закрываем приложение {BGREEN}AutoZoom{RESET}...')
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
def os_arch():
|
def os_arch():
|
||||||
is_64bits = sys.maxsize > 2**32
|
is_64bits = sys.maxsize > 2**32
|
||||||
@@ -62,71 +128,123 @@ def os_arch():
|
|||||||
def helpMenu():
|
def helpMenu():
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
|
os.system("title AutoZoom (Помощь)")
|
||||||
|
appendLog('Help menu opened')
|
||||||
clear()
|
clear()
|
||||||
global version
|
global version
|
||||||
global path
|
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} Сайт проекта')
|
||||||
|
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':
|
if help_choose == '1':
|
||||||
try:
|
try:
|
||||||
clear()
|
clear()
|
||||||
|
appendLog('Opened AutoZoom wiki')
|
||||||
webbrowser.open("https://github.com/profitrollgame/autozoom/wiki")
|
webbrowser.open("https://github.com/profitrollgame/autozoom/wiki")
|
||||||
except:
|
except Exception as exp:
|
||||||
clear()
|
clear()
|
||||||
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://github.com/profitrollgame/autozoom/wiki\n\n > ')
|
appendLog(f'Failed to open AutoZoom wiki: {exp}')
|
||||||
|
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://github.com/profitrollgame/autozoom/wiki{RESET}\n\n > ')
|
||||||
clear()
|
clear()
|
||||||
elif help_choose == '2':
|
elif help_choose == '2':
|
||||||
try:
|
try:
|
||||||
clear()
|
clear()
|
||||||
webbrowser.open("https://t.me/auto_zoom")
|
appendLog('Opened AutoZoom website')
|
||||||
except:
|
webbrowser.open("https://www.end-play.xyz/autozoom")
|
||||||
|
except Exception as exp:
|
||||||
clear()
|
clear()
|
||||||
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://t.me/auto_zoom\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()
|
clear()
|
||||||
elif help_choose == '3':
|
elif help_choose == '3':
|
||||||
try:
|
try:
|
||||||
clear()
|
clear()
|
||||||
webbrowser.open("https://t.me/profitroll")
|
appendLog('Opened AutoZoom support center')
|
||||||
except:
|
webbrowser.open("https://www.tidio.com/talk/ydqcvfvgkud3jjk2482uaesvjpeohlh3")
|
||||||
|
except Exception as exp:
|
||||||
clear()
|
clear()
|
||||||
none = input('Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: https://t.me/profitroll\n\n > ')
|
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()
|
clear()
|
||||||
if help_choose == '4':
|
elif help_choose == '4':
|
||||||
clear()
|
try:
|
||||||
print('» Информация о системе\n')
|
clear()
|
||||||
print('Система:')
|
appendLog('Opened AutoZoom Telegram group')
|
||||||
print(f'• ОС: {platform.system()}')
|
webbrowser.open("https://t.me/auto_zoom")
|
||||||
print(f'• Релиз: {platform.release()}')
|
except Exception as exp:
|
||||||
print(f'• Разрядность: {os_arch()}')
|
clear()
|
||||||
print('\nPython:')
|
appendLog(f'Failed to open AutoZoom Telegram group: {exp}')
|
||||||
print(f'• Версия: {platform.python_version()}')
|
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/auto_zoom{RESET}\n\n > ')
|
||||||
print(f'• Вариант: {platform.python_implementation()}')
|
|
||||||
print(f'• Ревизия: {platform.python_revision()}')
|
|
||||||
print(f'• Расположение: {sys.path[4]}')
|
|
||||||
print('\nAutoZoom:')
|
|
||||||
print(f'• Версия: {version}')
|
|
||||||
print(f'• Расположение: {path}')
|
|
||||||
none = input('\n > ')
|
|
||||||
clear()
|
clear()
|
||||||
elif help_choose == '5':
|
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()
|
clear()
|
||||||
|
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}')
|
||||||
|
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} Версия 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 == '7':
|
||||||
|
rpc.inMenu()
|
||||||
|
clear()
|
||||||
|
os.system("title AutoZoom (Главная)")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
def updater(serv_ver, version):
|
def updater(serv_ver, version):
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
|
os.system("title AutoZoom (Обновления)")
|
||||||
|
appendLog('Updater menu opened')
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
if float(serv_ver) > float(version):
|
if float(serv_ver) > float(version):
|
||||||
show_version = ' (!)'
|
show_version = f' ({BRED}!{RESET})'
|
||||||
serv_ver = serv_ver.rstrip('\n')
|
serv_ver = serv_ver.rstrip('\n')
|
||||||
show_action = f'Обновить до {serv_ver}'
|
show_action = f'Обновить до {BGREEN}{serv_ver}{RESET}'
|
||||||
changelog_text = f'Изменения в версии {serv_ver}:'
|
changelog_text = f'Изменения в версии {BGREEN}{serv_ver}{RESET}:'
|
||||||
changelog_footer = '\nОбновитесь чтобы вышеуказанное работало.'
|
changelog_footer = '\nОбновитесь чтобы вышеуказанное работало.'
|
||||||
|
elif serv_ver == 'disabled':
|
||||||
|
show_version = ''
|
||||||
|
show_action = f'Переустановить'
|
||||||
|
changelog_text = f'Изменения в вашей версии:'
|
||||||
|
changelog_footer = ''
|
||||||
else:
|
else:
|
||||||
show_version = ''
|
show_version = ''
|
||||||
show_action = f'Переустановить'
|
show_action = f'Переустановить'
|
||||||
@@ -134,52 +252,103 @@ def updater(serv_ver, version):
|
|||||||
changelog_footer = ''
|
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':
|
if updater_choose == '1':
|
||||||
|
appendLog('Choosed to update')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
clear()
|
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':
|
if updater_decide == '1':
|
||||||
|
appendLog('Trying to update AutoZoom')
|
||||||
clear()
|
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')
|
||||||
|
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:
|
with ZipFile('AutoZoomLatest.zip', 'r') as zipObj:
|
||||||
zipObj.extractall()
|
zipObj.extractall()
|
||||||
print('Все файлы были успешно загружены')
|
print('Все файлы были успешно загружены')
|
||||||
|
appendLog('Latest zip extracted')
|
||||||
|
|
||||||
if os.path.exists("AutoZoomLatest.zip"):
|
if os.path.exists("AutoZoomLatest.zip"):
|
||||||
os.remove("AutoZoomLatest.zip")
|
os.remove("AutoZoomLatest.zip")
|
||||||
|
appendLog('Latest used zip deleted')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
none = input('Обновление завершено, перезапустите AutoZoom.\n\n > ')
|
none = input('Обновление завершено, перезапустите AutoZoom.\n\n > ')
|
||||||
|
rpc.disconnect()
|
||||||
|
clear()
|
||||||
|
print(f'Закрываем приложение {BGREEN}AutoZoom{RESET}...')
|
||||||
|
appendLog('Exiting AutoZoom after an update')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
elif updater_decide == '2':
|
elif updater_decide == '2':
|
||||||
clear()
|
clear()
|
||||||
|
appendLog('Aborted update')
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif updater_choose == '2':
|
elif updater_choose == '2':
|
||||||
changelog = requests.get("https://www.end-play.xyz/AutoZoomChangelog.txt")
|
appendLog('Choosed to check changelog')
|
||||||
changelog.encoding = None
|
try:
|
||||||
clear()
|
changelog = requests.get("https://www.end-play.xyz/AutoZoomChangelog.txt")
|
||||||
print(f'{changelog_text}\n')
|
changelog.encoding = None
|
||||||
print(changelog.text)
|
appendLog('Changelog loaded')
|
||||||
print(changelog_footer)
|
clear()
|
||||||
|
print(f'{RESET}{changelog_text}\n')
|
||||||
none = input('\n > ')
|
print(changelog.text)
|
||||||
continue
|
print(changelog_footer)
|
||||||
|
none = input('\n > ')
|
||||||
|
continue
|
||||||
|
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':
|
elif updater_choose == '3':
|
||||||
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
|
appendLog('Returning to main menu')
|
||||||
|
os.system("title AutoZoom (Главная)")
|
||||||
return
|
return
|
||||||
|
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
except:
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
os.system("title Загрузка main...")
|
||||||
|
from functions import getConfig
|
||||||
from daemon import clear
|
from daemon import clear
|
||||||
|
import time
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
mainMenu()
|
if getConfig("run_fullscreen"):
|
||||||
|
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
|
229
rpc.py
Normal file
229
rpc.py
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from colors import *
|
||||||
|
from functions import *
|
||||||
|
|
||||||
|
version = '2.0'
|
||||||
|
|
||||||
|
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():
|
||||||
|
global connected
|
||||||
|
|
||||||
|
if getConfig("use_rpc"):
|
||||||
|
try:
|
||||||
|
RPC.close()
|
||||||
|
connected = False
|
||||||
|
appendLog('Discord RPC disconnected')
|
||||||
|
except:
|
||||||
|
appendLog('Discord RPC failed to disconnect')
|
||||||
|
|
||||||
|
def connect():
|
||||||
|
global connected
|
||||||
|
|
||||||
|
try:
|
||||||
|
RPC.connect()
|
||||||
|
connected = True
|
||||||
|
appendLog('Discord RPC connected')
|
||||||
|
except:
|
||||||
|
appendLog('Discord RPC failed to connect')
|
||||||
|
|
||||||
|
def reset():
|
||||||
|
if getConfig("use_rpc"):
|
||||||
|
RPC.clear()
|
||||||
|
appendLog('Discord RPC status cleared')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
|
||||||
|
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='В главном меню')
|
||||||
|
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)
|
||||||
|
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
|
||||||
|
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='В главном меню')
|
||||||
|
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)
|
||||||
|
|
||||||
|
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='В главном меню')
|
||||||
|
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)
|
||||||
|
|
||||||
|
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='В главном меню')
|
||||||
|
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)
|
||||||
|
|
||||||
|
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='В главном меню')
|
||||||
|
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)
|
BIN
sounds/recordstart.wav
Normal file
BIN
sounds/recordstart.wav
Normal file
Binary file not shown.
BIN
sounds/recordstop.wav
Normal file
BIN
sounds/recordstop.wav
Normal file
Binary file not shown.
@@ -1 +1,3 @@
|
|||||||
python main.py
|
echo AutoZoom needs Python 3 to work. Please read README.md!
|
||||||
|
python main.py
|
||||||
|
pause
|
Reference in New Issue
Block a user