Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pandakn/course-data-dive
Extract course data from PDF
https://github.com/pandakn/course-data-dive
python
Last synced: 7 days ago
JSON representation
Extract course data from PDF
- Host: GitHub
- URL: https://github.com/pandakn/course-data-dive
- Owner: pandakn
- Created: 2024-06-24T15:47:21.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-07-07T11:28:47.000Z (4 months ago)
- Last Synced: 2024-07-07T19:27:03.534Z (4 months ago)
- Topics: python
- Language: Python
- Homepage:
- Size: 2.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Course Data Dive ð
This project extracts course data from PDF files of SUT (Suranaree University of Technology) and saves it in CSV and JSON formats.
## Table of Contents
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [Makefile Commands](#makefile-commands)## Prerequisites
- Python 3.x
- Virtual environment (`venv`) module
- make cli (`optional`) (powerful command-line tool, pls installðĪĢ)## Installation
1. Clone the repository:
```bash
git clone https://github.com/pandakn/course-data-dive.git
cd course-data-dive
```
2. Create and activate the virtual environment, then install the dependencies:
```bash
make setup
```
3. Activate the virtual environment:
- On macOS and Linux:
```bash
source venv/bin/activate
```
- On Windows:
```bash
.\venv\Scripts\activate
```## Usage
1. To extract course data from a PDF:
```bash
make run
```
2. The extracted data will be saved as courses.csv and courses.json in the same directory as the PDF file:##### JSON
```json
[
{
"id": "ENG23 2031",
"code": "ENG23 2031",
"name": "āđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļāļąāđāļāļāļāļāļ§āļīāļāļĩ",
"credit": "4(4-0-8)",
"description": "āļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāļąāđāļāļāļāļāļ§āļīāļāļĩāđāļāļ·āđāļāļāļāđāļ āļāļ§āļēāļĄāļāļąāļāļāđāļāļāļāļāļāļāļąāđāļāļāļāļāļ§āļīāļāļĩ āļāļąāđāļāļāļāļāļ§āļīāļāļĩāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĨāļģāļāļąāļāđāļĨāļ°āļāđāļāļŦāļēāļāđāļāļĄāļđāļĨ āđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāļĨāļīāļāļāđāļĨāļīāļŠāļāđ āļāļīāļ§ āļŠāđāļāļ āđāļāļāļēāļĢāļĩāļāļĢāļĩ āļāļĩāļāļĢāļĩāđāļĨāļ°āļŪāļĩāļ āļāļĨāļĒāļļāļāļāđāļāļāļāļāļąāđāļāļāļāļāļ§āļīāļāļĩ",
"prerequisites": "ENG23 2001 āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ 2",
"prerequisites_list": ["ENG23 2001"]
},
{
"id": "ENG23 2032",
"code": "ENG23 2032",
"name": "āđāļāļāđāļāđāļĨāļĒāļĩāđāļāļīāļāļ§āļąāļāļāļļ",
"credit": "4(3-3-9)",
"description": "āđāļāļ§āļāļīāļāđāļāļīāļāļ§āļąāļāļāļļ āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļīāļāļ§āļąāļāļāļļ āļāļĨāļēāļŠāđāļĨāļ°āļ§āļąāļāļāļļ āļāļēāļĢāļŦāđāļāļŦāļļāđāļĄ āļāļēāļĢāļŠāļ·āļāļāļāļ āđāļāļĨāļĩāļĄāļāļĢāđāļāļīāļŠāļāļķāļĄ āļāļīāļāđāļāļāļĢāđāđāļāļŠāļŠāļēāļĒāļāļąāļāļāļĢāļ° āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļ",
"prerequisites": "ENG23 2001 āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ 2 āđāļĨāļ° ENG23 2003 āļāļēāļĢāđāļāđāļāļąāļāļŦāļēāļāđāļ§āļĒāļāļēāļĢāđāļāļĢāđāļāļĢāļĄ",
"prerequisites_list": ["ENG23 2001", "ENG23 2003"]
}
]
```##### CSV
| id | code | name | credit | prerequisites | description |
| ---------- | ---------- | ----------------------------- | -------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ENG23 2031 | ENG23 2031 | āđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāđāļĨāļ°āļāļąāđāļāļāļāļāļ§āļīāļāļĩ | 4(4-0-8) | ENG23 2001 āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ 2 | āļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāļąāđāļāļāļāļāļ§āļīāļāļĩāđāļāļ·āđāļāļāļāđāļ āļāļ§āļēāļĄāļāļąāļāļāđāļāļāļāļāļāļāļąāđāļāļāļāļāļ§āļīāļāļĩ āļāļąāđāļāļāļāļāļ§āļīāļāļĩāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĨāļģāļāļąāļāđāļĨāļ°āļāđāļāļŦāļēāļāđāļāļĄāļđāļĨ āđāļāļĢāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāļĨāļīāļāļāđāļĨāļīāļŠāļāđ āļāļīāļ§ āļŠāđāļāļ āđāļāļāļēāļĢāļĩāļāļĢāļĩ āļāļĩāļāļĢāļĩāđāļĨāļ°āļŪāļĩāļ āļāļĨāļĒāļļāļāļāđāļāļāļāļāļąāđāļāļāļāļāļ§āļīāļāļĩ |
| ENG23 2032 | ENG23 2032 | āđāļāļāđāļāđāļĨāļĒāļĩāđāļāļīāļāļ§āļąāļāļāļļ | 4(3-3-9) | ENG23 2001 āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ 2 āđāļĨāļ° ENG23 2003 āļāļēāļĢāđāļāđāļāļąāļāļŦāļēāļāđāļ§āļĒāļāļēāļĢāđāļāļĢāđāļāļĢāļĄ | āđāļāļ§āļāļīāļāđāļāļīāļāļ§āļąāļāļāļļ āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļīāļāļ§āļąāļāļāļļ āļāļĨāļēāļŠāđāļĨāļ°āļ§āļąāļāļāļļ āļāļēāļĢāļŦāđāļāļŦāļļāđāļĄ āļāļēāļĢāļŠāļ·āļāļāļāļ āđāļāļĨāļĩāļĄāļāļĢāđāļāļīāļŠāļāļķāļĄ āļāļīāļāđāļāļāļĢāđāđāļāļŠāļŠāļēāļĒāļāļąāļāļāļĢāļ° āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļ |## Makefile Commands
- `make setup` : Create virtual environment and install dependencies
- `make test` : Run all tests
- `make lint` : Run linter (Ruff)
- `make format` : Format code with Ruff
- `make check` : Run linter and formatter check without making changes
- `make clean` : Remove virtual environment and cache files
- `make run` : Run the main application