Compare commits
12 Commits
Author | SHA1 | Date |
---|---|---|
Profitroll | c0076bf5aa | |
Profitroll | 09a3d66656 | |
Profitroll | 504b748789 | |
Profitroll | fe0a1a5202 | |
Profitroll | 4aa988f236 | |
Profitroll | 3cb46f2b26 | |
Profitroll | 0cdf5d8ce1 | |
Profitroll | 25bf0064b7 | |
Profitroll | 363de17c08 | |
Profitroll | 66ec64fa30 | |
Profitroll | a573edc03a | |
Profitroll | 5d2da989d6 |
|
@ -39,9 +39,15 @@ AutoZoom создан для автоматизации присоединени
|
||||||
2. Попробуйте запустить ваш `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).
|
Microsoft Store (https://www.microsoft.com/ru-ru/p/python-37/9nj46sx7x90p?activetab=pivot:overviewtab&source=lp).
|
||||||
|
В случае установки без MS Store - достаточно скачать инсталлер с оф. сайта Python (https://www.python.org/downloads/).
|
||||||
|
Для установки на Linux необходимо использовать стандартный менеджер пакетов (apt, yum, rpm и т.д.)
|
||||||
|
Инструкции по установке версий Python3 на Linux вы можете самостоятельно в зависимости от дистрибутива
|
||||||
|
и желаемой к установке версии Python3.
|
||||||
|
Для установки на Android (в данном случае - внутри Termux) нужно ввести `pkg install python`.
|
||||||
|
|
||||||
3. Дважды нажмите на `start.bat` и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
|
3. Дважды нажмите на `start.bat` и выберите пункт "Редактор" чтобы редактировать ваши уроки на любой
|
||||||
удобный день. Введите все нужные данные. Название конференции, дату, время, ссылку на приглашение.
|
удобный день. Введите все нужные данные. Название конференции, дату, время, ссылку на приглашение.
|
||||||
|
В случае установки на Linux/Android - скрипт запуска будет `start.sh` и его можно запустить через `bash ./start.sh`
|
||||||
|
|
||||||
4. Теперь самая важная часть. Установите Zoom (https://zoom.us/download) на свой ПК.
|
4. Теперь самая важная часть. Установите Zoom (https://zoom.us/download) на свой ПК.
|
||||||
Запустите его и зарегистрируйтесь/войдите в аккаунт. При входе ОБЯЗАТЕЛЬНО
|
Запустите его и зарегистрируйтесь/войдите в аккаунт. При входе ОБЯЗАТЕЛЬНО
|
||||||
|
@ -143,4 +149,4 @@ AutoZoom и выбрать пункт "Настройки". Затем выбе
|
||||||
Приятного использования!
|
Приятного использования!
|
||||||
|
|
||||||
P.S.: Отдельное спасибо Kusyaka за помощь в создании сего творения.
|
P.S.: Отдельное спасибо Kusyaka за помощь в создании сего творения.
|
||||||
Без тебя, если честно, у меня бы ничего не вышло, дружище <3
|
Без тебя, если честно, у меня бы ничего не вышло, дружище <3
|
164
daemon.py
164
daemon.py
|
@ -44,12 +44,6 @@ import ast
|
||||||
import inputimeout
|
import inputimeout
|
||||||
import telegram_send
|
import telegram_send
|
||||||
|
|
||||||
if getOS() == "windows":
|
|
||||||
import winsound
|
|
||||||
from playsound import playsound
|
|
||||||
else:
|
|
||||||
from playsound import playsound
|
|
||||||
|
|
||||||
menu_choose = None
|
menu_choose = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -61,12 +55,12 @@ except Exception as exp:
|
||||||
|
|
||||||
def nowtime(seconds=True, noice=True, color=True):
|
def nowtime(seconds=True, noice=True, color=True):
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
if seconds == True:
|
if seconds:
|
||||||
justnow = now.strftime("%H:%M:%S")
|
justnow = now.strftime("%H:%M:%S")
|
||||||
else:
|
else:
|
||||||
justnow = now.strftime("%H:%M")
|
justnow = now.strftime("%H:%M")
|
||||||
|
|
||||||
if noice == True:
|
if noice:
|
||||||
if not color:
|
if not color:
|
||||||
beautiful = f'[{justnow}]'
|
beautiful = f'[{justnow}]'
|
||||||
else:
|
else:
|
||||||
|
@ -76,7 +70,7 @@ def nowtime(seconds=True, noice=True, color=True):
|
||||||
beautiful = f'{justnow}'
|
beautiful = f'{justnow}'
|
||||||
else:
|
else:
|
||||||
beautiful = f'{CYAN}{justnow}{RESET}'
|
beautiful = f'{CYAN}{justnow}{RESET}'
|
||||||
|
|
||||||
return beautiful
|
return beautiful
|
||||||
|
|
||||||
def act(x):
|
def act(x):
|
||||||
|
@ -89,7 +83,7 @@ def waitStart(runTime, action):
|
||||||
startTime = time(*(map(int, runTime.split(':'))))
|
startTime = time(*(map(int, runTime.split(':'))))
|
||||||
while startTime > datetime.today().time():
|
while startTime > datetime.today().time():
|
||||||
sleep(2)
|
sleep(2)
|
||||||
|
|
||||||
return action
|
return action
|
||||||
|
|
||||||
def getPair(line):
|
def getPair(line):
|
||||||
|
@ -103,15 +97,15 @@ def getLessons():
|
||||||
f.write("[]")
|
f.write("[]")
|
||||||
f.close()
|
f.close()
|
||||||
lessons_list = []
|
lessons_list = []
|
||||||
|
|
||||||
appendLog(f'Created lessons.json')
|
appendLog(f'Created lessons.json')
|
||||||
else:
|
else:
|
||||||
with open(files_folder+'lessons.json', encoding="utf-8") as json_file:
|
with open(files_folder+'lessons.json', encoding="utf-8") as json_file:
|
||||||
lessons_list = json.load(json_file)
|
lessons_list = json.load(json_file)
|
||||||
json_file.close()
|
json_file.close()
|
||||||
|
|
||||||
appendLog('File lessons.json loaded')
|
appendLog('File lessons.json loaded')
|
||||||
|
|
||||||
return lessons_list
|
return lessons_list
|
||||||
|
|
||||||
|
|
||||||
|
@ -128,7 +122,7 @@ def tgsend(enabled, message):
|
||||||
|
|
||||||
except Exception as excep:
|
except Exception as excep:
|
||||||
appendLog(f'Failed to send TG message "{message}": {exp}')
|
appendLog(f'Failed to send TG message "{message}": {exp}')
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
print(f'{nowtime()} Не удалось отправить Telegram сообщение "{message}" (Ошибка: {exp})')
|
print(f'{nowtime()} Не удалось отправить Telegram сообщение "{message}" (Ошибка: {exp})')
|
||||||
|
|
||||||
|
|
||||||
|
@ -147,7 +141,7 @@ def main(source='deamon'):
|
||||||
except:
|
except:
|
||||||
profilename = ''
|
profilename = ''
|
||||||
pass
|
pass
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -206,14 +200,14 @@ def main(source='deamon'):
|
||||||
elif obs_choice.lower() in no_list:
|
elif obs_choice.lower() in no_list:
|
||||||
setConfig("obs_exe", "Disabled")
|
setConfig("obs_exe", "Disabled")
|
||||||
setConfig("obs_core", "Disabled")
|
setConfig("obs_core", "Disabled")
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
break
|
break
|
||||||
|
|
||||||
else:
|
else:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not os.path.exists(files_folder+'telegram.conf'):
|
if not os.path.exists(files_folder+'telegram.conf'):
|
||||||
clear()
|
clear()
|
||||||
tg_choice = input(f'{RESET}Хотите использовать Telegram бота? {RESET}({BGREEN}Да{RESET}/{BRED}Нет{RESET}): ')
|
tg_choice = input(f'{RESET}Хотите использовать Telegram бота? {RESET}({BGREEN}Да{RESET}/{BRED}Нет{RESET}): ')
|
||||||
|
@ -224,7 +218,7 @@ def main(source='deamon'):
|
||||||
print(f'чтобы хорошо понимать что сейчас от вас нужно.')
|
print(f'чтобы хорошо понимать что сейчас от вас нужно.')
|
||||||
none = input('\n > ')
|
none = input('\n > ')
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
|
@ -235,16 +229,16 @@ def main(source='deamon'):
|
||||||
appendLog(f'Failed to configure Telegram Send: {exp}')
|
appendLog(f'Failed to configure Telegram Send: {exp}')
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
telegram_send.send(messages=[f"🎊 Конфигурация правильна, всё работает!"], parse_mode="markdown", conf=f"{files_folder}telegram.conf")
|
telegram_send.send(messages=[f"🎊 Конфигурация правильна, всё работает!"], parse_mode="markdown", conf=f"{files_folder}telegram.conf")
|
||||||
appendLog('Telegram Send successfully configured')
|
appendLog('Telegram Send successfully configured')
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
elif tg_choice.lower() in no_list:
|
elif tg_choice.lower() in no_list:
|
||||||
with open(files_folder+'telegram.conf', 'w', encoding="utf-8") as f:
|
with open(files_folder+'telegram.conf', 'w', encoding="utf-8") as f:
|
||||||
f.write('Not Configured')
|
f.write('Not Configured')
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
lessons_count = 0
|
lessons_count = 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -273,7 +267,26 @@ def main(source='deamon'):
|
||||||
|
|
||||||
today = date.today().strftime("%d.%m.%Y")
|
today = date.today().strftime("%d.%m.%Y")
|
||||||
|
|
||||||
if (today == lesson_date) or (getDayNum(today) == lesson_repeat_day):
|
diff = ((datetime.strptime(today, "%d.%m.%Y") - datetime.strptime(lesson_date, "%d.%m.%Y")).days)
|
||||||
|
|
||||||
|
if getConfig("debug"):
|
||||||
|
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET}: Разница дней {BRED}{diff}{RESET}, Повторение {BRED}{lesson_repeat}{RESET}.')
|
||||||
|
|
||||||
|
if diff > 0 and not lesson_repeat:
|
||||||
|
|
||||||
|
if getConfig("remove_old"):
|
||||||
|
|
||||||
|
del lessons_list[lessons_list.index(les)]
|
||||||
|
|
||||||
|
saveJson(files_folder+'lessons.json', lessons_list)
|
||||||
|
appendLog(f'Old lesson named {lesson_name} removed')
|
||||||
|
|
||||||
|
if getConfig("debug"):
|
||||||
|
print(f'{nowtime()} Старая конференция {CYAN}{lesson_name}{RESET} за {CYAN}{lesson_date} {RESET}в {BRED}{lesson_time}{RESET} удалена.')
|
||||||
|
|
||||||
|
lessons_list = getLessons()
|
||||||
|
|
||||||
|
elif (today == lesson_date) or (getDayNum(today) == lesson_repeat_day):
|
||||||
print(f'{BBLACK}================================================{RESET}\n')
|
print(f'{BBLACK}================================================{RESET}\n')
|
||||||
|
|
||||||
print(f'{nowtime()} Найдена конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET}. Ждём начала...')
|
print(f'{nowtime()} Найдена конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET}. Ждём начала...')
|
||||||
|
@ -295,14 +308,14 @@ def main(source='deamon'):
|
||||||
while i < 10:
|
while i < 10:
|
||||||
lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
lesson_url = lesson_url.replace("&", "^&")
|
lesson_url = lesson_url.replace("&", "^&")
|
||||||
lesson_url = lesson_url.replace("?pwd", "^&pwd")
|
lesson_url = lesson_url.replace("?pwd", "^&pwd")
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Ориг. ссылка: {BRED}{lesson_url_original}{RESET}')
|
print(f'{nowtime()} Ориг. ссылка: {BRED}{lesson_url_original}{RESET}')
|
||||||
print(f'{nowtime()} Измен. ссылка: {BRED}{lesson_url}{RESET}')
|
print(f'{nowtime()} Измен. ссылка: {BRED}{lesson_url}{RESET}')
|
||||||
|
|
||||||
appendLog(f'Replaced link {lesson_url_original} with {lesson_url}')
|
appendLog(f'Replaced link {lesson_url_original} with {lesson_url}')
|
||||||
|
|
||||||
os.system(f'start {lesson_url}')
|
os.system(f'start {lesson_url}')
|
||||||
|
@ -311,7 +324,7 @@ def main(source='deamon'):
|
||||||
|
|
||||||
if i == 0:
|
if i == 0:
|
||||||
lesson_url = lesson_url.replace(f"https://zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
lesson_url = lesson_url.replace(f"https://zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
||||||
|
|
||||||
while i < 10:
|
while i < 10:
|
||||||
lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=")
|
||||||
i += 1
|
i += 1
|
||||||
|
@ -321,7 +334,7 @@ def main(source='deamon'):
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Ориг. ссылка: {BRED}{lesson_url_original}{RESET}')
|
print(f'{nowtime()} Ориг. ссылка: {BRED}{lesson_url_original}{RESET}')
|
||||||
print(f'{nowtime()} Измен. ссылка: {BRED}{lesson_url}{RESET}')
|
print(f'{nowtime()} Измен. ссылка: {BRED}{lesson_url}{RESET}')
|
||||||
|
|
||||||
appendLog(f'Replaced link {lesson_url_original} with {lesson_url}')
|
appendLog(f'Replaced link {lesson_url_original} with {lesson_url}')
|
||||||
|
|
||||||
if sysname == "android":
|
if sysname == "android":
|
||||||
|
@ -344,7 +357,7 @@ def main(source='deamon'):
|
||||||
if easteregg_number == 69420:
|
if easteregg_number == 69420:
|
||||||
appendLog('Easteregg summoned')
|
appendLog('Easteregg summoned')
|
||||||
webbrowser.open('https://www.pornhub.com/view_video.php?viewkey=ph5f3eb1e206aa8')
|
webbrowser.open('https://www.pornhub.com/view_video.php?viewkey=ph5f3eb1e206aa8')
|
||||||
|
|
||||||
print(f'{nowtime()} Ждём {BRED}10 секунд{RESET} до отслеживания Zoom...')
|
print(f'{nowtime()} Ждём {BRED}10 секунд{RESET} до отслеживания Zoom...')
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
|
@ -361,23 +374,23 @@ def main(source='deamon'):
|
||||||
|
|
||||||
if retries == 1:
|
if retries == 1:
|
||||||
appendLog('Lesson delay found')
|
appendLog('Lesson delay found')
|
||||||
|
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
retries += 1
|
retries += 1
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
if retries == 2:
|
if retries == 2:
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* обнаружена {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* обнаружена {profilename}")
|
||||||
|
|
||||||
if retries == 36:
|
if retries == 36:
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 3 минуты {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 3 минуты {profilename}")
|
||||||
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}3{RESET} минуты')
|
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}3{RESET} минуты')
|
||||||
appendLog(f'Lesson delay exceeded: {retries} retries')
|
appendLog(f'Lesson delay exceeded: {retries} retries')
|
||||||
|
|
||||||
if retries == 120:
|
if retries == 120:
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 10 минут {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 10 минут {profilename}")
|
||||||
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}10{RESET} минут')
|
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}10{RESET} минут')
|
||||||
appendLog(f'Lesson delay exceeded: {retries} retries')
|
appendLog(f'Lesson delay exceeded: {retries} retries')
|
||||||
|
@ -385,17 +398,17 @@ def main(source='deamon'):
|
||||||
if retries == 360:
|
if retries == 360:
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 30 минут, конференция сбошена {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 30 минут, конференция сбошена {profilename}")
|
||||||
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}30{RESET} минут, конференция сброшена')
|
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}30{RESET} минут, конференция сброшена')
|
||||||
else:
|
else:
|
||||||
playSound("warning", nowtime())
|
playSound(getConfig("sound_warning"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 30 минут, конференция сбошена {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"⚠ Задержка конференции *{lesson_name}* превысила 30 минут, конференция сбошена {profilename}")
|
||||||
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}30{RESET} минут, конференция сброшена')
|
print(f'{nowtime()} Задержка конференции {CYAN}{lesson_name}{RESET} превысила {BRED}30{RESET} минут, конференция сброшена')
|
||||||
|
|
||||||
appendLog(f'Lesson delay exceeded: {retries} retries')
|
appendLog(f'Lesson delay exceeded: {retries} retries')
|
||||||
|
|
||||||
playSound("ended", nowtime())
|
playSound(getConfig("sound_ended"), nowtime())
|
||||||
|
|
||||||
if lesson_obs:
|
if lesson_obs:
|
||||||
|
|
||||||
|
@ -410,17 +423,17 @@ def main(source='deamon'):
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Не удалось остановить процесс OBS.')
|
print(f'{nowtime()} Не удалось остановить процесс OBS.')
|
||||||
|
|
||||||
if not lesson_repeat:
|
if not lesson_repeat:
|
||||||
del lessons_list[lessons_list.index(les)]
|
del lessons_list[lessons_list.index(les)]
|
||||||
|
|
||||||
saveJson(files_folder+'lessons.json', lessons_list)
|
saveJson(files_folder+'lessons.json', lessons_list)
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
||||||
|
|
||||||
print(f'\n{BBLACK}================================================{RESET}\n\n')
|
print(f'\n{BBLACK}================================================{RESET}\n\n')
|
||||||
|
|
||||||
firstshow = True
|
firstshow = True
|
||||||
|
|
||||||
lessons_count = lessons_count+1
|
lessons_count = lessons_count+1
|
||||||
|
@ -437,7 +450,7 @@ def main(source='deamon'):
|
||||||
try:
|
try:
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Импортированы клавиши старта и остановки записи ({YELLOW}{getConfig("start")}{RESET} и {YELLOW}{getConfig("stop")}{RESET}).')
|
print(f'{nowtime()} Импортированы клавиши старта и остановки записи ({YELLOW}{getConfig("start")}{RESET} и {YELLOW}{getConfig("stop")}{RESET}).')
|
||||||
|
|
||||||
start = getConfig("start")
|
start = getConfig("start")
|
||||||
stop = getConfig("stop")
|
stop = getConfig("stop")
|
||||||
except:
|
except:
|
||||||
|
@ -462,7 +475,7 @@ def main(source='deamon'):
|
||||||
|
|
||||||
setTitle(f'Идёт конференция "{lesson_name}"', sysname)
|
setTitle(f'Идёт конференция "{lesson_name}"', sysname)
|
||||||
|
|
||||||
playSound("started", nowtime())
|
playSound(getConfig("sound_started"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"▶ Зашёл на конференцию *{lesson_name}* в *{nowtime(False, False, False)}* {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"▶ Зашёл на конференцию *{lesson_name}* в *{nowtime(False, False, False)}* {profilename}")
|
||||||
|
|
||||||
appendLog(f'Joined lesson {lesson_name} at {nowtime(False, False, False)}')
|
appendLog(f'Joined lesson {lesson_name} at {nowtime(False, False, False)}')
|
||||||
|
@ -473,14 +486,14 @@ def main(source='deamon'):
|
||||||
try:
|
try:
|
||||||
obs_process = subprocess.Popen(getConfig("obs_exe"), cwd=getConfig("obs_core"))
|
obs_process = subprocess.Popen(getConfig("obs_exe"), cwd=getConfig("obs_core"))
|
||||||
appendLog(f'Sent instruction to open OBS')
|
appendLog(f'Sent instruction to open OBS')
|
||||||
time.sleep(5)
|
time.sleep(getConfig("obs_delay"))
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
appendLog(f'Failed to open OBS: {exp}')
|
appendLog(f'Failed to open OBS: {exp}')
|
||||||
print(f'{nowtime()} Не удалось открыть OBS для записи.')
|
print(f'{nowtime()} Не удалось открыть OBS для записи.')
|
||||||
else:
|
else:
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Не включаем OBS для записи.')
|
print(f'{nowtime()} Не включаем OBS для записи.')
|
||||||
|
|
||||||
firstshow = False
|
firstshow = False
|
||||||
|
|
||||||
if lesson_obs:
|
if lesson_obs:
|
||||||
|
@ -490,13 +503,13 @@ def main(source='deamon'):
|
||||||
keyboard.release(start)
|
keyboard.release(start)
|
||||||
record_now = True
|
record_now = True
|
||||||
print(f'{nowtime()} Сигнал записи OBS отправлен.')
|
print(f'{nowtime()} Сигнал записи OBS отправлен.')
|
||||||
playSound("recordstart", nowtime())
|
playSound(getConfig("sound_recordstart"), nowtime())
|
||||||
|
|
||||||
lesson_duration = (datetime.now() - lesson_start).total_seconds()
|
lesson_duration = (datetime.now() - lesson_start).total_seconds()
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Zoom подключён. Конференция идёт уже {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(round(lesson_duration/60, 2))} мин{RESET}.)')
|
print(f'{nowtime()} Zoom подключён. Конференция идёт уже {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(round(lesson_duration/60, 2))} мин{RESET}.)')
|
||||||
|
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
@ -505,34 +518,34 @@ def main(source='deamon'):
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} {BRED}Конференция не обнаружена! {RESET}Повторная проверка через {BRED}10 {RESET}секунд...')
|
print(f'{nowtime()} {BRED}Конференция не обнаружена! {RESET}Повторная проверка через {BRED}10 {RESET}секунд...')
|
||||||
|
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Zoom отключился. Процесс {BRED}CptHost.exe{RESET} более не существует.')
|
print(f'{nowtime()} Zoom отключился. Процесс {BRED}CptHost.exe{RESET} более не существует.')
|
||||||
|
|
||||||
appendLog(f'CptHost.exe not found, Zoom disconnected')
|
appendLog(f'CptHost.exe not found, Zoom disconnected')
|
||||||
|
|
||||||
setTitle(f'Конференция "{lesson_name}" завершилась', sysname)
|
setTitle(f'Конференция "{lesson_name}" завершилась', sysname)
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
tgsend(getConfig("telegram_enabled"), f"◀ Конференция *{lesson_name}* длилась *{str(round(lesson_duration/60, 2))}* мин.")
|
tgsend(getConfig("telegram_enabled"), f"◀ Конференция *{lesson_name}* длилась *{str(round(lesson_duration/60, 2))}* мин.")
|
||||||
print(f'{nowtime()} Конференция длилась {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(round(lesson_duration/60, 2))} мин{RESET}.)')
|
print(f'{nowtime()} Конференция длилась {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(round(lesson_duration/60, 2))} мин{RESET}.)')
|
||||||
else:
|
else:
|
||||||
tgsend(getConfig("telegram_enabled"), f"◀ Конференция *{lesson_name}* длилась *{str(int(lesson_duration/60))}* мин.")
|
tgsend(getConfig("telegram_enabled"), f"◀ Конференция *{lesson_name}* длилась *{str(int(lesson_duration/60))}* мин.")
|
||||||
print(f'{nowtime()} Конференция длилась {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(int(lesson_duration/60))} мин{RESET}.)')
|
print(f'{nowtime()} Конференция длилась {BGREEN}{str(lesson_duration)} сек{RESET}. ({BGREEN}{str(int(lesson_duration/60))} мин{RESET}.)')
|
||||||
|
|
||||||
appendLog(f'Lesson {lesson_name} duration was {str(int(lesson_duration/60))} m. ({str(lesson_duration)} s.)')
|
appendLog(f'Lesson {lesson_name} duration was {str(int(lesson_duration/60))} m. ({str(lesson_duration)} s.)')
|
||||||
|
|
||||||
playSound("ended", nowtime())
|
playSound(getConfig("sound_ended"), nowtime())
|
||||||
|
|
||||||
if lesson_obs:
|
if lesson_obs:
|
||||||
keyboard.press(stop)
|
keyboard.press(stop)
|
||||||
time.sleep(.25)
|
time.sleep(.25)
|
||||||
keyboard.release(stop)
|
keyboard.release(stop)
|
||||||
print(f'{nowtime()} Сигнал остановки записи через OBS отправлен.')
|
print(f'{nowtime()} Сигнал остановки записи через OBS отправлен.')
|
||||||
playSound("recordstop", nowtime())
|
playSound(getConfig("sound_recordstop"), nowtime())
|
||||||
record_now = False
|
record_now = False
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
|
||||||
|
@ -546,15 +559,15 @@ def main(source='deamon'):
|
||||||
|
|
||||||
if not lesson_repeat:
|
if not lesson_repeat:
|
||||||
del lessons_list[lessons_list.index(les)]
|
del lessons_list[lessons_list.index(les)]
|
||||||
|
|
||||||
saveJson(files_folder+'lessons.json', lessons_list)
|
saveJson(files_folder+'lessons.json', lessons_list)
|
||||||
appendLog(f'Lesson named {lesson_name} removed')
|
appendLog(f'Lesson named {lesson_name} removed')
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
||||||
|
|
||||||
print(f'\n{BBLACK}================================================{RESET}\n\n')
|
print(f'\n{BBLACK}================================================{RESET}\n\n')
|
||||||
|
|
||||||
firstshow = True
|
firstshow = True
|
||||||
|
|
||||||
lessons_count = lessons_count+1
|
lessons_count = lessons_count+1
|
||||||
|
@ -566,17 +579,17 @@ def main(source='deamon'):
|
||||||
lessons_list = getLessons()
|
lessons_list = getLessons()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
playSound("started", nowtime())
|
playSound(getConfig("sound_started"), nowtime())
|
||||||
tgsend(getConfig("telegram_enabled"), f"▶ Присоединился к конференции *{lesson_name}* в *{nowtime(False, False, False)}* {profilename}")
|
tgsend(getConfig("telegram_enabled"), f"▶ Присоединился к конференции *{lesson_name}* в *{nowtime(False, False, False)}* {profilename}")
|
||||||
|
|
||||||
appendLog(f'Joined lesson {lesson_name} at {nowtime(False, False, False)}')
|
appendLog(f'Joined lesson {lesson_name} at {nowtime(False, False, False)}')
|
||||||
|
|
||||||
if not lesson_repeat:
|
if not lesson_repeat:
|
||||||
del lessons_list[lessons_list.index(les)]
|
del lessons_list[lessons_list.index(les)]
|
||||||
|
|
||||||
saveJson(files_folder+'lessons.json', lessons_list)
|
saveJson(files_folder+'lessons.json', lessons_list)
|
||||||
appendLog(f'Lesson named {lesson_name} removed')
|
appendLog(f'Lesson named {lesson_name} removed')
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
print(f'{nowtime()} Конференция {CYAN}{lesson_name}{RESET} в {BRED}{lesson_time}{RESET} удалена.')
|
||||||
|
|
||||||
|
@ -591,7 +604,7 @@ def main(source='deamon'):
|
||||||
print(f'{nowtime()} Ожидание конференции сброшено.')
|
print(f'{nowtime()} Ожидание конференции сброшено.')
|
||||||
else:
|
else:
|
||||||
print('')
|
print('')
|
||||||
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -609,7 +622,7 @@ def main(source='deamon'):
|
||||||
|
|
||||||
appendLog(f'Shutting PC down in {str(getConfig("shutdown_timeout"))}')
|
appendLog(f'Shutting PC down in {str(getConfig("shutdown_timeout"))}')
|
||||||
|
|
||||||
playSound("shutdown", nowtime())
|
playSound(getConfig("sound_shutdown"), nowtime())
|
||||||
end_unix = int(time.time())+getConfig("shutdown_timeout")*60
|
end_unix = int(time.time())+getConfig("shutdown_timeout")*60
|
||||||
rpc.shutdown(end_unix)
|
rpc.shutdown(end_unix)
|
||||||
shutdown = inputimeout(prompt=f'{nowtime()} Нажмите {CYAN}Enter{RESET} чтобы предотвратить выключение ПК...', timeout=getConfig("shutdown_timeout")*60)
|
shutdown = inputimeout(prompt=f'{nowtime()} Нажмите {CYAN}Enter{RESET} чтобы предотвратить выключение ПК...', timeout=getConfig("shutdown_timeout")*60)
|
||||||
|
@ -624,6 +637,28 @@ def main(source='deamon'):
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
appendLog('Shutting PC down')
|
appendLog('Shutting PC down')
|
||||||
os.system("shutdown /s /t 1")
|
os.system("shutdown /s /t 1")
|
||||||
|
elif getConfig("end_mode") == 'sleep':
|
||||||
|
try:
|
||||||
|
tgsend(getConfig("telegram_enabled"), f"⚠ Конференции кончились, отправление в сон {profilename}через {str(getConfig('shutdown_timeout'))} мин...")
|
||||||
|
print(f'{nowtime()} Ваш ПК автоматически заснёт через {BRED}{str(getConfig("shutdown_timeout"))} мин{RESET}.')
|
||||||
|
|
||||||
|
appendLog(f'Falling asleep in {str(getConfig("shutdown_timeout"))}')
|
||||||
|
|
||||||
|
playSound(getConfig("sound_shutdown"), nowtime())
|
||||||
|
end_unix = int(time.time())+getConfig("shutdown_timeout")*60
|
||||||
|
rpc.sleepmode(end_unix)
|
||||||
|
shutdown = inputimeout(prompt=f'{nowtime()} Нажмите {CYAN}Enter{RESET} чтобы предотвратить засыпание ПК...', timeout=getConfig("shutdown_timeout")*60)
|
||||||
|
|
||||||
|
appendLog('Sleep mode aborted')
|
||||||
|
clear()
|
||||||
|
except TimeoutOccurred:
|
||||||
|
clear()
|
||||||
|
print(f'{nowtime()} Время вышло, уводим ваш ПК в спящий режим...')
|
||||||
|
time.sleep(3)
|
||||||
|
tgsend(getConfig("telegram_enabled"), f"⚠ Время таймаута исткело, переводим ПК в спящий режим...")
|
||||||
|
time.sleep(5)
|
||||||
|
appendLog('Activating PC sleep mode')
|
||||||
|
os.system("rundll32.exe powrprof.dll, SetSuspendState Sleep")
|
||||||
# elif getConfig("end_mode") == 'restart':
|
# elif getConfig("end_mode") == 'restart':
|
||||||
# from datetime import datetime, time
|
# from datetime import datetime, time
|
||||||
# from time import sleep
|
# from time import sleep
|
||||||
|
@ -643,6 +678,7 @@ def main(source='deamon'):
|
||||||
rpc.disconnect()
|
rpc.disconnect()
|
||||||
clear()
|
clear()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
elif source == 'menu':
|
elif source == 'menu':
|
||||||
appendLog(f'Waiting for any input')
|
appendLog(f'Waiting for any input')
|
||||||
|
|
||||||
|
@ -652,6 +688,7 @@ def main(source='deamon'):
|
||||||
clear()
|
clear()
|
||||||
setTitle("AutoZoom (Главная)", sysname)
|
setTitle("AutoZoom (Главная)", sysname)
|
||||||
return
|
return
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
if source == 'deamon':
|
if source == 'deamon':
|
||||||
appendLog(f'Deamon stopped, waiting for any input')
|
appendLog(f'Deamon stopped, waiting for any input')
|
||||||
|
@ -661,6 +698,7 @@ def main(source='deamon'):
|
||||||
rpc.disconnect()
|
rpc.disconnect()
|
||||||
clear()
|
clear()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
elif source == 'menu':
|
elif source == 'menu':
|
||||||
appendLog(f'Deamon stopped, waiting for any input')
|
appendLog(f'Deamon stopped, waiting for any input')
|
||||||
|
|
||||||
|
|
172
editor.py
172
editor.py
|
@ -30,7 +30,7 @@ def listLessons(from_where='remove'):
|
||||||
repeat = 'Вкл.'
|
repeat = 'Вкл.'
|
||||||
else:
|
else:
|
||||||
repeat = 'Выкл.'
|
repeat = 'Выкл.'
|
||||||
|
|
||||||
if les[1]["record"]:
|
if les[1]["record"]:
|
||||||
record = 'Вкл.'
|
record = 'Вкл.'
|
||||||
else:
|
else:
|
||||||
|
@ -40,7 +40,7 @@ def listLessons(from_where='remove'):
|
||||||
repeat_day = getDay(les[1]["repeat_day"])
|
repeat_day = getDay(les[1]["repeat_day"])
|
||||||
except:
|
except:
|
||||||
repeat_day = 'Не повторяется'
|
repeat_day = 'Не повторяется'
|
||||||
|
|
||||||
length = len(str(les[0]))
|
length = len(str(les[0]))
|
||||||
|
|
||||||
spacer_all = 6 * ' '
|
spacer_all = 6 * ' '
|
||||||
|
@ -58,15 +58,18 @@ def listLessons(from_where='remove'):
|
||||||
|
|
||||||
if from_where == 'editor':
|
if from_where == 'editor':
|
||||||
none = input('\n\n > ')
|
none = input('\n\n > ')
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
clear()
|
clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def sortLessons(dictionary):
|
def sortLessons(dictionary):
|
||||||
dictionary.sort(key = lambda x: datetime.strptime(x['time'], '%H:%M'))
|
if getConfig("debug"):
|
||||||
dictionary.sort(key = lambda x: datetime.strptime(x['date'], '%d.%m.%Y'))
|
print(dictionary)
|
||||||
|
|
||||||
|
dictionary.sort(key = lambda x: datetime.strptime(x["time"], '%H:%M'))
|
||||||
|
dictionary.sort(key = lambda x: datetime.strptime(x["date"], '%d.%m.%Y'))
|
||||||
appendLog('Lessons dictionary sorted')
|
appendLog('Lessons dictionary sorted')
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,6 +98,7 @@ def addLesson():
|
||||||
lessons_got = getLessons()
|
lessons_got = getLessons()
|
||||||
|
|
||||||
lessname = input(f'{RESET}Введите (своё) имя конференции:\n{BBLACK}Нужно лишь для отображения в Discord и самом AutoZoom{RESET}\n\n > {CYAN}')
|
lessname = input(f'{RESET}Введите (своё) имя конференции:\n{BBLACK}Нужно лишь для отображения в Discord и самом AutoZoom{RESET}\n\n > {CYAN}')
|
||||||
|
lessname = strCleaner(lessname)
|
||||||
local_lessons.update({"name": lessname})
|
local_lessons.update({"name": lessname})
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -140,9 +144,9 @@ def addLesson():
|
||||||
finallessdate = lessdate
|
finallessdate = lessdate
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
local_lessons.update({"date": finallessdate})
|
local_lessons.update({"date": finallessdate})
|
||||||
|
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
@ -172,7 +176,7 @@ def addLesson():
|
||||||
else:
|
else:
|
||||||
conflictles += f', {CYAN}{lesson["name"]}{RESET}'
|
conflictles += f', {CYAN}{lesson["name"]}{RESET}'
|
||||||
confstr = 'конференциями'
|
confstr = 'конференциями'
|
||||||
|
|
||||||
if conflict:
|
if conflict:
|
||||||
while True:
|
while True:
|
||||||
clear()
|
clear()
|
||||||
|
@ -188,7 +192,7 @@ def addLesson():
|
||||||
|
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if abort == "restart":
|
if abort == "restart":
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
@ -204,6 +208,7 @@ def addLesson():
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}').replace(" ", "")
|
lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}').replace(" ", "")
|
||||||
|
lesslink = strCleaner(lesslink)
|
||||||
|
|
||||||
if lesslink.replace(' ', '') == '1':
|
if lesslink.replace(' ', '') == '1':
|
||||||
clear()
|
clear()
|
||||||
|
@ -252,7 +257,7 @@ def addLesson():
|
||||||
finallessrecord = False
|
finallessrecord = False
|
||||||
local_lessons.update({"record": finallessrecord})
|
local_lessons.update({"record": finallessrecord})
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
lessons_got.append(dict(local_lessons))
|
lessons_got.append(dict(local_lessons))
|
||||||
sortLessons(lessons_got)
|
sortLessons(lessons_got)
|
||||||
|
@ -294,7 +299,7 @@ def editLesson():
|
||||||
except:
|
except:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
probe = lessons_got[edi]["name"]
|
probe = lessons_got[edi]["name"]
|
||||||
break
|
break
|
||||||
|
@ -309,6 +314,8 @@ def editLesson():
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
lessname = input(f'{RESET}Введите (своё) имя конференции:\n{BBLACK}Нужно лишь для отображения в Discord и самом AutoZoom{RESET}\n\nОригинальное имя: {CYAN}{lessons_got[edi]["name"]}{RESET}\n\n > {CYAN}')
|
lessname = input(f'{RESET}Введите (своё) имя конференции:\n{BBLACK}Нужно лишь для отображения в Discord и самом AutoZoom{RESET}\n\nОригинальное имя: {CYAN}{lessons_got[edi]["name"]}{RESET}\n\n > {CYAN}')
|
||||||
|
lessname = strCleaner(lessname)
|
||||||
|
|
||||||
if lessname == '':
|
if lessname == '':
|
||||||
lessname = lessons_got[edi]["name"]
|
lessname = lessons_got[edi]["name"]
|
||||||
local_lessons.update({"name": lessname})
|
local_lessons.update({"name": lessname})
|
||||||
|
@ -357,63 +364,79 @@ def editLesson():
|
||||||
finallessdate = lessdate
|
finallessdate = lessdate
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
local_lessons.update({"date": finallessdate})
|
local_lessons.update({"date": finallessdate})
|
||||||
|
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
lesstime = input(f'{RESET}Введите время конференции ({BRED}ЧЧ:ММ{RESET}):\n\nОригинальное время: {BRED}{lessons_got[edi]["time"]}{RESET}\n\n > {BRED}')
|
lesstime = input(f'{RESET}Введите время конференции ({BRED}ЧЧ:ММ{RESET}):\n\nОригинальное время: {BRED}{lessons_got[edi]["time"]}{RESET}\n\n > {BRED}')
|
||||||
finallesstime = (datetime.strptime(lesstime, "%H:%M"))
|
|
||||||
local_lessons.update({"time": lesstime})
|
|
||||||
abort = "skip"
|
|
||||||
conflict = False
|
|
||||||
conflictles = ''
|
|
||||||
confstr = 'конференцией'
|
|
||||||
|
|
||||||
try:
|
if lesstime == '':
|
||||||
|
finallesstime = lessons_got[edi]["time"]
|
||||||
for lesson in lessons_got:
|
lesstime = lessons_got[edi]["time"]
|
||||||
|
|
||||||
if lesson["date"] == finallessdate and lesson["time"] == lesstime:
|
local_lessons.update({"time": lesstime})
|
||||||
conflict = True
|
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
finallesstime = (datetime.strptime(lesstime, "%H:%M"))
|
||||||
|
finallesstime = lesstime
|
||||||
|
|
||||||
|
local_lessons.update({"time": lesstime})
|
||||||
|
|
||||||
|
abort = "skip"
|
||||||
|
conflict = False
|
||||||
|
conflictles = ''
|
||||||
|
confstr = 'конференцией'
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
|
for lesson in lessons_got:
|
||||||
|
|
||||||
if conflictles == '':
|
if lesson["date"] == finallessdate and lesson["time"] == lesstime:
|
||||||
conflictles = f'{CYAN}{lesson["name"]}{RESET}'
|
conflict = True
|
||||||
confstr = 'конференцией'
|
|
||||||
|
|
||||||
else:
|
|
||||||
conflictles += f', {CYAN}{lesson["name"]}{RESET}'
|
|
||||||
confstr = 'конференциями'
|
|
||||||
|
|
||||||
if conflict:
|
|
||||||
while True:
|
|
||||||
clear()
|
|
||||||
choice = input(f'{RESET}Время и дата конференции совпадают с {confstr} {conflictles}.\nДобавить ещё одну конференцию на то же время? ({BGREEN}Да{RESET}/{BRED}Нет{RESET})\n\n > ')
|
|
||||||
|
|
||||||
if choice.lower() in yes_list:
|
|
||||||
abort = "bypass"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif choice.lower() in no_list:
|
|
||||||
abort = "restart"
|
|
||||||
break
|
|
||||||
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if abort == "restart":
|
if conflictles == '':
|
||||||
|
conflictles = f'{CYAN}{lesson["name"]}{RESET}'
|
||||||
|
confstr = 'конференцией'
|
||||||
|
|
||||||
|
else:
|
||||||
|
conflictles += f', {CYAN}{lesson["name"]}{RESET}'
|
||||||
|
confstr = 'конференциями'
|
||||||
|
|
||||||
|
if conflict:
|
||||||
|
while True:
|
||||||
|
clear()
|
||||||
|
choice = input(f'{RESET}Время и дата конференции совпадают с {confstr} {conflictles}.\nДобавить ещё одну конференцию на то же время? ({BGREEN}Да{RESET}/{BRED}Нет{RESET})\n\n > ')
|
||||||
|
|
||||||
|
if choice.lower() in yes_list:
|
||||||
|
abort = "bypass"
|
||||||
|
break
|
||||||
|
|
||||||
|
elif choice.lower() in no_list:
|
||||||
|
abort = "restart"
|
||||||
|
break
|
||||||
|
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if abort == "restart":
|
||||||
|
continue
|
||||||
|
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
except Exception as exp:
|
||||||
|
none = input(exp)
|
||||||
|
pass
|
||||||
|
except:
|
||||||
continue
|
continue
|
||||||
else:
|
|
||||||
break
|
|
||||||
|
|
||||||
except Exception as exp:
|
|
||||||
none = input(exp)
|
|
||||||
pass
|
|
||||||
|
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
|
@ -421,6 +444,7 @@ def editLesson():
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}').replace(" ", "")
|
lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}').replace(" ", "")
|
||||||
|
lesslink = strCleaner(lesslink)
|
||||||
|
|
||||||
if lesslink.replace(' ', '') == '1':
|
if lesslink.replace(' ', '') == '1':
|
||||||
clear()
|
clear()
|
||||||
|
@ -428,10 +452,10 @@ def editLesson():
|
||||||
clear()
|
clear()
|
||||||
lesspasswd = input(f'{RESET}Введите код доступа (пароль) конференции:\n\n > {BRED}')
|
lesspasswd = input(f'{RESET}Введите код доступа (пароль) конференции:\n\n > {BRED}')
|
||||||
lesslink = f'https://us01web.zoom.us/j/{lessid.replace(" ", "")}?pwd={lesspasswd.replace(" ", "")}'
|
lesslink = f'https://us01web.zoom.us/j/{lessid.replace(" ", "")}?pwd={lesspasswd.replace(" ", "")}'
|
||||||
|
|
||||||
if lesslink == '':
|
if lesslink == '':
|
||||||
lesslink = lessons_got[edi]["link"]
|
lesslink = lessons_got[edi]["link"]
|
||||||
|
|
||||||
local_lessons.update({"link": lesslink})
|
local_lessons.update({"link": lesslink})
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -492,7 +516,7 @@ def editLesson():
|
||||||
finallessrecord = False
|
finallessrecord = False
|
||||||
local_lessons.update({"record": finallessrecord})
|
local_lessons.update({"record": finallessrecord})
|
||||||
break
|
break
|
||||||
|
|
||||||
del lessons_got[edi]
|
del lessons_got[edi]
|
||||||
lessons_got.append(dict(local_lessons))
|
lessons_got.append(dict(local_lessons))
|
||||||
sortLessons(lessons_got)
|
sortLessons(lessons_got)
|
||||||
|
@ -529,7 +553,7 @@ def removeLesson():
|
||||||
except:
|
except:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
del_name = lessons_local[rem]["name"]
|
del_name = lessons_local[rem]["name"]
|
||||||
del_date = lessons_local[rem]["date"]
|
del_date = lessons_local[rem]["date"]
|
||||||
|
@ -541,7 +565,7 @@ def removeLesson():
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
sortLessons(lessons_local)
|
sortLessons(lessons_local)
|
||||||
saveJson(files_folder+'lessons.json', lessons_local)
|
saveJson(files_folder+'lessons.json', lessons_local)
|
||||||
clear()
|
clear()
|
||||||
|
@ -567,7 +591,7 @@ def removeAllLessons():
|
||||||
with open(files_folder+'lessons.json', 'w', encoding="utf-8") as f:
|
with open(files_folder+'lessons.json', 'w', encoding="utf-8") as f:
|
||||||
f.write("[]")
|
f.write("[]")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
appendLog('All lessons removed')
|
appendLog('All lessons removed')
|
||||||
clear()
|
clear()
|
||||||
none = input('Все конференции были удалены.\n\n > ')
|
none = input('Все конференции были удалены.\n\n > ')
|
||||||
|
@ -587,6 +611,32 @@ def removeAllLessons():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def debugLesson():
|
||||||
|
try:
|
||||||
|
from profile import debuglink, name
|
||||||
|
appendLog('Debug link added to the list')
|
||||||
|
|
||||||
|
local_lessons = {}
|
||||||
|
lessons_got = getLessons()
|
||||||
|
|
||||||
|
local_lessons.update({"name": "Debug Lesson"})
|
||||||
|
local_lessons.update({"date": date.today().strftime("%d.%m.%Y")})
|
||||||
|
local_lessons.update({"time": "00:00"})
|
||||||
|
local_lessons.update({"link": debuglink})
|
||||||
|
local_lessons.update({"repeat": False})
|
||||||
|
local_lessons.update({"repeat_day": None})
|
||||||
|
local_lessons.update({"record": True})
|
||||||
|
|
||||||
|
lessons_got.append(dict(local_lessons))
|
||||||
|
sortLessons(lessons_got)
|
||||||
|
saveJson(files_folder+'lessons.json', lessons_got)
|
||||||
|
|
||||||
|
return f"{RESET}Конференция для отладки профиля {CYAN}{name} {RESET}была добавлена."
|
||||||
|
|
||||||
|
except:
|
||||||
|
return f"{RESET}Для отладки нужен профиль {BRED}profile.py {RESET}со ссылкой на конференцию {BRED}debuglink {RESET}и именем {BRED}name{RESET}."
|
||||||
|
|
||||||
|
|
||||||
def editor():
|
def editor():
|
||||||
try:
|
try:
|
||||||
setTitle("AutoZoom (Редактор)", getOS())
|
setTitle("AutoZoom (Редактор)", getOS())
|
||||||
|
@ -634,7 +684,7 @@ def editor():
|
||||||
mainMenu()
|
mainMenu()
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
appendLog('Exiting back to main menu')
|
appendLog('Exiting back to main menu')
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
|
|
86
functions.py
86
functions.py
|
@ -20,24 +20,33 @@ yes_list = ['y', 'yes', 'д', 'да']
|
||||||
no_list = ['n', 'no', 'н', 'нет']
|
no_list = ['n', 'no', 'н', 'нет']
|
||||||
|
|
||||||
default_config = {
|
default_config = {
|
||||||
"firstboot": True,
|
"firstboot": True,
|
||||||
"debug": False,
|
"debug": False,
|
||||||
"shutdown_timeout": 30,
|
"shutdown_timeout": 30,
|
||||||
"shutdown_enabled": False,
|
"shutdown_enabled": False,
|
||||||
"start": "shift+f7",
|
"start": "shift+f7",
|
||||||
"stop": "shift+f8",
|
"stop": "shift+f8",
|
||||||
"telegram_enabled": False,
|
"telegram_enabled": False,
|
||||||
"use_colors": True,
|
"use_colors": True,
|
||||||
"run_fullscreen": False,
|
"run_fullscreen": False,
|
||||||
"use_rpc": True,
|
"rpc_use": True,
|
||||||
"sounds": True,
|
"rpc_id": "800049969960058882",
|
||||||
"end_mode": "shutdown",
|
"sounds": True,
|
||||||
"obs_exe": None,
|
"remove_old": True,
|
||||||
"obs_core": None,
|
"end_mode": "shutdown",
|
||||||
"update_check": True,
|
"obs_exe": None,
|
||||||
"write_logs": True,
|
"obs_core": None,
|
||||||
"log_size": 512
|
"obs_delay": 10,
|
||||||
}
|
"update_check": True,
|
||||||
|
"write_logs": True,
|
||||||
|
"log_size": 512,
|
||||||
|
"sound_ended": "ended",
|
||||||
|
"sound_recordstart": "recordstart",
|
||||||
|
"sound_recordstop": "recordstop",
|
||||||
|
"sound_shutdown": "shutdown",
|
||||||
|
"sound_started": "started",
|
||||||
|
"sound_warning": "warning"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Функция возвращающая надпись Windows Only
|
# Функция возвращающая надпись Windows Only
|
||||||
|
@ -70,6 +79,17 @@ else:
|
||||||
clear = lambda: os.system('clear')
|
clear = lambda: os.system('clear')
|
||||||
|
|
||||||
|
|
||||||
|
# Импортирование игралки звуков
|
||||||
|
try:
|
||||||
|
if getOS() == "windows":
|
||||||
|
import winsound
|
||||||
|
from playsound import playsound
|
||||||
|
elif getOS() == "unix":
|
||||||
|
from playsound import playsound
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# Установка заголовка окна cmd.exe
|
# Установка заголовка окна cmd.exe
|
||||||
def setTitle(title, system):
|
def setTitle(title, system):
|
||||||
if system == "windows":
|
if system == "windows":
|
||||||
|
@ -185,7 +205,7 @@ def playSound(soundname, timing=''):
|
||||||
|
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{timing} Не удалось проиграть playsound звук "{soundname}" (Ошибка: {exp})')
|
print(f'{timing} Не удалось проиграть playsound звук "{soundname}" (Ошибка: {exp})')
|
||||||
|
|
||||||
elif getOS() == "android":
|
elif getOS() == "android":
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -193,7 +213,7 @@ def playSound(soundname, timing=''):
|
||||||
|
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
appendLog(f'Could not play play-audio: {exp}')
|
appendLog(f'Could not play play-audio: {exp}')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -206,6 +226,16 @@ def playSound(soundname, timing=''):
|
||||||
print(f'{timing} Не удалось проиграть playsound звук "{soundname}" (Ошибка: {exp})')
|
print(f'{timing} Не удалось проиграть playsound звук "{soundname}" (Ошибка: {exp})')
|
||||||
|
|
||||||
|
|
||||||
|
# Функция удаления ненужного мусора из строки
|
||||||
|
def strCleaner(string):
|
||||||
|
|
||||||
|
output = string.replace('"', '\"').replace('\n', '')
|
||||||
|
|
||||||
|
appendLog(f"String cleaned: {output}")
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
# Функция добавления переменных, если их нет
|
# Функция добавления переменных, если их нет
|
||||||
def repairConfig(some_dic):
|
def repairConfig(some_dic):
|
||||||
|
|
||||||
|
@ -302,7 +332,7 @@ def setConfig(some_var, some_val):
|
||||||
config_list[some_var] = some_val
|
config_list[some_var] = some_val
|
||||||
saveJson(files_folder+'config.json', config_list)
|
saveJson(files_folder+'config.json', config_list)
|
||||||
appendLog(f'Changed variable "{somevar}" to {some_val}')
|
appendLog(f'Changed variable "{somevar}" to {some_val}')
|
||||||
|
|
||||||
except:
|
except:
|
||||||
return "Error"
|
return "Error"
|
||||||
|
|
||||||
|
@ -333,10 +363,14 @@ def getConfig(some_var):
|
||||||
|
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
repairConfig(config_list)
|
try:
|
||||||
config_list = json.load(json_file)
|
setConfig(some_var, default_config[some_var])
|
||||||
json_file.close()
|
return default_config[some_var]
|
||||||
return config_list[some_var]
|
except:
|
||||||
|
repairConfig(config_list)
|
||||||
|
config_list = json.load(json_file)
|
||||||
|
json_file.close()
|
||||||
|
return config_list[some_var]
|
||||||
except:
|
except:
|
||||||
return default_config[some_var]
|
return default_config[some_var]
|
||||||
except:
|
except:
|
||||||
|
@ -383,7 +417,7 @@ def getState(process="CptHost.exe"):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
appendLog(f'Failed to get state using tasklist: {exp}')
|
appendLog(f'Failed to get state using tasklist: {exp}')
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ if getConfig("firstboot"):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif getOS() == "unix":
|
elif getOS() == "unix":
|
||||||
while True:
|
while True:
|
||||||
os.system('clear')
|
os.system('clear')
|
||||||
|
@ -46,7 +46,7 @@ if getConfig("firstboot"):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif getOS() == "windows":
|
elif getOS() == "windows":
|
||||||
setConfig("firstboot", False)
|
setConfig("firstboot", False)
|
||||||
|
|
||||||
|
@ -116,7 +116,8 @@ if getOS() != "android":
|
||||||
libs.append("playsound")
|
libs.append("playsound")
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
os.system('pkg install play-audio')
|
if not "play-audio" in os.popen('pkg list-all').read():
|
||||||
|
os.system('pkg install play-audio')
|
||||||
except:
|
except:
|
||||||
appendLog("Could not install play-audio")
|
appendLog("Could not install play-audio")
|
||||||
###################################
|
###################################
|
||||||
|
@ -165,7 +166,7 @@ if len(libs) > 0:
|
||||||
if response != 0:
|
if response != 0:
|
||||||
appendLog(f'Failed to install {each}')
|
appendLog(f'Failed to install {each}')
|
||||||
sys.exit(f"{RESET}[{BRED}ERR{RESET}] Установка {YELLOW}{each} {RESET}провалилась.")
|
sys.exit(f"{RESET}[{BRED}ERR{RESET}] Установка {YELLOW}{each} {RESET}провалилась.")
|
||||||
|
|
||||||
appendLog('Everything seems to be installed')
|
appendLog('Everything seems to be installed')
|
||||||
print(f"{RESET}[{BGREEN}OK{RESET}] Все модули были успешно установлены.")
|
print(f"{RESET}[{BGREEN}OK{RESET}] Все модули были успешно установлены.")
|
||||||
|
|
||||||
|
|
67
main.py
67
main.py
|
@ -9,6 +9,8 @@ import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import libinstaller
|
||||||
|
|
||||||
from functions import *
|
from functions import *
|
||||||
|
|
||||||
appendLog('main.py start initialized', startup=True)
|
appendLog('main.py start initialized', startup=True)
|
||||||
|
@ -28,15 +30,13 @@ else:
|
||||||
BBLACK = BRED = BGREEN = BYELLOW = BBLUE = BMAGENTA = BCYAN = BWHITE = ''
|
BBLACK = BRED = BGREEN = BYELLOW = BBLUE = BMAGENTA = BCYAN = BWHITE = ''
|
||||||
ULINE = REVERSE = ''
|
ULINE = REVERSE = ''
|
||||||
|
|
||||||
import libinstaller
|
|
||||||
|
|
||||||
import wget
|
import wget
|
||||||
import requests
|
import requests
|
||||||
import keyboard
|
import keyboard
|
||||||
import getpass
|
import getpass
|
||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
|
|
||||||
version = 2.1
|
version = 2.6
|
||||||
path = Path(__file__).resolve().parent
|
path = Path(__file__).resolve().parent
|
||||||
|
|
||||||
def mainMenu():
|
def mainMenu():
|
||||||
|
@ -63,7 +63,7 @@ def mainMenu():
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
appendLog(f'Version number load failed {exp}')
|
appendLog(f'Version number load failed {exp}')
|
||||||
setTitle("Ошибка загрузки данных", getOS())
|
setTitle("Ошибка загрузки данных", getOS())
|
||||||
print(f'Не удалось загрузить данные о последней версии.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://status.end-play.xyz/786373747{RESET}')
|
print(f'Не удалось загрузить данные о последней версии.\nПроверьте подключение к сети и повторите попытку.\n\nСтатус сервера центра обновлений:\n{BRED}https://stats.uptimerobot.com/OqwR9iAqBg{RESET}')
|
||||||
|
|
||||||
todo = input(f'\nВведите {BRED}ignore {RESET}чтобы выключить проверку обновлений и продолжить\nлибо введите что угодно иное чтобы закрыть программу.\n\n > {BRED}')
|
todo = input(f'\nВведите {BRED}ignore {RESET}чтобы выключить проверку обновлений и продолжить\nлибо введите что угодно иное чтобы закрыть программу.\n\n > {BRED}')
|
||||||
|
|
||||||
|
@ -167,8 +167,10 @@ def helpMenu():
|
||||||
print(f' {BRED}3.{RESET} Центр поддержки')
|
print(f' {BRED}3.{RESET} Центр поддержки')
|
||||||
print(f' {BRED}4.{RESET} Telegram проекта')
|
print(f' {BRED}4.{RESET} Telegram проекта')
|
||||||
print(f' {BRED}5.{RESET} Связаться с автором')
|
print(f' {BRED}5.{RESET} Связаться с автором')
|
||||||
print(f' {BRED}6.{RESET} Сводка информации')
|
print(f' {BRED}6.{RESET} Поддержать проект')
|
||||||
print(f' {BRED}7.{RESET} В главное меню')
|
print(f' {BRED}7.{RESET} Список поддержавших')
|
||||||
|
print(f' {BRED}8.{RESET} Сводка информации')
|
||||||
|
print(f' {BRED}9.{RESET} В главное меню')
|
||||||
|
|
||||||
help_choose = input(f'\n > {BRED}')
|
help_choose = input(f'\n > {BRED}')
|
||||||
|
|
||||||
|
@ -222,7 +224,27 @@ def helpMenu():
|
||||||
appendLog(f'Failed to open AutoZoom\'s developer Telegram: {exp}')
|
appendLog(f'Failed to open AutoZoom\'s developer Telegram: {exp}')
|
||||||
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/profitroll{RESET}\n\n > ')
|
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://t.me/profitroll{RESET}\n\n > ')
|
||||||
clear()
|
clear()
|
||||||
if help_choose == '6':
|
elif help_choose == '6':
|
||||||
|
try:
|
||||||
|
clear()
|
||||||
|
appendLog('Opened AutoZoom\'s donation page')
|
||||||
|
webbrowser.open("https://www.end-play.xyz/autozoom/donate")
|
||||||
|
except Exception as exp:
|
||||||
|
clear()
|
||||||
|
appendLog(f'Failed to open AutoZoom\'s donation page: {exp}')
|
||||||
|
none = input(f'{RESET}Не удалось открыть страницу вашего браузера.\nВы можете открыть адрес самостоятельно: {BRED}https://www.end-play.xyz/autozoom/donate{RESET}\n\n > ')
|
||||||
|
clear()
|
||||||
|
elif help_choose == '7':
|
||||||
|
try:
|
||||||
|
clear()
|
||||||
|
print(f'{BBLACK}»{RESET} Список поддержавших проект:\n\n{(requests.get("https://www.end-play.xyz/AutoZoomDonors.txt").content.decode("utf-8")).replace("-", RESET+" •"+BRED)}{RESET}')
|
||||||
|
except Exception as exp:
|
||||||
|
clear()
|
||||||
|
appendLog(f'Failed to load donation list {exp}')
|
||||||
|
print(f'{RESET}Не удалось загрузить данные о списке поддержавших проект.\nВы можете посмотреть его самостоятельно: {BRED}https://www.end-play.xyz/AutoZoomDonors.txt')
|
||||||
|
none = input('\n > ')
|
||||||
|
clear()
|
||||||
|
if help_choose == '8':
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
if getState("RBTray.exe"):
|
if getState("RBTray.exe"):
|
||||||
|
@ -257,7 +279,7 @@ def helpMenu():
|
||||||
print(f' {BBLACK}•{RESET} Discord RPC: {dsrpc}')
|
print(f' {BBLACK}•{RESET} Discord RPC: {dsrpc}')
|
||||||
none = input('\n > ')
|
none = input('\n > ')
|
||||||
clear()
|
clear()
|
||||||
elif help_choose == '7':
|
elif help_choose == '9':
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
setTitle("AutoZoom (Главная)", getOS())
|
setTitle("AutoZoom (Главная)", getOS())
|
||||||
|
@ -282,10 +304,12 @@ def devMenu():
|
||||||
print(f' {BRED}1.{RESET} PlaySound test')
|
print(f' {BRED}1.{RESET} PlaySound test')
|
||||||
print(f' {BRED}2.{RESET} WinSound test')
|
print(f' {BRED}2.{RESET} WinSound test')
|
||||||
print(f' {BRED}3.{RESET} Play-audio test')
|
print(f' {BRED}3.{RESET} Play-audio test')
|
||||||
print(f' {BRED}4.{RESET} OS check test')
|
print(f' {BRED}4.{RESET} playSound function test')
|
||||||
print(f' {BRED}5.{RESET} Telegram test')
|
print(f' {BRED}5.{RESET} OS check test')
|
||||||
print(f' {BRED}6.{RESET} Color test')
|
print(f' {BRED}6.{RESET} Telegram test')
|
||||||
print(f' {BRED}7.{RESET} Exit to menu')
|
print(f' {BRED}7.{RESET} Zoom meeting test')
|
||||||
|
print(f' {BRED}8.{RESET} Color test')
|
||||||
|
print(f' {BRED}9.{RESET} Exit to menu')
|
||||||
|
|
||||||
choose = input(f'\n > {BRED}')
|
choose = input(f'\n > {BRED}')
|
||||||
|
|
||||||
|
@ -304,17 +328,27 @@ def devMenu():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif choose == '4':
|
elif choose == '4':
|
||||||
|
playSound("debug")
|
||||||
|
continue
|
||||||
|
|
||||||
|
elif choose == '5':
|
||||||
clear()
|
clear()
|
||||||
none = input(f'{RESET}{getOS()}\n\n > ')
|
none = input(f'{RESET}{getOS()}\n\n > ')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif choose == '5':
|
elif choose == '6':
|
||||||
clear()
|
clear()
|
||||||
import telegram_send
|
import telegram_send
|
||||||
telegram_send.send(messages=["Telegram message test"], parse_mode="markdown", conf=files_folder+"telegram.conf")
|
telegram_send.send(messages=["Telegram message test"], parse_mode="markdown", conf=files_folder+"telegram.conf")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif choose == '6':
|
elif choose == '7':
|
||||||
|
clear()
|
||||||
|
print(editor.debugLesson())
|
||||||
|
none = input(f'{RESET}\n > ')
|
||||||
|
continue
|
||||||
|
|
||||||
|
elif choose == '8':
|
||||||
clear()
|
clear()
|
||||||
print(f'{BLACK}███{RED}███{GREEN}███{YELLOW}███{BLUE}███{MAGENTA}███{CYAN}███{WHITE}███')
|
print(f'{BLACK}███{RED}███{GREEN}███{YELLOW}███{BLUE}███{MAGENTA}███{CYAN}███{WHITE}███')
|
||||||
print(f'{BBLACK}███{BRED}███{BGREEN}███{BYELLOW}███{BBLUE}███{BMAGENTA}███{BCYAN}███{BWHITE}███')
|
print(f'{BBLACK}███{BRED}███{BGREEN}███{BYELLOW}███{BBLUE}███{BMAGENTA}███{BCYAN}███{BWHITE}███')
|
||||||
|
@ -324,7 +358,7 @@ def devMenu():
|
||||||
none = input(RESET+'\n > ')
|
none = input(RESET+'\n > ')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif choose == '7':
|
elif choose == '9':
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
setTitle("AutoZoom (Главная)", getOS())
|
setTitle("AutoZoom (Главная)", getOS())
|
||||||
|
@ -382,6 +416,7 @@ def updater(serv_ver, version):
|
||||||
print(f' {BRED}1.{RESET} Установить')
|
print(f' {BRED}1.{RESET} Установить')
|
||||||
print(f' {BRED}2.{RESET} Отменить')
|
print(f' {BRED}2.{RESET} Отменить')
|
||||||
updater_decide = input(f'\n > {BRED}')
|
updater_decide = input(f'\n > {BRED}')
|
||||||
|
print(RESET)
|
||||||
|
|
||||||
if updater_decide == '1':
|
if updater_decide == '1':
|
||||||
appendLog('Trying to update AutoZoom')
|
appendLog('Trying to update AutoZoom')
|
||||||
|
@ -427,7 +462,7 @@ def updater(serv_ver, version):
|
||||||
appendLog('Changelog loaded')
|
appendLog('Changelog loaded')
|
||||||
clear()
|
clear()
|
||||||
print(f'{RESET}{changelog_text}\n')
|
print(f'{RESET}{changelog_text}\n')
|
||||||
print(changelog.text)
|
print(changelog.content.decode('utf-8'))
|
||||||
print(changelog_footer)
|
print(changelog_footer)
|
||||||
none = input('\n > ')
|
none = input('\n > ')
|
||||||
continue
|
continue
|
||||||
|
|
229
rpc.py
229
rpc.py
|
@ -6,18 +6,40 @@ import sys
|
||||||
from colors import *
|
from colors import *
|
||||||
from functions import *
|
from functions import *
|
||||||
|
|
||||||
version = '2.1'
|
version = '2.6'
|
||||||
|
|
||||||
import libinstaller
|
import libinstaller
|
||||||
from pypresence import Presence
|
from pypresence import Presence
|
||||||
|
|
||||||
client_id = '800049969960058882'
|
client_id = getConfig("rpc_id")
|
||||||
|
|
||||||
RPC = Presence(client_id,pipe=0)
|
try:
|
||||||
|
RPC = Presence(client_id,pipe=0)
|
||||||
|
except Exception as exp:
|
||||||
|
appendLog(f'Discord RPC failed to initialize status due to {exp}')
|
||||||
|
if getConfig("debug"):
|
||||||
|
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.\nОшибка: {BRED}{exp}{RESET}')
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
connected = False
|
connected = False
|
||||||
|
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
rpc_dict = {
|
||||||
|
"large_image": "1024_cover",
|
||||||
|
"small_image": {
|
||||||
|
"waiting": "status_waiting",
|
||||||
|
"conference": "status_lesson",
|
||||||
|
"menu": "status_menu",
|
||||||
|
"shutdown": "status_shutdown",
|
||||||
|
"settings": "status_settings",
|
||||||
|
"debug": "status_debug",
|
||||||
|
"editor": "status_editing",
|
||||||
|
"updating": "status_updating",
|
||||||
|
"support": "status_support"
|
||||||
|
},
|
||||||
|
"large_text": "AutoZoom • v%version%\nhttp://bit.ly/auto_zoom"
|
||||||
|
}
|
||||||
|
|
||||||
|
if getConfig("rpc_use") and getOS != "android":
|
||||||
try:
|
try:
|
||||||
RPC.connect()
|
RPC.connect()
|
||||||
connected = True
|
connected = True
|
||||||
|
@ -29,7 +51,7 @@ else:
|
||||||
def disconnect():
|
def disconnect():
|
||||||
global connected
|
global connected
|
||||||
|
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
if getConfig("rpc_use") and getOS != "android":
|
||||||
try:
|
try:
|
||||||
RPC.close()
|
RPC.close()
|
||||||
connected = False
|
connected = False
|
||||||
|
@ -48,19 +70,27 @@ def connect():
|
||||||
appendLog('Discord RPC failed to connect')
|
appendLog('Discord RPC failed to connect')
|
||||||
|
|
||||||
def reset():
|
def reset():
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
if getConfig("rpc_use") and getOS != "android":
|
||||||
RPC.clear()
|
RPC.clear()
|
||||||
appendLog('Discord RPC status cleared')
|
appendLog('Discord RPC status cleared')
|
||||||
|
|
||||||
|
|
||||||
|
def changePresence(sml_img, sml_txt, stt, dtls, start=None, end=None):
|
||||||
def waitLesson(lesson, start):
|
|
||||||
try:
|
try:
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
if getConfig("rpc_use") and getOS != "android":
|
||||||
if connected == False:
|
if connected == False:
|
||||||
connect()
|
connect()
|
||||||
RPC.update(large_image='1024_cover', small_image='status_waiting', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Ожидание', state=f'Ждём начала «{lesson}»', details='Конференция не началась', start=start)
|
RPC.update(
|
||||||
appendLog(f'Discord RPC changed to waitLesson (Lesson: {lesson}, Start: {start})')
|
large_image=rpc_dict["large_image"],
|
||||||
|
small_image=rpc_dict["small_image"][sml_img],
|
||||||
|
large_text=rpc_dict["large_text"].replace("%version%", str(version)),
|
||||||
|
small_text=sml_txt,
|
||||||
|
state=stt,
|
||||||
|
details=dtls,
|
||||||
|
start=start,
|
||||||
|
end=end
|
||||||
|
)
|
||||||
|
appendLog(f'Discord RPC changed: (Small image: {sml_img}, Small text: {sml_txt}, State: {stt}, Details: {dtls}, Start: {str(start)}, End: {str(end)})')
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
appendLog('Discord RPC failed to change status')
|
appendLog('Discord RPC failed to change status')
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
|
@ -71,177 +101,46 @@ def waitLesson(lesson, start):
|
||||||
if getConfig("debug"):
|
if getConfig("debug"):
|
||||||
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.')
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
except Exception as exp:
|
||||||
|
appendLog(f'Discord RPC failed to change status due to {exp}')
|
||||||
|
if getConfig("debug"):
|
||||||
|
print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.\nОшибка: {BRED}{exp}{RESET}')
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
def onLesson(lesson, start):
|
|
||||||
try:
|
def waitLesson(conference, start):
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
changePresence("waiting", "Ожидание", f"Ждём начала «{conference}»", "Конференция не началась", start=start)
|
||||||
if connected == False:
|
|
||||||
connect()
|
def onLesson(conference, start):
|
||||||
RPC.update(large_image='1024_cover', small_image='status_lesson', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Конференция', state=f'Слушаем «{lesson}»', details='Идёт конференция', start=start)
|
changePresence("conference", "Конференция", f"Слушаем «{conference}»", "Идёт конференция", 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():
|
def inMenu():
|
||||||
try:
|
changePresence("menu", "Главное меню", "Открыт список опций", "В главном меню")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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):
|
def shutdown(end):
|
||||||
try:
|
changePresence("shutdown", "Выключение", "Отсчёт до авто-выключения", "Выключение ПК", end=end)
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
if connected == False:
|
def sleepmode(end):
|
||||||
connect()
|
changePresence("shutdown", "Спящий режим", "Отсчёт до авто-засыпания", "Спящий режим ПК", end=end)
|
||||||
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():
|
def inSettings():
|
||||||
try:
|
changePresence("settings", "Настройки", "Открыты настройки", "В главном меню")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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 inDebug():
|
def inDebug():
|
||||||
try:
|
changePresence("debug", "Отладка", "Открыто меню отладки", "В меню разработчика")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
if connected == False:
|
|
||||||
connect()
|
|
||||||
RPC.update(large_image='1024_cover', small_image='status_debug', large_text=f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', small_text='Отладка', state='Открыто меню отладки', details='В меню разработчика')
|
|
||||||
appendLog('Discord RPC changed to inDebug')
|
|
||||||
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():
|
def inEditor():
|
||||||
try:
|
changePresence("editor", "Редактор", "Открыт редактор", "В главном меню")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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():
|
def inUpdater():
|
||||||
try:
|
changePresence("updating", "Обновление", "Открыт центр обновлений", "В главном меню")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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():
|
def inHelp():
|
||||||
try:
|
changePresence("support", "Помощь", "Открыта помощь", "В главном меню")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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():
|
def lessonEnded():
|
||||||
try:
|
changePresence("waiting", "Ожидание", "Ждём указаний", "Все конференции закончились")
|
||||||
if getConfig("use_rpc") and getOS != "android":
|
|
||||||
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__":
|
if __name__ == "__main__":
|
||||||
try:
|
changePresence("settings", "Отладка", "Модуль Discord RPC запущен в режиме тестирования", "Режим отладки")
|
||||||
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)
|
|
119
settings.py
119
settings.py
|
@ -115,14 +115,14 @@ def settings():
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '2':
|
elif settings_choose == '2':
|
||||||
setConfig("use_colors", not getConfig("use_colors"))
|
setConfig("use_colors", not getConfig("use_colors"))
|
||||||
appendLog(f'Changed option "use_colors" to {getConfig("use_colors")}')
|
appendLog(f'Changed option "use_colors" to {getConfig("use_colors")}')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '3':
|
elif settings_choose == '3':
|
||||||
if sysname == 'windows':
|
if sysname == 'windows':
|
||||||
setConfig("run_fullscreen", not getConfig("run_fullscreen"))
|
setConfig("run_fullscreen", not getConfig("run_fullscreen"))
|
||||||
|
@ -130,7 +130,7 @@ def settings():
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '4':
|
elif settings_choose == '4':
|
||||||
setConfig("sounds", not getConfig("sounds"))
|
setConfig("sounds", not getConfig("sounds"))
|
||||||
appendLog(f'Changed option "sounds" to {getConfig("sounds")}')
|
appendLog(f'Changed option "sounds" to {getConfig("sounds")}')
|
||||||
|
@ -179,20 +179,20 @@ def settings():
|
||||||
none = input('Вы не выбрали верный путь для OBS.\n\n > ')
|
none = input('Вы не выбрали верный путь для OBS.\n\n > ')
|
||||||
clear()
|
clear()
|
||||||
break
|
break
|
||||||
|
|
||||||
appendLog(f'Changed option "obs_exe" to {getConfig("obs_exe")}')
|
appendLog(f'Changed option "obs_exe" to {getConfig("obs_exe")}')
|
||||||
appendLog(f'Changed option "obs_core" to {getConfig("obs_core")}')
|
appendLog(f'Changed option "obs_core" to {getConfig("obs_core")}')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '6':
|
elif settings_choose == '6':
|
||||||
setConfig("shutdown_enabled", not getConfig("shutdown_enabled"))
|
setConfig("shutdown_enabled", not getConfig("shutdown_enabled"))
|
||||||
appendLog(f'Changed option "shutdown_enabled" to {getConfig("shutdown_enabled")}')
|
appendLog(f'Changed option "shutdown_enabled" to {getConfig("shutdown_enabled")}')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '7':
|
elif settings_choose == '7':
|
||||||
clear()
|
clear()
|
||||||
settings2()
|
settings2()
|
||||||
|
@ -202,7 +202,7 @@ def settings():
|
||||||
clear()
|
clear()
|
||||||
setTitle("AutoZoom (Главная)", sysname)
|
setTitle("AutoZoom (Главная)", sysname)
|
||||||
return
|
return
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
|
@ -218,7 +218,7 @@ def settings2():
|
||||||
|
|
||||||
setTitle("AutoZoom (Настройки)", sysname)
|
setTitle("AutoZoom (Настройки)", sysname)
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
if getConfig("use_colors"):
|
if getConfig("use_colors"):
|
||||||
color_val = f'{BGREEN}Вкл.{RESET}'
|
color_val = f'{BGREEN}Вкл.{RESET}'
|
||||||
elif not getConfig("use_colors"):
|
elif not getConfig("use_colors"):
|
||||||
|
@ -235,21 +235,21 @@ def settings2():
|
||||||
tg_var = f'{BRED}Не настроен{RESET}'
|
tg_var = f'{BRED}Не настроен{RESET}'
|
||||||
else:
|
else:
|
||||||
tg_var = f'{BRED}Не настроен{RESET}'
|
tg_var = f'{BRED}Не настроен{RESET}'
|
||||||
|
|
||||||
if getConfig("telegram_enabled"):
|
if getConfig("telegram_enabled"):
|
||||||
telegram_en_val = f'{BGREEN}Вкл.{RESET}'
|
telegram_en_val = f'{BGREEN}Вкл.{RESET}'
|
||||||
elif not getConfig("telegram_enabled"):
|
elif not getConfig("telegram_enabled"):
|
||||||
telegram_en_val = f'{BRED}Выкл.{RESET}'
|
telegram_en_val = f'{BRED}Выкл.{RESET}'
|
||||||
else:
|
else:
|
||||||
telegram_en_val = f'{BRED}ERROR{RESET}'
|
telegram_en_val = f'{BRED}ERROR{RESET}'
|
||||||
|
|
||||||
if getConfig("update_check"):
|
if getConfig("update_check"):
|
||||||
update_val = f'{BGREEN}Вкл.{RESET}'
|
update_val = f'{BGREEN}Вкл.{RESET}'
|
||||||
elif not getConfig("update_check"):
|
elif not getConfig("update_check"):
|
||||||
update_val = f'{BRED}Выкл.{RESET}'
|
update_val = f'{BRED}Выкл.{RESET}'
|
||||||
else:
|
else:
|
||||||
update_val = f'{BRED}ERROR{RESET}'
|
update_val = f'{BRED}ERROR{RESET}'
|
||||||
|
|
||||||
shutdown_time_val = getConfig("shutdown_timeout")
|
shutdown_time_val = getConfig("shutdown_timeout")
|
||||||
start_val = getConfig("start")
|
start_val = getConfig("start")
|
||||||
stop_val = getConfig("stop")
|
stop_val = getConfig("stop")
|
||||||
|
@ -298,9 +298,9 @@ def settings2():
|
||||||
print(f'{RESET}Нужно использовать целое число.')
|
print(f'{RESET}Нужно использовать целое число.')
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '2':
|
elif settings_choose == '2':
|
||||||
|
|
||||||
if sysname == 'windows':
|
if sysname == 'windows':
|
||||||
|
@ -317,10 +317,10 @@ def settings2():
|
||||||
print(f'{RESET}Нужно использовать комбинацию клавиш в виде текста.')
|
print(f'{RESET}Нужно использовать комбинацию клавиш в виде текста.')
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '3':
|
elif settings_choose == '3':
|
||||||
|
|
||||||
if sysname == 'windows':
|
if sysname == 'windows':
|
||||||
|
@ -337,18 +337,18 @@ def settings2():
|
||||||
print(f'{RESET}Нужно использовать комбинацию клавиш в виде текста.')
|
print(f'{RESET}Нужно использовать комбинацию клавиш в виде текста.')
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '4':
|
elif settings_choose == '4':
|
||||||
|
|
||||||
setConfig("telegram_enabled", not getConfig("telegram_enabled"))
|
setConfig("telegram_enabled", not getConfig("telegram_enabled"))
|
||||||
appendLog(f'Changed option "telegram_enabled" to {getConfig("telegram_enabled")}')
|
appendLog(f'Changed option "telegram_enabled" to {getConfig("telegram_enabled")}')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '5':
|
elif settings_choose == '5':
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
|
@ -367,30 +367,30 @@ def settings2():
|
||||||
except:
|
except:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
telegram_send.send(messages=[f"🎊 Конфигурация правильна, всё работает!"], parse_mode="markdown", conf=f"{files_folder}telegram.conf")
|
telegram_send.send(messages=[f"🎊 Конфигурация правильна, всё работает!"], parse_mode="markdown", conf=f"{files_folder}telegram.conf")
|
||||||
appendLog('Telegram Send successfully configured')
|
appendLog('Telegram Send successfully configured')
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '6':
|
elif settings_choose == '6':
|
||||||
setConfig("update_check", not getConfig("update_check"))
|
setConfig("update_check", not getConfig("update_check"))
|
||||||
appendLog(f'Changed option "update_check" to {getConfig("update_check")}')
|
appendLog(f'Changed option "update_check" to {getConfig("update_check")}')
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '7':
|
elif settings_choose == '7':
|
||||||
appendLog('Going to settings page 3')
|
appendLog('Going to settings page 3')
|
||||||
clear()
|
clear()
|
||||||
settings3()
|
settings3()
|
||||||
|
|
||||||
elif settings_choose == '8':
|
elif settings_choose == '8':
|
||||||
appendLog('Returned to settings page 1')
|
appendLog('Returned to settings page 1')
|
||||||
clear()
|
clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
|
@ -405,14 +405,21 @@ def settings3():
|
||||||
|
|
||||||
setTitle("AutoZoom (Настройки)", sysname)
|
setTitle("AutoZoom (Настройки)", sysname)
|
||||||
clear()
|
clear()
|
||||||
|
|
||||||
if getConfig("write_logs"):
|
if getConfig("write_logs"):
|
||||||
logs_val = f'{BGREEN}Вкл.{RESET}'
|
logs_val = f'{BGREEN}Вкл.{RESET}'
|
||||||
elif not getConfig("write_logs"):
|
elif not getConfig("write_logs"):
|
||||||
logs_val = f'{BRED}Выкл.{RESET}'
|
logs_val = f'{BRED}Выкл.{RESET}'
|
||||||
else:
|
else:
|
||||||
logs_val = f'{BRED}ERROR{RESET}'
|
logs_val = f'{BRED}ERROR{RESET}'
|
||||||
|
|
||||||
|
if getConfig("remove_old"):
|
||||||
|
remove_val = f'{BGREEN}Вкл.{RESET}'
|
||||||
|
elif not getConfig("remove_old"):
|
||||||
|
remove_val = f'{BRED}Выкл.{RESET}'
|
||||||
|
else:
|
||||||
|
remove_val = f'{BRED}ERROR{RESET}'
|
||||||
|
|
||||||
shutdown_time_val = getConfig("shutdown_timeout")
|
shutdown_time_val = getConfig("shutdown_timeout")
|
||||||
start_val = getConfig("start")
|
start_val = getConfig("start")
|
||||||
stop_val = getConfig("stop")
|
stop_val = getConfig("stop")
|
||||||
|
@ -425,13 +432,22 @@ def settings3():
|
||||||
print(f' {BRED}2.{RESET} Размер лога действий ({YELLOW}{str(getConfig("log_size"))} Кб{RESET})')
|
print(f' {BRED}2.{RESET} Размер лога действий ({YELLOW}{str(getConfig("log_size"))} Кб{RESET})')
|
||||||
print(f' {BBLACK}Размер файла лога превышая который он будет упакован в архив\n')
|
print(f' {BBLACK}Размер файла лога превышая который он будет упакован в архив\n')
|
||||||
|
|
||||||
print(f' {BRED}3.{RESET} Добавить в автозапуск')
|
print(f' {BRED}3.{RESET} Задержка до записи OBS ({YELLOW}{str(getConfig("obs_delay"))} сек.{RESET})')
|
||||||
print(f' {BBLACK}{winOnly(BRED, BBLACK, sysname, end=" ")}Автоматически запускать демона при входе в систему\n')
|
print(f' {BBLACK}Через сколько секунд будет отправлен сигнал записи экрана\n')
|
||||||
|
|
||||||
print(f' {BRED}4.{RESET} Сбросить все настройки')
|
print(f' {BRED}4.{RESET} Добавить в автозапуск')
|
||||||
|
print(f' {BBLACK}{winOnly(BRED, BBLACK, sysname, end=" ")}Автоматически запускать демона при входе в систему\n')
|
||||||
|
|
||||||
|
print(f' {BRED}5.{RESET} Удалять старые конференции ({remove_val})')
|
||||||
|
print(f' {BBLACK}Автоматически удалять одноразовые конференции которые были до дня запуска\n')
|
||||||
|
|
||||||
|
print(f' {BRED}6.{RESET} Кастомизация звуков и RPC')
|
||||||
|
print(f' {BBLACK}Изменить звуковые файлы и APPLICATION ID используемого Discord RPC\n')
|
||||||
|
|
||||||
|
print(f' {BRED}7.{RESET} Сбросить все настройки')
|
||||||
print(f' {BBLACK}Восстановить настройки по умолчанию\n')
|
print(f' {BBLACK}Восстановить настройки по умолчанию\n')
|
||||||
|
|
||||||
print(f' {BRED}5.{RESET} Назад')
|
print(f' {BRED}8.{RESET} Назад')
|
||||||
print(f' {BBLACK}Вернуться на предыдущую страницу{RESET}\n')
|
print(f' {BBLACK}Вернуться на предыдущую страницу{RESET}\n')
|
||||||
|
|
||||||
print(f' {BBLACK}Для переключения параметров Вкл/Выкл просто введите номер{RESET}') #\n Если окно приложения слишком мелкое - увеличьте его или листайте это меню{RESET}')
|
print(f' {BBLACK}Для переключения параметров Вкл/Выкл просто введите номер{RESET}') #\n Если окно приложения слишком мелкое - увеличьте его или листайте это меню{RESET}')
|
||||||
|
@ -453,11 +469,27 @@ def settings3():
|
||||||
print(f'{RESET}Нужно использовать целое число.')
|
print(f'{RESET}Нужно использовать целое число.')
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
appendLog(f'Changed option "log_size" to {getConfig["log_size"]}')
|
appendLog(f'Changed option "log_size" to {getConfig["log_size"]}')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if settings_choose == '3':
|
if settings_choose == '3':
|
||||||
|
|
||||||
|
try:
|
||||||
|
clear()
|
||||||
|
log_size_value = int(input(f'{RESET}Введите через сколько секунд отправлять сигнал записи:\n\n > {BRED}'))
|
||||||
|
setConfig("obs_delay", log_size_value)
|
||||||
|
continue
|
||||||
|
except:
|
||||||
|
clear()
|
||||||
|
print(f'{RESET}Нужно использовать целое число.')
|
||||||
|
time.sleep(2)
|
||||||
|
continue
|
||||||
|
|
||||||
|
appendLog(f'Changed option "obs_delay" to {getConfig["obs_delay"]}')
|
||||||
|
continue
|
||||||
|
|
||||||
|
if settings_choose == '4':
|
||||||
|
|
||||||
if sysname == "windows":
|
if sysname == "windows":
|
||||||
|
|
||||||
|
@ -468,18 +500,18 @@ def settings3():
|
||||||
|
|
||||||
shutil.copyfile('daemon.bat', 'startdaemon.bat')
|
shutil.copyfile('daemon.bat', 'startdaemon.bat')
|
||||||
|
|
||||||
with open('startdaemon.bat', 'r') as f :
|
with open('startdaemon.bat', 'r', encoding='utf-8') as f :
|
||||||
filedata = f.read()
|
filedata = f.read()
|
||||||
filedata = filedata.replace('python daemon.py', f'python {path}\\daemon.py')
|
filedata = filedata.replace('python daemon.py', f'python {path}\\daemon.py')
|
||||||
|
|
||||||
with open('startdaemon.bat', 'w') as f:
|
with open('startdaemon.bat', 'w', encoding="utf-8") as f:
|
||||||
f.write(filedata)
|
f.write(filedata)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
swl.create_lnk(f'{path}\\startdaemon.bat', f'{pathlib.Path.home()}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\AutoZoomDaemon.lnk')
|
swl.create_lnk(f'{path}\\startdaemon.bat', f'{pathlib.Path.home()}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\AutoZoomDaemon.lnk')
|
||||||
appendLog('Autorun script added')
|
appendLog('Autorun script added')
|
||||||
|
|
||||||
none = input(f'Демон AutoZoom был добавлен в автозапуск.\nПуть: {BRED}{pathlib.Path.home()}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\AutoZoomDaemon.lnk{RESET}\n\n > ')
|
none = input(f'{RESET}Демон AutoZoom был добавлен в автозапуск.\nПуть: {BRED}{pathlib.Path.home()}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\AutoZoomDaemon.lnk{RESET}\n\n > ')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
|
@ -487,13 +519,22 @@ def settings3():
|
||||||
none = input(f'Не удалось добавить в автозапуск:\n{BRED}{exp}{RESET}\n\n > ')
|
none = input(f'Не удалось добавить в автозапуск:\n{BRED}{exp}{RESET}\n\n > ')
|
||||||
appendLog(f'Could not add autorun: {exp}')
|
appendLog(f'Could not add autorun: {exp}')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
elif settings_choose == '5':
|
||||||
|
setConfig("remove_old", not getConfig("remove_old"))
|
||||||
|
appendLog(f'Changed option "remove_old" to {getConfig("remove_old")}')
|
||||||
|
|
||||||
|
elif settings_choose == '6':
|
||||||
|
appendLog('Going to customize page')
|
||||||
|
clear()
|
||||||
|
customize()
|
||||||
|
|
||||||
elif settings_choose == '4':
|
elif settings_choose == '7':
|
||||||
appendLog('Resetting configuration')
|
appendLog('Resetting configuration')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -521,17 +562,17 @@ def settings3():
|
||||||
else:
|
else:
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
clear()
|
clear()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif settings_choose == '5':
|
elif settings_choose == '8':
|
||||||
appendLog('Returned to settings page 2')
|
appendLog('Returned to settings page 2')
|
||||||
clear()
|
clear()
|
||||||
return
|
return
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
rpc.inMenu()
|
rpc.inMenu()
|
||||||
clear()
|
clear()
|
||||||
|
|
Loading…
Reference in New Issue