An automation tool for monitoring and registering slots on SignUpGenius pages. Originally designed for UWM Food Pantry appointments but adaptable for any SignUpGenius registration.
- Automatic monitoring of web pages for new SignUpGenius links
- Scheduled checks at specified times
- Direct SignUpGenius URL support
- Configurable through command line or config file
- Headless or visible browser operation
- Automatic form filling and registration
- Logging system for tracking operations
- Python 3.6+
- Chrome browser installed
- Required Python packages (install via
pip install -r requirements.txt
):- selenium
- webdriver-manager
- schedule
- python-dotenv
- requests
- Clone the repository
- Install requirements:
pip install -r requirements.txt
- Configure your settings using either:
- Command line arguments
- Config file (config.json)
You can configure the tool using either command line arguments or by updating the config.json file.
# Update configuration
python signupgenius_automator.py --configure --first-name "John" --last-name "Doe" --email "john@example.com"
# Show current configuration
python signupgenius_automator.py --show-config
Create or modify config.json
:
{
"user": {
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com"
},
"schedule": {
"day_of_week": 0, // 0=Monday through 6=Sunday
"start_time": "09:30", // When to start checking on scheduled day
"end_time": "10:00", // When to stop checking
"check_interval": 10, // Minutes between checks
"times": ["09:30"] // Legacy schedule times
},
"urls": {
"default": "https://www.example.com/signup-page"
},
"settings": {
"headless": true,
"stop_after_success": true,
"skip_check": false
}
}
The tool now supports more precise scheduling:
day_of_week
: Configure which day to run (0=Monday through 6=Sunday)start_time
: When to begin checking on the scheduled dayend_time
: When to stop checking if no slot is foundcheck_interval
: Minutes between each check attempt (default: 10)
The automation will:
- Run only on the configured day of the week
- Start checking at the specified start_time
- Check every check_interval minutes until either:
- A slot is successfully booked
- The end_time is reached
- No slots are available
# Run immediately with current configuration
python signupgenius_automator.py --run-now
# Run with specific URL
python signupgenius_automator.py --run-now --url "https://www.signupgenius.com/go/example"
# Run in visible browser mode
python signupgenius_automator.py --run-now --visible
# Skip URL checking for direct SignUpGenius links
python signupgenius_automator.py --run-now --url "https://www.signupgenius.com/go/example" --skip-check
# Schedule checks at specific times
python signupgenius_automator.py --times "10:00" "14:00" "18:00"
# Stop running automation
python signupgenius_automator.py --stop
--configure
: Update configuration--show-config
: Display current configuration--first-name
: Set first name--last-name
: Set last name--email
: Set email address--headless
: Run in headless mode--visible
: Run in visible browser mode--stop-after-success
: Stop after successful registration--run-now
: Run immediately--url
: Specify URL to check--skip-check
: Skip checking for signup links in URL--times
: Set schedule times--stop
: Stop running automation
The tool maintains a log file (signupgenius_automation.log
) with detailed information about its operations. Check this file for troubleshooting and verification of actions.
You can stop the automation in three ways:
- Press Ctrl+C in the terminal
- Create a file named
stop_automation.txt
- Run the script with
--stop
argument
Feel free to submit issues and enhancement requests.
MIT License