feat: Add discount programs scraper and parser with tests#110
feat: Add discount programs scraper and parser with tests#110NewdlDewdl wants to merge 8 commits intoUTDNebula:developfrom
Conversation
Removed local replace directive for nebula-api. Checks should work
|
Note: This time checks failed due to the discount schema not existing in the nebula-api base repo yet. (Need PR). As of now the replace line has been removed and you can use the previous commit along with the repo version in the pull request in nebula-api for testing locally before confirming the merge. |
🔄 Status Update@mikehquan19 This PR is ready to merge after nebula-api PR #307. Current Failing Checks - Expected ✅The build is failing because the After PR #307 Merges:
What's Ready Now:
Just waiting on the schema PR to unlock this! Should be quick after that. |
|
@NewdlDewdl the schema PR has been merged so you can go ahead update the go.mod dependency :) Sorry for such a late response, Final was crazy. After that, this should be good to merge and get it up to production. |
No worries, I'll update the go.mod once I have some time. |
It's all good, I got this |
Add Discount Programs Scraper
Summary
Implements scraper and parser for UTD Student Government discount programs (https://sg.utdallas.edu/discount/)
Extracts 205 discount programs across 13 categories.
Closes #109
Dependencies
DiscountProgramschema)About
go.modReplace DirectiveThis PR includes a temporary replace directive for local development:
After nebula-api PR merges, remove this line and update:
Changes
New Files
scrapers/discounts.go- Scraper (saves raw HTML)parser/discountsParser.go- Parser (extracts to JSON)parser/discountsParser_test.go- Unit tests (7 functions, 26 test cases)DISCOUNT_SCRAPER.md- DocumentationModified Files
main.go- Added-discountsflaggo.mod- Added replace directiveREADME.md- Updated commandsrunners/weekly.sh- Added to weekly scheduleFeatures
Usage
Testing
Covers: parsing, validation, HTML entities, phone detection, email extraction
Related PRs
DiscountProgramschema (merge first)