Giter Site home page Giter Site logo

jovialis / vanderbilt-yes-api Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 912 KB

A simple, no-hassle library for efficiently scraping Your Enrollment Services.

Home Page: https://www.npmjs.com/package/@vanderbilt/yes-api

License: MIT License

TypeScript 100.00%
vanderbilt vanderbilt-university vanderbilt-univ

vanderbilt-yes-api's Introduction

@vanderbilt/yes-api

A simple, no-hassle library for efficiently querying Your Enrollment Services.

Created by Dylan Hanson (jovialis)

NOTE: THIS MODULE IS ESM ONLY IN CONJUNCTION WITH CHANGING NODE.JS COMMUNITY STANDARDS. READ MORE: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

Usage

Install

npm install @vanderbilt/yes-api

OR

yarn add @vanderbilt/yes-api

Import

import * as yes from "@vanderbilt/yes-api";

List All Available Subjects

This endpoint returns a list of subjects and their abbreviations. For example, Computer Science is abbreviated asCS.

// Subject[]
const subjects = await yes.getSubjects();

List All Available Terms

This endpoint lists all of the Terms available on YES, including their IDs and associated Sessions.

// Term[]
const terms = await yes.getTerms();

List All Sections

Returns a list of all of the Sections present on YES in a given Term. For example, CS 2201 may have 3 Sections, each of which will be returned as a unique record.

// Section[]
const sections = await yes.getAllSections(terms[0]);

Search All Sections

Returns up to 300 Sections fetched from YES using a search query in a given Term.
NOTE: THIS OPERATION CAN TAKE A LONG TIME! EXPECT UPWARDS OF 40 MINUTES FOR SPRING/FALL SEMESTERS.

// Section[]
const sections = await yes.searchSections("greece", terms[0]);

Fetch Section Details

Returns expanded details for a Section. This includes the section's current enrollment, notes, attributes, bookstore URL, and more. NOTE: This can be automatically fetched by passing true for the detailed param in getAllSections or searchSections.

// SectionDetails
const details = await yes.getSectionDetails(sections[0]);

Check Section Existence

Returns whether or not a Section exists within a given term. Note that this function accepts IDs, rather than objects.

// Boolean
const exists = await yes.sectionExists(sections[0].id, sections[0].term.id);

Response Streaming

Even though all functions return Promise-wrapped results, you can pass a handler as the last param to all functions in order to handle results as they are fetched from YES.

const sections = await yes.getAllSections(terms[0], false, (section, timeElapsed) => {
    console.log(term);
    console.log(`${timeElapsed}ms elapsed.`);
});

NOTE: The handler can return a promise!

const sections = await yes.getAllSections(terms[0], false, async (section, timeElapsed) => {
    await mongodb.collection('sections').insert(section);
});

FAQ

Does this API fetch ALL Courses?

  • For the most part, yes! There are a few exceptions. Due to our scraping algorithm and YES' limitations, we are unable to fetch courses with the course numbers 3850, 3851, 3852, (Independent reading/study) 7999, (Master's Thesis Research) 8999, (Non candidate research) 9999 (Ph.D dissertation research).

How should I use this package?

  • This API's speed is unfortunately limited by the speed of YES itself since it fetches data from the source with every request. Consider using this API in a batch process, uploading discovered data to a database or lake for fast, efficient querying and downstream processing.

vanderbilt-yes-api's People

Contributors

jovialis avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.