diff --git a/daemon.py b/daemon.py index 992d116..e4c8b7a 100644 --- a/daemon.py +++ b/daemon.py @@ -10,7 +10,6 @@ import pathlib import json import getopt import sys -import winsound from random import randint from pathlib import Path from datetime import datetime, date, timedelta @@ -30,6 +29,11 @@ if os.name == 'nt': else: clear = lambda: os.system('clear') +if os.name == 'nt': + import winsound +else: + import playsound + clear() os.system("title Загрузка daemon...") @@ -100,11 +104,18 @@ def getLessons(): return lessons_list def getState(): - output = os.popen('wmic process get description, processid').read() - if "CptHost.exe" in output: - return True - else: - return False + if os.system == 'nt': + output = os.popen('wmic process get description, processid').read() + if "CptHost.exe" in output: + return True + else: + return False + + ### KODIL TUT + + #else: + #check_result = subprocess.check_output('ps -efww', shell=True) + #if def listLessons(from_where='remove'): try: @@ -243,7 +254,15 @@ def addLesson(): continue clear() - lesslink = input(f'{RESET}Введите ссылку на конференцию:\n\n > {BRED}') + lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}') + + if lesslink.replace(' ', '') == '1': + clear() + lessid = input(f'{RESET}Введите идентификатор конференции:\n{BBLACK}Формат: {BRED}012 3456 7890 {BBLACK} либо {BRED}01234567890{RESET}\n\n > {BRED}') + clear() + lesspasswd = input(f'{RESET}Введите код доступа (пароль) конференции:\n\n > {BRED}') + lesslink = f'https://us01web.zoom.us/j/{lessid.replace(" ", "")}?pwd={lesspasswd.replace(" ", "")}' + local_lessons.update({"link": lesslink}) while True: @@ -407,10 +426,18 @@ def editLesson(): continue clear() - lesslink = input(f'{RESET}Введите ссылку на конференцию\n\nОригинальная ссылка: {BRED}{lessons_got[edi]["link"]}{RESET}\n\n > {BRED}') - + lesslink = input(f'{RESET}Введите ссылку на конференцию:\n{BBLACK}Формат: {BRED}https://us01web.zoom.us/j/ИДЕНТИФИКАТОР?pwd=ПАРОЛЬ{RESET}\n{BBLACK}Либо введите {YELLOW}1 {BBLACK}для добавления по номеру и паролю{RESET}\n\n > {BRED}') + + if lesslink.replace(' ', '') == '1': + clear() + lessid = input(f'{RESET}Введите идентификатор конференции:\n{BBLACK}Формат: {BRED}012 3456 7890 {BBLACK} либо {BRED}01234567890{RESET}\n\n > {BRED}') + clear() + lesspasswd = input(f'{RESET}Введите код доступа (пароль) конференции:\n\n > {BRED}') + lesslink = f'https://us01web.zoom.us/j/{lessid.replace(" ", "")}?pwd={lesspasswd.replace(" ", "")}' + if lesslink == '': lesslink = lessons_got[edi]["link"] + local_lessons.update({"link": lesslink}) while True: @@ -595,11 +622,18 @@ def tgsend(enabled, message): tg_file = open(files_folder+'telegram.conf', 'r', encoding="utf-8") tg_text = tg_file.read() if tg_text != 'Not Configured': - telegram_send.send(messages=[f"{message}"], parse_mode="markdown", conf=files_folder+"telegram.conf") + try: + telegram_send.send(messages=[f"{message}"], parse_mode="markdown", conf=files_folder+"telegram.conf") + except as Exception: + print(f'{nowtime()} Не удалось отправить Telegram сообщение "{message}" (Ошибка: {Exception})') def playSound(soundname): if getConfig("sounds"): - winsound.PlaySound(sounds_folder+soundname+".wav", winsound.SND_FILENAME) + + if os.name == 'nt': + winsound.PlaySound(sounds_folder+soundname+".wav", winsound.SND_FILENAME) + else: + playsound.playsound(sounds_folder+soundname+".wav") def settings(): try: @@ -1101,17 +1135,61 @@ def main(source='deamon'): rpc.waitLesson(lesson_name, waiting_time_unix) waitStart(lesson_time, lambda: act(100)) - webbrowser.open(lesson_url) + + try: + if os.name == 'nt': + i = 0 + + while i < 10: + lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=") + i += 1 + + lesson_url = lesson_url.replace("&", "^&") + lesson_url = lesson_url.replace("?pwd", "^&pwd") + + if getConfig("debug"): + print(lesson_url) + + os.system(f'start {lesson_url}') + else: + i = 0 + + while i < 10: + lesson_url = lesson_url.replace(f"https://us0{i}web.zoom.us/j/", "zoommtg://zoom.us/join?action=join&confno=") + i += 1 + + lesson_url = lesson_url.replace("?pwd=", "&pwd=") + + if getConfig("debug"): + print(lesson_url) + + os.system(f'xdg-open "{lesson_url}"') + except: + try: + webbrowser.open(lesson_url) + except: + print(f'{nowtime()} Открыть урок {CYAN}{lesson_name}{RESET} не удалось ни напрямую, ни в браузере.') + easteregg_number = randint(1, 100000) if easteregg_number == 69420: webbrowser.open('https://www.pornhub.com/view_video.php?viewkey=ph5f3eb1e206aa8') print(f'{nowtime()} Ждём {BRED}10 секунд{RESET} до отслеживания Zoom...') time.sleep(10) + retries = 0 + while not getState(): if getConfig("debug"): print(f'{nowtime()} Урок задерживается, ждём...') time.sleep(5) + retries += 1 + + if retries == 36: + tgsend(getConfig("telegram_enabled"), f"⚠ Задержка урока *{lesson_name}* превысила 3 минуты {profilename}") + + if retries == 120: + tgsend(getConfig("telegram_enabled"), f"⚠ Задержка урока *{lesson_name}* превысила 10 минут {profilename}") + continue record_now = False @@ -1237,7 +1315,7 @@ def main(source='deamon'): if getConfig("shutdown_enabled"): if getConfig("end_mode") == 'shutdown': try: - tgsend(getConfig("telegram_enabled"), f"⚠ Уроки кончились, автовыключение {profilename}через {nowtime(False, False, False)} мин...") + tgsend(getConfig("telegram_enabled"), f"⚠ Уроки кончились, автовыключение {profilename}через {str(getConfig('shutdown_timeout'))} мин...") print(f'{nowtime()} Ваш ПК автоматически выключится через {BRED}{str(getConfig("shutdown_timeout"))} мин{RESET}.') playSound("shutdown") end_unix = int(time.time())+getConfig("shutdown_timeout")*60 @@ -1290,4 +1368,4 @@ if __name__ == '__main__': import sys clear() - main() \ No newline at end of file + main() diff --git a/daemon.sh b/daemon.sh new file mode 100644 index 0000000..057f5b1 --- /dev/null +++ b/daemon.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "Running AutoZoom daemon with Python 3. Please read README.md!" +python3 daemon.py \ No newline at end of file diff --git a/libinstaller.py b/libinstaller.py index 2205371..f46f51a 100644 --- a/libinstaller.py +++ b/libinstaller.py @@ -61,6 +61,11 @@ try: except ModuleNotFoundError: libs.append("requests") ################################### +try: + import playsound +except ModuleNotFoundError: + libs.append("playsound") +################################### try: from zipfile import ZipFile except ModuleNotFoundError: @@ -102,6 +107,7 @@ if len(libs) > 0: import telegram_send import wget import requests + import playsound import asyncio from zipfile import ZipFile from pypresence import Presence diff --git a/main.py b/main.py index 254641f..888254b 100644 --- a/main.py +++ b/main.py @@ -30,7 +30,7 @@ import requests import keyboard from zipfile import ZipFile -version = 1.7 +version = 1.8 path = Path(__file__).resolve().parent def mainMenu(): @@ -273,4 +273,4 @@ if __name__ == '__main__': keyboard.release('alt, enter') os.system("title AutoZoom (Главная)") mainMenu() - sys.exit() \ No newline at end of file + sys.exit() diff --git a/rpc.py b/rpc.py index 63e6fbd..3a47a41 100644 --- a/rpc.py +++ b/rpc.py @@ -6,7 +6,7 @@ import sys from colors import * from functions import * -version = '1.6' +version = '1.8' import libinstaller from pypresence import Presence @@ -27,6 +27,8 @@ else: connected = False def disconnect(): + global connected + if getConfig("use_rpc"): try: RPC.close() @@ -35,6 +37,8 @@ def disconnect(): pass def connect(): + global connected + try: RPC.connect() connected = True @@ -56,11 +60,11 @@ def waitLesson(lesson, start): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def onLesson(lesson, start): try: @@ -71,11 +75,11 @@ def onLesson(lesson, start): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def inMenu(): try: @@ -86,11 +90,11 @@ def inMenu(): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def shutdown(end): try: @@ -101,11 +105,11 @@ def shutdown(end): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def inSettings(): try: @@ -116,11 +120,11 @@ def inSettings(): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def inEditor(): try: @@ -131,11 +135,11 @@ def inEditor(): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def inUpdater(): try: @@ -146,11 +150,11 @@ def inUpdater(): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) def inHelp(): try: @@ -161,11 +165,11 @@ def inHelp(): except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) except AssertionError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) @@ -176,7 +180,7 @@ if __name__ == "__main__": except AttributeError: if getConfig("debug"): print(f'{RESET}Модуль {BRED}Discord RPC {RESET}не смог подключиться.\nВозможно, ваш {CYAN}Discord {RESET}не открыт.') - time.sleep(2) + time.sleep(1) ################################################################################ @@ -250,7 +254,7 @@ if __name__ == "__main__": # ) # discord_rpc.update_connection() - # time.sleep(2) + # time.sleep(1) # discord_rpc.run_callbacks() # discord_rpc.shutdown() @@ -288,4 +292,4 @@ if __name__ == "__main__": # 'large_image_text': f'AutoZoom • v{version}\nhttp://bit.ly/auto_zoom', # 'small_image_text': 'Ожидание', # } - # ) \ No newline at end of file + # ) diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..1b23950 --- /dev/null +++ b/start.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "AutoZoom needs Python 3 to work. Please read README.md!" +python3 main.py