This package can be installed using NodeJS's package manager, npm.
`` npm install quizlet.js
`
Importing
> To use the new ESM syntax, set your type to module in your package.json. Click me for more information
- You can import the entire package into a single variable (esm)
`js
import * as Quizlet from 'quizlet.js'
`
- You can import certain parts of the package into different variables (esm)
`js
import {Class, StudySet, User, Live, Folder} from 'quizlet.js'
` - You can also import this package into non-esm modules (commonjs)
`js
var Quizlet = await import("quizlet.js")
`
Features
- ## StudySet (Quizlet.StudySet)
One of the main things about Quizlet is the unique study sets. This class allows you to access these sets
- ### Methods
Type
Method
Parameters
Returns
Description
Example
static
getByID
| Parameter | Type | Default | Description |
|-----------|-------------------|----------|-------------|
| id | stringnumber | Required | The Set ID |
Promise
Gets a study set via it's ID
`js
await StudySet.getByID("123456")
`
static
getFromUser
| Parameter | Type | Default | Description |
|-----------|-------------------|----------|-------------|
| id | stringnumber | Required | The User ID |
Promise
Gets all the sets that a user has created
`js
await StudySet.getFromUser("123456")
`
static
getFromClass
| Parameter | Type | Default | Description |
|-----------|-------------------|----------|-------------|
| id | stringnumber | Required | The Class ID |
Promise
Gets all the sets that exist within a class
`js
await StudySet.getFromClass("123456")
`
static
getFromFolder
| Parameter | Type | Default | Description |
|-----------|-------------------|----------|-------------|
| id | stringnumber | Required | The Folder ID |
Promise
Gets all the sets that exist within a folder
`js
await StudySet.getFromFolder("123456")
`
dynamic
getTerms
None
Promise:
Property
Type
Description
term
Property
Type
Description
text
string
The content's text
audio
string
The content's audio (Always a TTS from my testing)
The term's term
definition
Property
Type
Description
text
string
The content's text
audio
string
The content's audio (Always a TTS from my testing)
The term's definition
rank
number
The term's index, or rank in the set
image
string
The image URL of the term.
setId
number
The ID of the set that this term belongs in
id
number
The ID of this term
Gets all the terms in a study set
`js
await mySet.getTerms()
`
dynamic
getCreator
None
Promise
Gets the creator of a study set.
`js
await mySet.getCreator()
`
- ### Properties
Property
Type
Description
url
string
The set URL
id
number
The set's ID
creatorId
number
The ID of the set's creator
termLang
string
The languages of the terms in the set
defLang
string
The languages of the definitions in the set
title
string
The set title/name
description
string
The set's description
thumbnail
string
The icon for the set
numTerms
number
The number of terms in this set
- ## User (Quizlet.User)
The User class allows you to see details about users on Quizlet
- ### Methods
Type
Method
Parameters
Returns
Description
static
getByID
| Parameter | Types |Default| Description |
|--- |--- |--- |-|
| id | stringnumber|Required | The user ID |
- ### Properties | Property | Types | Description |
|--- |--- |--- |
| id | number | The user's ID |
| username | string | The user's username |
| avatar | string | The URL to the user's display image |
| numClasses | number | The number of classes that this user is a memberof |
| type | 012 | The type of the user this is. 0 means that the user is a student. 2 means that the user is a teacher. If you find out what 1 means for the user, please let me know |
- ## Class (Quizlet.Class)
The Class class allows you to access classes created within Quizlet
- ### Methods
Type
Method
Parameters
Returns
Description
static
getByID
| Parameter | Types | Default | Description |
|----------- |------------------- |---------- |-------------- |
| id | stringnumber | Required | The class ID |
| Parameter | Types | Default | Description |
|----------- |------------------- |---------- |-------------- |
| id | stringnumber | Required | The school's ID |
Promise
Gets all the classes in a school
static
getFromUser
| Parameter | Types | Default | Description |
|----------- |------------------- |---------- |-------------- |
| id | stringnumber | Required | The user's ID |
Promise
Gets all the sets that a user has created
static
getClasses
None
Promise
Gets all the classes that the user is a member of
dynamic
getMembers
None
Promise
Gets all the members of a class
dynamic
getSets
None
Promise
Gets all of the sets linked to the class
- ### Properties | Property | Type | Description |
|--------------- |---------- |------------------------------------- |
| id | number | The class's ID |
| title | string | The class's title/name |
| description | string | The class's course description |
| creatorId | number | The ID of the class's creator |
| numMembers | number | The number of members in this class |
| numSets | number | The number of sets in this class |
- ## Folder (Quizlet.Folder)
The Folder class allows you to see folders made by the many users of Quizlet
- ### Methods
Type
Method
Parameters
Returns
Description
static
getByID
| Property | Type | Default | Description |
|---------- |---------- |---------- |----------------- |
| id | number | Required | The folder's ID |
Promise
Gets a folder by its ID
static
getFromUser
| Property | Type | Default | Description |
|---------- |---------- |---------- |----------------- |
| id | number | Required | The user's ID |
Promise
Gets all the folders that belong to a user
dynamic
getCreator
None
Promise
Gets the creator of a folder
dynamic
getSets
None
Promise
Gets all of sets in a folder
- ### Properties | Property | Type | Description |
|--------------- |---------- |-------------------------------------- |
| id | number | The folder's ID |
| creatorId | number | The ID of the folder's creator |
| title | string | The folder's name |
| description | string | The folder's description |
| url | string | The folder's publicly accessible URL |
- ## Live (Quizlet.Live)
When using this package to join any kind of Quizlet Live game, the classes should be setup in the following mannor:
`js
// First, create a new instance of "Classic" or "Checkpoint"
/ Quizlet Checkpoint game pins start with the letter "C" (CXX-XXX), any other pins are Quizlet Live game pins /
const game = new Quizlet.Live.Classic();
// Once your class is initialized, setup all the events
/ Refer to each individual class's documentation to see what events are supported /
game.on("question", (question, options) => {
// Both Classic and Checkpoint game modes have this event, but each event behaves differently.
// The main thing throughout both classes is that it is highly recommended to call the game.answer(...) method from within this event
game.answer(options[0])
})
// After your events are prepared, you can go ahead and join the game
game.joinGame("XXXXXX" / The game pin /, "RedYetiDev" / username /, "https://assets.quizlet.com/...." / Your avatar /)
` - ### Classic (Quizlet.Live.Classic)
- ### Methods
Type
Method
Parameters
Returns
Description
static
getGame
| Parameter | Type | Default | Description |
|---------- |---------- |--------- |-------------- |
| code | number |Required | The game code |
Promise
Gets a game via it's code (The return object is not typed, as you won't really ever need it, but typings may be added in the future)
dynamic
joinGame
| Parameter | Type | Default | Description |
|---------- |---------- |-------------------------------------------------------------------------------------------- |---------------------------------------------------------------------------------------------------- |
| pin | number | Required | The game pin |
| name | string | "Quizlet.JS Bot" | The username to join with |
| image | string | "https://assets.quizlet.com/a/j/dist/app/i/live_game/default-avatar.610344da6feae31.png" | The avatar to use when joining. (This avatar's URL must have the root domain of .quizlet.com)* |
Nothing
Joins the Quizlet Live game using the information provided
dynamic
answer
| Parameter | Types | Description |
|----------- |-------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| answer | stringnumberTerm | string: If answer is of type string, it is considered to be the content text of the correct answer
number: If answer is of type number, it is considered to be the index of the correct answer in the options array returned from the question event.
Term: If answer is an instance of Term, it is considered to contain the same text content of the correct answer |
Nothing
Answers the currently active Quizlet Live question
- ### Properties
| Property | Types | Description |
|---------------- |------------ |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| active | boolean | Whether the game currently active |
| pin | string | The game pin |
| gamemode | 01 | Whether the game is a Classic game (1) or a Checkpoint game (0) |
| name | string | The username that game is joining with |
| image | string | The avatar that the user is using to join the game |
| token | string | The multiplayer join token for the game |
| id | string | The user's unique ID (Similar to a UUID) |
| gameInstance | object | The game instance |
| statuses | string[] | The status that are currently being sent between the client and the server |
| socket | Socket | The socket that connects the client to the server (a Socket.IO connection) |
| set | StudySet | The set that the host is using to play Quizlet Live |
| terms | Term[] | The terms that currently in play. The length of this array can range between 6 and 12 |
| type | number | Whether the game is a singleplayer game (2), or a multiplayer game (not 0) |
| teams | object[] | The teams in the game |
| team | object | My team in the game |
| index | number | The currently active question's index |
| streak | number | How many attempts a team has made. Your team starts the game with a streak of 0 When your team gets a question wrong, and you have to start over, your streak increments by 1 |
| players | object | All the players within the game |
| gameOptions | object | The game's settings |
- ### Events
Event
Data
Description
answer
| Property | Types | Description |
|---------------- |----------- |---------------------------------------------------- |
| streak | number | The streak is how many tries the team has taken |
| index | number | The index of the question that was answered |
| isCorrect | boolean | Whether the question was answered correctly or not |
| answeredBy | object | The player object of the question's answerer |
| answeredWith | Term | The term that the player chose as their answer |
| answeredAt | Date | The exact moment that the question was answered |
Fired when a question is answered
replay
None
Fired when the host replays the game
lobby
None
Fired when the host moves the game into the lobby, or when the player joins the lobby
teams
| Property | Types | Description |
|------------ |------------ |---------------------------------- |
| myTeam | object | The team that the client is on |
| allTeams | object[] | All of the teams within the game |
Fired when the teams are assigned/reassigned
ended
None
Fired when the game ends
start
None
Fired when the game starts
question
| Property | Types | Description |
|------------ |----------------------- |------------------- |
| question | Term | The question term |
| options | [Term[]](#set-term) | The option terms |
Fired when it is time for the client to answer a question. (It is highly recommended that the answer method be called within the listener for this event)
| Parameter | Type | Default | Description |
|---------- |---------- |-------------------------------------------------------------------------------------------- |---------------------------------------------------------------------------------------------------- |
| pin | number | Required | The game pin |
| name | string | "Quizlet.JS Bot" | The username to join with |
| image | string | "https://assets.quizlet.com/a/j/dist/app/i/live_game/default-avatar.610344da6feae31.png" | The avatar to use when joining. (This avatar's URL must have the root domain of .quizlet.com)* |
Nothing
Joins the Quizlet Live game using the information provided
dynamic
answer
| Parameter | Types | Default | Description |
|----------- |-------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| answer | stringContent | Required | string: If answer is of type string, it is considered to be the content text of the correct answer
Content: If answer is an instance of Content, it is considered to contain the same sub-content as the correct answer |
Nothing
Answers the currently active Quizlet Live question
- ### Properties
Property
Types
Description
active
boolean
Whether the game is currently running
pin
number
The game pin
gamemode
01
Whether the game is a Checkpoint (0) or a Classic (1) game
name
string
The display name that the client is joining the game with
image
string
The URL of the avatar that the client is joining the game with
token
string
The checkpoint game token that the client needs to connect to server
id
string
The player's starting connection id (This id is only used for socket connection. For everything else, the uid property is used)
socket
Socket
The socket that connects the client to the server (A Socket.IO socket)
uid
string
The player's internal ID
cq
Property
Types
Description
prompt
Content:
| Property | Types | Description |
|---------- |---------- |------------------------------------------------------------- |
| text | string | The content's text |
| image | string | The URL to the content's image |
| audio | string | The URL to the content's audio (Usually a Text-To-Speech) |
The question's prompt
answer
numberstring
The question's answer
options
[Content[]](#cp-content)
The question's possible answers
id
number
The item ID for the question
type
"WrittenQuestion""MultipleChoiceQuestion"
The question type. (See Excluded Features the question types that are not supported])
The current question data
isCorrect
boolean
Whether you were correct on the last question that you answered
Fired when it is time for the client to answer a question
Excluded Features
The following features are not supported by Quizlet.JS at this time. I do not have Quizlet+, and am unable to implement these features.
> Most of these features are only available with Quizlet+
- SeparatedOptionMatchingQuestion - FillInTheBlankQuestion - MixedOptionMatchingQuestion - RevealSelfAssessmentQuestion - TrueFalseQuestion - SpellingQuestion - FITBTextSegment - FITBWrittenBlankSegment - LocationAttribute
---
Licensing Information
This package is licensed under an MIT License by RedYetiDev.
That does mean that if you intend to extend on this package, you do need to provide proper credit.