Send a Discord webhook when a YRDSB Google Meet is detected to be open
Ensure that either Mozilla Firefox and geckodriver or Google Chrome and a csc
-patched chromedriver are installed.
WARNING: It is critical that a csc
patched chromedriver is used as otherwise Google will block you. To patch the binary, perform a find and replace of all csc_
strings and replace them with a different three-character string, e.g., dog_
.
Install dependencies:
pip3 install --requirement requirements.txt
Run the script:
python3 ./schoolschedule.py
Usage: python schoolschedule.py [options...]
where options include:
General options
--config <path> Use configuration file at <path>.
--verbose Run with extended output (debug mode).
--run-on-weekends Do not exit when weekend is detected.
--dry-run Do not send Discord messages.
--help, -h Print this help screen.
Browser options
--worker-visible Run with the browser visible.
--render-backend <driver> Use <driver> as the browser backend (either "geckodriver" or "chromedriver").
--driver-path <path> Use <path> as the path to the driver executable.
--driver-log <path> Use <path> as the path to the driver log file.
Secrets options
--gapps-username <username> Use <username> as the YRDSB Google username for Meet lookups.
--yrdsb-password <password> Use <password> as the password for authentication with YRDSB for Meet lookups.
--discord-url <url> Use <url> as the URL to send Discord webhooks to.
--admin-user-id <id> Use <id> as the Discord user ID to ping in case of emergencies.
Class data is stored in the config.json
configuration file with each class requiring the following fields:
The name of the class used in debug messages and sent to Discord.
The name of the teacher sent to Discord.
The period number of the class, indicating which time slot it normally occupies. Can be overriden by the use_class_order
and class_order
parameters.
The Discord role ID that should be mentioned when a meeting is detected to be open. This can be obtained by right-clicking a role in Discord's desktop versions in developer mode and clicking "Copy ID". This role must be mentionable by all users.
The link that the program will scrape to check if a meeting is open. If the link is not a Google Meet link (does not contain meet.google.com
), the program will send a webhook at the first available opportunity five minutes prior to the class's start_time
.
This option controls whether this class will be searched for.
Must be in 24-hour time, in the format HH:mm
. The program starts checking if meetings are open five minutes prior to this time.
Must be in 24-hour time, in the format HH:mm
. The program stops checking if meetings are open after this time.