Здравствуйте, это моя самая первая история, и я хочу рассказать вам, как вы можете автоматизировать бесконечные карантинные встречи, используя python 3, pyautogui, google meet a̶n̶d̶ ̶p̶r̶o̶g̶r̶a̶m̶m̶i̶n̶g̶ ̶a̶n̶t̶i̶p̶a̶t̶t̶e̶r̶n̶s. Решил рассказать об этом, потому что пишу коммерческий код более 1 года и не знаю о такой полезной вещи, как автоматизация графического интерфейса для скучных задач (к тому же я чувствую себя счастливым после ее внедрения).
Я нахожу среду прокрутки библиотеки pyautogui и хочу
- начать встречу в Google
- скопировать URL встречи
- открыть телеграмму (отправить ее друзьям: D)
Давайте начнем !
Я пытаюсь автоматизировать начало собрания Google таким странным способом, потому что у него нет общедоступного API.
Шаг 1. Фундамент.
Все, что вам нужно, это Ubuntu 20.04 и интернет :). Сначала нам нужно создать наш проект, создать для него virtualenv и активировать его.
mkdir google_meet_quick_start cd google_meet_quick_start virtualenv env source env/bin/activate
Затем нам нужно установить pyautogui.
pip install pyautogui
И пакеты с иглами для этого.
sudo apt-get install scrot sudo apt-get install python3-tk sudo apt-get install python3-dev
Шаг 2. Помощник
Создайте скрипт, который поможет нам отслеживать текущее положение мыши.
nano mouse_cursor_postion.py
И вставьте в него этот код.
import pyautogui, sys print("Press Ctrl-C to quit.") try: while True: x, y = pyautogui.position() positionStr = "X: " + str(x).rjust(4) + " Y: " + str(y).rjust(4) print(positionStr, end="") print("\b" * len(positionStr), end="", flush=True) except KeyboardInterrupt: print("\n")
Запускаем скрипт.
python mouse_cursor_postion.py
Вы можете видеть координаты курсора.
Теперь можно найти координаты игольчатых элементов графического интерфейса.
Шаг 3. Пяутогуй пора!
Создайте еще одно окно терминала и файл для сценария.
nano start_meeting.py
Вставьте код ниже в файл.
import pyautogui as pag # We are trying to save some time so type pag is better than #pyautogui :D # You can stop execution if your mouse will jump to top side of #monitor pag.FAILSAFE = True # Coordinates of GUI element (was find using mouse_cursor_postion.py) CHROME_IN_APP_PANEL = {"x": 27, "y": 743} CHROME_SEARCH_BAR = {"x": 420, "y": 80} GOOGLE_MEET_CREATE_MEETING_URL = "https://meet.google.com/new\n" GOOGLE_MEET_DISABLE_CAMERA = {"x": 483, "y": 639} GOOGLE_MEET_CONNECT = {"x": 1051, "y": 475} GOOGLE_MEET_COPY_LINK = {"x": 698, "y": 415} TELEGRAM_IN_APP_PANEL = {"x": 107, "y": 739} # Implement clicks to needle elements pag.click(clicks=1, button="left", **CHROME_IN_APP_PANEL) # Sometimes we need to set delays to give time for page to load pag.moveTo(duration=0, **CHROME_SEARCH_BAR) pag.click(clicks=1, button="left") # "\n" - emulates enter pressing pag.typewrite(GOOGLE_MEET_CREATE_MEETING_URL, interval=0) pag.moveTo(duration=7, **GOOGLE_MEET_DISABLE_CAMERA) pag.click(clicks=1, button="left") pag.moveTo(duration=1, **GOOGLE_MEET_CONNECT) pag.click(clicks=1, button="left") pag.moveTo(duration=3, **GOOGLE_MEET_COPY_LINK) pag.click(clicks=1, button="left") # I need to open telegram to send meeting link to my friends pag.moveTo(duration=0, **TELEGRAM_IN_APP_PANEL) pag.click(clicks=1, button="left")
Как видите, я использую именованные словари для координат элементов графического интерфейса, чтобы код был более читабельным и не нарушал одно из старейших правил программирования - магические числа.
Термин магическое число или магическая константа относится к анти-шаблону использования чисел непосредственно в исходном коде. Это было названо нарушением одного из старейших правил программирования, восходящего к руководствам по COBOL, FORTRAN и PL / 1 1960-х годов.
Шаг 4. Проверьте свою удачу
У меня для вас плохие новости, если размер вашего монитора не 1366x768 пикселей - вам нужно установить координаты самостоятельно, используя скрипт mouse_cursor_postion.py: D.
Шаг 5. Начните встречу
Когда все будет хорошо, вы можете запустить скрипт и попробовать заполнить свободные 10 секунд до начала встречи.
python start_meeting.py
Удачи и счастья!
Картинка кота для привлечения внимания :)