# UCLA CLI
[![PyPI - Version](https://img.shields.io/pypi/v/ucla-cli.svg)](https://pypi.org/project/ucla-cli)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ucla-cli.svg)](https://pypi.org/project/ucla-cli)
-----
UCLA CLI is a command-line tool for scraping data from UCLA's website, such as:
- Course schedule information (list classes by department/requirement, class days/times)
- Course enrollment info (spots left, waitlists, etc.)
- and more! (whatever else I decide to add)
![image](https://github.com/daviddavini/ucla-cli/assets/22968625/813a61af-0b55-4a1c-aece-f7c279eb7bb6)
Why would you ever want this?
- *Scriptability* - Web browsers are notoriously unscriptable, forcing you to go through tedious routines
every day, click after click. With a command-line tool, it's easy to write scripts that automate boring tasks
or empower you.
- For example, you could script up an enrollment notifier (i.e. a free Coursicle replacement)
using UCLA CLI in just a few lines!
- *Hacker Vibes* - Be honest, you've been seeking a bit more terminal in your life.
## Installation
```console
pip install ucla-cli
```
## Getting Started
```console
ucla classes 23F --subject MATH
```
## Development
### Design Goals
- *Front-end* - This project just aims to be a front-end for UCLA's website, meaning faithfully retrieving the
user-facing data from the website in a similar manner/structure as the website provides it.
- *Unix tool* - This project aims to be a "good" CLI by following the conventions/philosophy of (modern) Unix
command-line tools (in regards to option parsing, interactability, output format, etc.)
### Related projects
- Nathan Smith (creator of hotseat.io) has a
[post](https://nathansmith.io/posts/scraping-enrollment-data-from-the-ucla-registrar-part-one/#fnref:10)
that describes scraping UCLA's course schedule. He uses the same scraping strategy but implemented in Go
(with support for multiprocessing!).
## License
`ucla-cli` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
Raw data
{
"_id": null,
"home_page": "https://github.com/daviddavini/ucla-cli",
"name": "ucla-cli",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "ucla, course, web-scraper, cli",
"author": "David Davini",
"author_email": "dndavini3.14@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/10/30/2b78d5c1c634de37405aba565015f6d3b6e86759f93f74eeb1cf3849c0b5/ucla_cli-0.0.10.tar.gz",
"platform": null,
"description": "# UCLA CLI\n\n[![PyPI - Version](https://img.shields.io/pypi/v/ucla-cli.svg)](https://pypi.org/project/ucla-cli)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ucla-cli.svg)](https://pypi.org/project/ucla-cli)\n\n-----\n\nUCLA CLI is a command-line tool for scraping data from UCLA's website, such as:\n- Course schedule information (list classes by department/requirement, class days/times)\n- Course enrollment info (spots left, waitlists, etc.)\n- and more! (whatever else I decide to add)\n\n![image](https://github.com/daviddavini/ucla-cli/assets/22968625/813a61af-0b55-4a1c-aece-f7c279eb7bb6)\n\nWhy would you ever want this?\n- *Scriptability* - Web browsers are notoriously unscriptable, forcing you to go through tedious routines\nevery day, click after click. With a command-line tool, it's easy to write scripts that automate boring tasks\nor empower you.\n - For example, you could script up an enrollment notifier (i.e. a free Coursicle replacement) \nusing UCLA CLI in just a few lines!\n- *Hacker Vibes* - Be honest, you've been seeking a bit more terminal in your life.\n\n## Installation\n\n```console\npip install ucla-cli\n```\n\n## Getting Started\n```console\nucla classes 23F --subject MATH\n```\n\n## Development\n\n### Design Goals\n\n- *Front-end* - This project just aims to be a front-end for UCLA's website, meaning faithfully retrieving the \nuser-facing data from the website in a similar manner/structure as the website provides it.\n- *Unix tool* - This project aims to be a \"good\" CLI by following the conventions/philosophy of (modern) Unix \ncommand-line tools (in regards to option parsing, interactability, output format, etc.)\n\n### Related projects\n- Nathan Smith (creator of hotseat.io) has a \n[post](https://nathansmith.io/posts/scraping-enrollment-data-from-the-ucla-registrar-part-one/#fnref:10)\nthat describes scraping UCLA's course schedule. He uses the same scraping strategy but implemented in Go\n(with support for multiprocessing!).\n\n## License\n\n`ucla-cli` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": null,
"version": "0.0.10",
"project_urls": {
"Bug Tracker": "https://github.com/daviddavini/ucla-cli/issues",
"Documentation": "https://github.com/daviddavini/ucla-cli#readme",
"Homepage": "https://github.com/daviddavini/ucla-cli",
"Repository": "https://github.com/daviddavini/ucla-cli"
},
"split_keywords": [
"ucla",
" course",
" web-scraper",
" cli"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "fa6abe882e157fcb833da26c8005cdd23b4b373b65b97f126c792a8257862003",
"md5": "19af9e524ecdb33f722a0889e52116f5",
"sha256": "86bf65ae24f1497f37ec86e0d6b5cfc76ab743599c1909ad57939a9c83cf9b43"
},
"downloads": -1,
"filename": "ucla_cli-0.0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "19af9e524ecdb33f722a0889e52116f5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 15400,
"upload_time": "2024-07-04T11:16:53",
"upload_time_iso_8601": "2024-07-04T11:16:53.719024Z",
"url": "https://files.pythonhosted.org/packages/fa/6a/be882e157fcb833da26c8005cdd23b4b373b65b97f126c792a8257862003/ucla_cli-0.0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "10302b78d5c1c634de37405aba565015f6d3b6e86759f93f74eeb1cf3849c0b5",
"md5": "1386ca67f78c53efe132db0771c6eb96",
"sha256": "a4014d2498d500173cc909a8cbebf0f4f6d980da108759d6a4673c3b07f30d30"
},
"downloads": -1,
"filename": "ucla_cli-0.0.10.tar.gz",
"has_sig": false,
"md5_digest": "1386ca67f78c53efe132db0771c6eb96",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 12260,
"upload_time": "2024-07-04T11:16:54",
"upload_time_iso_8601": "2024-07-04T11:16:54.990400Z",
"url": "https://files.pythonhosted.org/packages/10/30/2b78d5c1c634de37405aba565015f6d3b6e86759f93f74eeb1cf3849c0b5/ucla_cli-0.0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-04 11:16:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "daviddavini",
"github_project": "ucla-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "ucla-cli"
}