Extract participant names and email addresses from your UIU ELMS courses. The project now ships with both the original Python CLI tool and a web-friendly API plus static front-end that you can publish on GitHub Pages.
elms_extractor.py # Reusable extraction utilities + CLI entrypoint
backend/app.py # FastAPI backend exposing the extractor to the web UI
backend/requirements.txt
docs/ # Static front-end (HTML/CSS/JS) for GitHub Pages
- Login once and reuse the authenticated ELMS session while it is valid.
- List all enrolled courses with human-friendly names.
- Download per-course CSV rosters and plain-text email lists.
- Bulk export every course in a single ZIP archive.
- Host the UI on GitHub Pages (static assets) while running the API anywhere you choose.
python -m venv .venv
. .venv/Scripts/activate # PowerShell: .venv\Scripts\Activate.ps1
pip install -r backend/requirements.txt
python elms_extractor.pyFollow the interactive prompts to export course files into the current directory.
-
Create and activate a virtual environment.
-
Install dependencies:
pip install -r backend/requirements.txt
-
Start the FastAPI server:
uvicorn backend.app:app --reload --host 0.0.0.0 --port 8000
-
(Optional) Restrict the browser origins that may call your API by setting
ALLOWED_ORIGINSbefore launching the server, for example:$env:ALLOWED_ORIGINS = "https://your-github-username.github.io" uvicorn backend.app:app --host 0.0.0.0 --port 8000
You can deploy the same app to any Python-friendly hosting provider (Render, Railway, Fly.io, Azure, etc.). Keep the service behind HTTPS because you will post credentials to it.
POST /api/login– authenticate, receive a short-lived session token, and the initial course list.GET /api/courses– refresh the course list.POST /api/courses/{course_id}/extract– generate download-ready CSV + TXT files.POST /api/courses/extract-all– generate a ZIP containing every course.
- Edit
docs/config.jsand setapiBaseUrlto the public URL of the backend you host. - Commit and push the repository.
- Enable GitHub Pages with the docs/ folder as the source.
- Visit the published URL, log in, and start exporting.
The front-end never stores your credentials; they are sent directly to your own backend over HTTPS. Downloads are generated in-browser from the API responses.
- Always serve the backend over HTTPS to protect credentials.
- Rotate the backend session token by logging out from the UI when you finish.
- Avoid hosting the backend where you do not control TLS certificates or logs.
This project is for educational purposes. Use it responsibly and in accordance with UIU policies.

