This repository has been archived by the owner on Oct 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
106 lines (71 loc) · 2.99 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
from selenium import webdriver as wd
from selenium.webdriver.chrome.options import Options
from time import sleep
from datetime import datetime as dt
import json
""" Настройки браузера"""
options = Options()
options.add_argument("--disable-infobars")
options.add_argument("start-maximized")
options.add_argument("--disable-extensions")
options.add_experimental_option("prefs", {
"profile.default_content_setting_values.media_stream_mic": 1,
"profile.default_content_setting_values.media_stream_camera": 1,
"profile.default_content_setting_values.notifications": 1
})
def import_settings() -> dict:
""" Функция импортирования настроек """
with open("settings.json", 'r+') as f:
return json.load(f)
def meet_login(driver) -> None:
""" Функция авторизации """
driver.find_element_by_class_name("NPEfkd").click()
for i in range(2):
settings = import_settings()
data = settings['login'] if i == 0 else settings['password']
driver.find_element_by_class_name("whsOnd").send_keys(data)
driver.find_element_by_class_name("VfPpkd-RLmnJb").click()
sleep(1)
sleep(5)
def disable_mic_and_cam(driver) -> None:
""" Функция отключения микрофона и веб-камеры """
settings = import_settings()
if settings['DISABLE_MIC'] is True:
driver.find_element_by_class_name("sUZ4id").click()
if settings['DISABLE_CAM'] is True:
driver.find_element_by_class_name("GOH7Zb").click()
def join(driver) -> None:
""" Функция входа на встречу """
try:
meet_login(driver)
disable_mic_and_cam(driver)
sleep(1)
driver.find_element_by_class_name("NPEfkd").click()
except Exception:
print("Неверно указаны данные для входа в settings.json или неверная ссылка в schedule.json")
driver.close()
def meeting_loop(url, end_time) -> None:
""" Функция запуска браузера и ожидания конца встречи """
driver = wd.Chrome(options=options)
driver.get(url)
join(driver)
while True:
if end_time[0] == dt.now().hour and end_time[1] == dt.now().minute:
driver.close()
print("Встреча законилась.")
break
sleep(20)
def main() -> None:
""" Основная функция с планировщиком """
print("Скрипт запущен.")
with open("schedule.json", 'r+') as f:
schedule = json.load(f)
while True:
for item in schedule:
if item['start'][0] == dt.now().isoweekday():
if item['start'][1] == dt.now().hour and item['start'][2] == dt.now().minute:
print("Выполняется вход...")
meeting_loop(url=item['url'], end_time=item['end'])
sleep(20)
if __name__ == '__main__':
main()