Veil is an open-source program written in Golang designed to efficiently scrape, process, and manage class and college enrollment data at De Anza and Foothill College. In addition to offering a seamless way to search and export class data, it also supports class enrollment and class enrollment monitoring.
Check out the Veil-GUI version here. Linkedin
- Class Search & Export: Ability to search for classes and export the results in CSV format.
- Unofficial Transcript: Retrieve and export your previously enrolled courses in CSV format.
- Enrollment: Enroll in courses in lighting speed.
- Watch: Watch the enrollment data for classes, notifying you if there is a waitlist or enrollment spot available and signs up for the waitlist spot for you.
- Golang: You need a version >=1.21.4 of Go installed.
For the tool to function correctly, "settings.csv" is required to be setup properly.
Parameter | Description | Example Values |
---|---|---|
Username | Your FHDA Username | 00000000 |
Password | Your FHDA Password | TestTestPassword123 |
Term | Term | 2024 Summer De Anza |
Subject | Subject (Used for Class Search) | MATH |
Mode | Type of Task | Signup |
CRNs | Course Reference Numbers | 47520,44412,41846 |
Webhook | Discord Webhook URL (For Notifications) | https://discord.com/api/webhooks/[gone] |
SavedRegistrationTime | Saved Registration Time (Use Signup Mode) | (Do not Edit on your own) |
To create a Discord Webhook, See How to Create a Discord Webhook.
To edit settings.csv, a spreadsheet editor is recommended. See Rons Editor or Google Sheets.
To compile this program, run build.sh for the program to be compiled.
To run this program, run
go run .
Scenario 1: If I want the program to signup classes for me, I would run Signup mode and fill in settings.csv. If I want complete automation - run Signup or Release mode first because it'll save your registration time. After the registration time is saved in settings.csv, the program will sleep until 5 minutes before registration opens.
Scenario 2: I'm currently looking at a class but the waitlist is full! I would run Watch mode and fill in settings.csv. If you see "Getting Enrollment Data (XXXXX)" this is completely normal. Once a waitlist spot is open, Watch mode will start a Signup task and try to enroll you in that waitlist spot.
Scenario 3: How do I get the catalog of a unpublished term? You would still use Search mode. The task will build the Term ID locally instead of using FHDA's API because that term isn't published yet.
- Release: Essentially the same as Signup mode. However, the program will wait until (SavedRegistrationTime - 5 minutes) before running. For example, if my registration time was 8:00 AM, the program will sleep until 7:55 AM. (Meaning you can run this program overnight!)
- Signup: Enroll in classes with specified CRNs (Course Refence Numbers).
- Search: Search for all the sections based on given term, section and subject.
- Transcript: Export your "unofficial transcript", or data of previously enrolled courses.
- Watch: Monitor enrollment data, sending a notification if a waitlist or enrollment spot is available. If a waitlist spot is available, it'll run a Signup mode task and enroll in the waitlist.