0.0.4 • Published 8 years ago

coursefinder v0.0.4

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

coursefinder npm version Build Status

A Node.js library for interfacing with Course Finder.

Install

Either install via npm or via source.

  • npm

    npm install [--save] [--global] coursefinder
  • Source

    git clone https://github.com/kshvmdn/uoft-coursefinder.git && npm install

Usage

API

const coursefinder = require('coursefinder')
search(term, cb)
  • Retrieve top 20 results (PR for implemeting pagination would be very appreciated!) for the provided search term.
  • Supports both Promises and error-first callbacks, use whichever you prefer.

    coursefinder.search('csc207', (err, res) => {
      if (err) {
        console.error(err)
        return
      }
    
      console.log(res)
    })
    let request = coursefinder.search('csc207')
    
    request.then(res => console.log(res))
    request.catch(err => console.err(err))
  • Sample response:

    [
      {
        "campus": "St. George",
        "code": "CSC207H1",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Computer Science",
        "division": "Faculty of Arts and Science",
        "term": "2016 Fall"
      },
      {
        "campus": "St. George",
        "code": "CSC207H1",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Computer Science",
        "division": "Faculty of Arts and Science",
        "term": "2017 Winter"
      },
      {
        "campus": "Mississauga",
        "code": "CSC207H5",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Mathematical and Computational Sciences",
        "division": "University of Toronto Mississauga",
        "term": "2016 Fall"
      }
    ]
inquiry(code, cb)
  • Retrieve data for the provided course code.
  • Parameter code can be retrieved from the course-search/search/courseInquiry.
  • Supports both Promises and error-first callbacks, use whichever you prefer.

    coursefinder.inquiry('CSC207H1F20169', (err, res) => {
      if (err) {
        console.error(err)
        return
      }
    
      console.log(res)
    })
    let request = coursefinder.inquiry('CSC207H1F20169')
    
    request.then(res => console.log(res))
    request.catch(err => console.err(err))
  • Sample response:

    {
      "arts_and_science_breadth": "(5) The Physical and Mathematical Universes",
      "arts_and_science_distribution": "Science",
      "campus": "St. George",
      "course_description": "An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection.  Representation of \u001aoating-point numbers and introduction to numerical computation.",
      "course_level": "200/B",
      "department": "Computer Science",
      "division": "Faculty of Arts and Science",
      "last_updated": "2016-09-04 19:15:15.0",
      "meeting_sections": [
        {
          "activity": "Lec 0101",
          "class_size": "117",
          "current_enrolment": "111",
          "day_and_time": [
            "TUESDAY 10:00-11:00",
            "WEDNESDAY 10:00-11:00",
            "FRIDAY 10:00-11:00"
          ],
          "delivery_mode": "IN-CLASS",
          "instructor": "L Shorser",
          "location": [
            "BA 1170",
            "BA 1170",
            "BA 1170"
          ],
          "option_to_waitlist": true
        },
        {
          "activity": "Lec 0201",
          "class_size": "130",
          "current_enrolment": "130",
          "day_and_time": [
            "WEDNESDAY 12:00-13:00",
            "TUESDAY 14:00-15:00",
            "FRIDAY 12:00-13:00"
          ],
          "delivery_mode": "IN-CLASS",
          "instructor": "L Shorser",
          "location": [
            "RW 117",
            "RW 117",
            "RW 117"
          ],
          "option_to_waitlist": true
        },
        {
          "activity": "Lec 0301",
          "class_size": "130",
          "current_enrolment": "27",
          "day_and_time": [
            "FRIDAY 13:00-14:00",
            "FRIDAY 14:00-16:00"
          ],
          "delivery_mode": "IN-CLASS",
          "instructor": "P Gries",
          "location": [
            "LM 161",
            "LM 161"
          ],
          "option_to_waitlist": true
        },
        {
          "activity": "Lec 2000",
          "class_size": "13",
          "current_enrolment": "9",
          "day_and_time": [
            "WEDNESDAY 10:00-11:00",
            "FRIDAY 10:00-11:00",
            "TUESDAY 10:00-11:00"
          ],
          "delivery_mode": "IN-CLASS",
          "instructor": "",
          "location": [
            "BA 1170",
            "BA 1170",
            "BA 1170"
          ],
          "option_to_waitlist": false
        },
        {
          "activity": "Lec 5101",
          "class_size": "130",
          "current_enrolment": "37",
          "day_and_time": [
            "WEDNESDAY 17:00-18:00",
            "WEDNESDAY 18:00-20:00"
          ],
          "delivery_mode": "IN-CLASS",
          "instructor": "",
          "location": [
            "LM 161",
            "LM 161"
          ],
          "option_to_waitlist": true
        }
      ],
      "pre-requisites": "60% or higher in CSC148H1/CSC150H1",
      "term": "2016 Fall",
      "title": "CSC207H1: Software Design"
    }

CLI

$ coursefinder --help
Usage:
  coursefinder <method> <argument> [--pretty] [--show]

Arguments:
  method         coursefinder method to call (one of search / inquiry) [must be first]
  argument       term / code to use with function [must be second]
  -h, --help     view this help dialog
  -p, --pretty   pretty print the JSON response
  -s, --show     render a browser window and watch the scraping in action

Examples:
  coursefinder search csc
  coursefinder search CSC207 --pretty
  coursefinder inquiry CSC207H1F20169 --show --pretty
  • Examples:

    $ coursefinder search csc207
    [ { campus: 'St. George',
        code: 'CSC207H1',
        course_name: 'Software Design',
        credits: '0.5',
        department: 'Computer Science',
        division: 'Faculty of Arts and Science',
        term: '2016 Fall' },
        { campus: 'St. George',
        code: 'CSC207H1',
        course_name: 'Software Design',
        credits: '0.5',
        department: 'Computer Science',
        division: 'Faculty of Arts and Science',
        term: '2017 Winter' },
        { campus: 'Mississauga',
        code: 'CSC207H5',
        course_name: 'Software Design',
        credits: '0.5',
        department: 'Mathematical and Computational Sciences',
        division: 'University of Toronto Mississauga',
        term: '2016 Fall' } ]
    $ coursefinder search csc207 --pretty
    Array [
      Object {
        "campus": "St. George",
        "code": "CSC207H1",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Computer Science",
        "division": "Faculty of Arts and Science",
        "term": "2016 Fall"
      },
      Object {
        "campus": "St. George",
        "code": "CSC207H1",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Computer Science",
        "division": "Faculty of Arts and Science",
        "term": "2017 Winter"
      },
      Object {
        "campus": "Mississauga",
        "code": "CSC207H5",
        "course_name": "Software Design",
        "credits": "0.5",
        "department": "Mathematical and Computational Sciences",
        "division": "University of Toronto Mississauga",
        "term": "2016 Fall"
      }
    ]

Contribute

This project is completely open source. Feel free to open an issue or submit a pull request. :smile:

License

MIT © Kashav Madan.

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago

0.0.0

8 years ago