🎓 Intelligent Course Registration Automation for TU Wien
A Python application that automates the registration process for courses and exams on TU Wien's TISS platform using Selenium WebDriver. The application provides both a command-line interface and a modern web-based frontend.
- 🔐 Automated Login: Secure authentication with TISS credentials
- 🎯 Smart Navigation: Automatically navigates to course/exam pages
- 📋 Group Selection: Select specific groups and time slots
- 🔢 Study Number Support: Automatic study number selection
- ⚡ Instant Registration: Submit registration forms automatically
- ⏰ Scheduled Execution: Wait until a specific datetime to register
- 🌐 Web Interface: Modern, responsive web frontend
- 📊 Request Monitoring: Track and manage registration requests
- 💾 Configuration Persistence: Save and load configurations
- 🔄 Real-time Status: Live updates on registration progress
EduFlow Pro/
├── src/ # Source code
│ ├── main.py # Main Flask application (no auth - default)
│ ├── main_auth.py # Flask application (with auth)
│ ├── auth_server.py # Authentication server
│ ├── tiss_auto_login.py # Core automation script
│ └── setup.py # Setup script
├── app.exe # Compiled executable (main.py)
├── templates/ # HTML templates
│ ├── index.html # Main application page
│ ├── generate.html # Configuration page
│ ├── login.html # Login page
│ └── requests.html # Requests monitoring page
├── static/ # Static assets
│ ├── css/ # Stylesheets
│ │ ├── styles.css # Main stylesheet
│ │ ├── login.css # Login page styles
│ │ ├── generate.css # Configuration page styles
│ │ └── requests.css # Requests page styles
│ └── js/ # JavaScript files
│ ├── script.js # Main JavaScript
│ ├── login.js # Login functionality
│ ├── generate.js # Configuration functionality
│ └── requests.js # Requests functionality
├── docs/ # Documentation
│ ├── DEVELOPMENT.md # Development guide
│ ├── tiss_readme.md # Detailed documentation
│ └── website.jpg # Website preview image
├── config/ # Configuration files
│ └── README.md # Configuration guide
├── examples/ # Example files
│ ├── cli_config_example.json # CLI configuration example
│ └── README.md # Examples documentation
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
├── README.md # This file
└── PROJECT_STRUCTURE.md # Project structure documentation
- Python 3.8+
- Google Chrome browser
- TISS account with valid credentials
-
Clone the repository:
git clone <repository-url> cd EduFlow-Pro
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
# Option 1: With authentication python src/main.py # Option 2: Without authentication (simpler) python src/main_noAuth.py # Option 3: Use compiled executable (no Python required) ./app.exe
-
Open your browser:
- Navigate to
http://127.0.0.1:5000 - The application will open automatically
- Navigate to
The project includes a compiled executable (app.exe) that contains:
- Complete application with all dependencies bundled
- No Python installation required on the target machine
- Templates included - all HTML/CSS/JS files embedded
- Based on main_noAuth.py - simplified version without authentication
- Portable - can be run on any Windows machine
Usage:
# Simply double-click or run from command line
app.exeThe executable will start the web server and automatically open your browser to the application.
The application uses a web-based interface where you:
- Fill out a form with your TISS credentials and course information
- The configuration is stored in a local SQLite database
- When you start a registration, the automation script runs with your configuration
- You can monitor progress and manage requests through the web interface
No config.json files needed - everything is handled through the web interface!
The EduFlow Pro application features a modern, responsive web interface:
- Clean, intuitive form for entering TISS credentials and course information
- Real-time validation with helpful error messages
- Mode selection for different registration types (Exam, Group, Course)
- Scheduling options for timed registration
- Auto-save functionality to preserve your configuration
- Live status updates showing registration progress
- Request history with detailed status information
- Cancel functionality for running requests
- Success/failure tracking with timestamps
- 🎨 Modern UI with gradient backgrounds and smooth animations
- 📱 Responsive design that works on desktop and mobile
- ⚡ Real-time updates without page refreshes
- 💾 Automatic saving of your configuration
- 🔍 Input validation with helpful error messages
- 📊 Progress tracking with visual status indicators
-
Configure Registration:
- Fill in your TISS credentials
- Enter course information (DSWID, DSRID, semester, course number)
- Select registration mode (exam, group, or course)
- Set group index and optional slot index
- Schedule registration time (optional)
-
Validate Configuration:
- Click "Validate Configuration" to check your settings
- Fix any errors before proceeding
-
Start Registration:
- Click "Start Registration" to begin the process
- Monitor progress in real-time
-
Manage Requests:
- View all registration requests
- Cancel running requests if needed
- Check status and results
For advanced users who want to run the automation script directly:
-
Create configuration file:
cp examples/cli_config_example.json config.json
-
Edit configuration:
{ "username": "e12345678", "password": "your_password", "dswid": "ABC123", "dsrid": "XYZ789", "semester": "2025S", "courseNr": "123456", "group_index": 0, "slot_index": 0, "study_number": "123 456", "mode": "exam", "anmelden_time": "2025-09-22 10:00:00" } -
Run automation:
python src/tiss_auto_login.py --config config.json
Note: The web interface is the recommended way to use this application. The CLI is mainly for advanced users or integration purposes.
The web interface provides a user-friendly form to configure your registration. Here are the parameters you'll need:
| Parameter | Description | Example |
|---|---|---|
username |
TISS username | "e12345678" |
password |
TISS password | "your_password" |
dswid |
TISS session ID | "ABC123" |
dsrid |
TISS request ID | "XYZ789" |
semester |
Target semester | "2025S" |
courseNr |
Course number | "123456" |
group_index |
Group index (0-based) | 0 |
| Parameter | Description | Example |
|---|---|---|
slot_index |
Time slot index | 1 |
study_number |
Study number | "123 456" |
mode |
Registration mode | "exam", "group", "course" |
anmelden_time |
Scheduled time | "2025-09-22 10:00:00" |
- Log into TISS and navigate to your course/exam page
- Extract from URL:
https://tiss.tuwien.ac.at/education/course/examDateList.xhtml?dswid=ABC123&dsrid=XYZ789&semester=2025S&courseNr=123456 - Count groups on the page (starting from 0)
- Web Interface: Configuration is automatically saved in a local SQLite database
- CLI Mode: Uses JSON configuration files (see examples/cli_config_example.json)
For multi-user environments, run the authentication server:
python src/auth_server_start_too.pyThe server runs on port 7000 by default.
Set the anmelden_time parameter to schedule registration:
{
"anmelden_time": "2025-09-22 10:00:00"
}The script will wait until the specified time before executing.
exam: Exam registrationgroup: Group registrationcourse: Course registration
-
Install development dependencies:
pip install -r requirements.txt
-
Run tests:
python -m pytest tests/
-
Build executable:
python src/setup.py
- Frontend: HTML/CSS/JavaScript with modern UI
- Backend: Flask web framework
- Automation: Selenium WebDriver
- Database: SQLite for request tracking
- Authentication: JWT-based (optional)
- Python 3.8+
- Flask 2.2.0+
- Selenium 4.10.0+
- WebDriver Manager 4.0.0+
- Google Chrome browser
- ChromeDriver (automatically managed)
-
ChromeDriver not found:
- The application automatically downloads ChromeDriver
- Ensure you have internet connection on first run
-
Login fails:
- Verify TISS credentials
- Check if TISS is accessible
- Ensure correct username format (e.g., e12345678)
-
Group not found:
- Verify group_index (starts at 0)
- Check if groups are available on the page
- Ensure correct course number
-
Registration fails:
- Check if registration is open
- Verify all required parameters
- Check TISS page structure
Enable debug logging by setting environment variable:
export FLASK_DEBUG=1
python src/main.pyImportant: This application interacts with TISS automatically. Please use responsibly and follow TU Wien's rules and regulations for course registration.
This project is provided as-is for educational purposes. Users are responsible for compliance with TU Wien's terms of service and applicable regulations.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For issues and questions:
- Check the troubleshooting section
- Review the documentation
- Open an issue on GitHub
The project includes a pre-built executable (app.exe) that contains:
- Complete application with all dependencies
- Templates embedded - no external files needed
- Based on main_noAuth.py - simplified version without authentication
- Portable - runs on any Windows machine without Python installation
To build your own executable:
# Install PyInstaller
pip install pyinstaller
# Build executable (main.py version - no auth, default)
pyinstaller --onefile --add-data "templates;templates" --add-data "static;static" --name app src/main.py
# Build executable (main_auth.py version with auth)
pyinstaller --onefile --add-data "templates;templates" --add-data "static;static" --name app_auth src/main_auth.pyThe app.exe file can be distributed independently:
- No Python installation required on target machines
- All dependencies bundled
- Templates and static files included
- Simply double-click to run
- Added modern web interface
- Implemented request monitoring
- Added configuration persistence
- Improved error handling
- Added authentication system
- Created standalone executable
- Initial release
- Command-line interface
- Basic automation functionality
- Selenium-based registration
Made with ❤️ for TU Wien students
