KnightHacks / projects-proposals-2021

The centralized location for all projects proposal submissions for the the fall 2021 semester.
https://club.knighthacks.org/
2 stars 3 forks source link

Professor Who #10

Open cayb0rg opened 2 years ago

cayb0rg commented 2 years ago

What is your full name?

Cayli Henning

What is your Knights email?

cayli.henning@knights.ucf.edu

Are you interested in presenting your idea at the interest meeting?

No

What's your idea about?

The purpose of this project is to extract professor ratings from RMP and inject them into the class sections page when searching for classes inside myUCF. It solves the problem of having to manually search for professors on RMP every time you browse class sections.

Possible implementation: Since there is no official RMP API, we could create an API that uses a web scraper to extract data from RMP's website. The web scraper could be coded in Python, JavaScript, or some other language. The data could then be injected into UCF's class section page using a Chrome/Firefox Web Extension.

Note: I realize this idea isn't new. Others have created RMP APIs and implemented them into their own college websites. I just thought it would be neat to have for UCF, and also a great way to learn about web scraping, RESTful APIs, and web extension development.

ElijahMSmith commented 2 years ago

This is a very cool idea! That would save me a LOT of work and forgetting to check the rating then having someone offhandedly mention when I talk to them that a professor I signed up for is the worst and I should avoid at all costs. I also like your proposed naming choice :)

I like that you've already given some details for what could be used to achieve these tasks. I agree with everything you listed: Extensions would be the best way to monitor when a search result is found and adding some additional content to the page. In terms of the web scrapping, some additional things will probably need to be considered at some point:

When is this web scraping going to occur? You could set up a process that's hosted somewhere in the cloud that performs the task every x interval of time and stores the results somewhere online. Then, when the extension detects a class search, it can send a GET request to the storage place and pull the results for the professors being listed. The other thing that would make sense (and this might be what you were already thinking) would be to have the extension perform the web request mocking what RMP sends when you query for the professor's name and pull the data from the response.

This probably would take a decent amount of the semester, but it might not last an entire semester. Some other things that might be cool additions if you need extra features:

cayb0rg commented 2 years ago

Great suggestions! Those features would definitely be cool to have. Concerning the web scraping, I worry about having an external API make the GET requests because of rate limiting. Too many requests from a single IP might look suspicious, but if they're spaced out enough it might work (this is probably what you meant by making the request every x interval of time). I also worry that the same-origin policy will block a browser extension from making requests. There's probably ways around this though.