quizlet.js
v3.0.1
Published
Quizlet.JS is a node.js client for the Quizlet Live API
Downloads
37
Maintainers
Readme
Quizlet.JS
Version 3.0
Installing
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
tomodule
in yourpackage.json
. Click me for more information
You can import the entire package into a single variable (esm)
import * as Quizlet from 'quizlet.js'
You can import certain parts of the package into different variables (esm)
import {Class, StudySet, User, Live, Folder} from 'quizlet.js'
You can also import this package into non-esm modules (commonjs)
var Quizlet = await import("quizlet.js")
Features
StudySet (
One of the main things about Quizlet is the unique study sets. This class allows you to access these setsQuizlet.StudySet
)Methods
static
getByID
| Parameter | Type | Default | Description | |-----------|-------------------|----------|-------------| |id
|string
number
| Required | The Set ID |Promise<StudySet>
Gets a study set via it's IDawait StudySet.getByID("123456")
static
getFromUser
| Parameter | Type | Default | Description | |-----------|-------------------|----------|-------------| |id
|string
number
| Required | The User ID |static
getFromClass
| Parameter | Type | Default | Description | |-----------|-------------------|----------|-------------| |id
|string
number
| Required | The Class ID |Promise<StudySet[]>
Gets all the sets that exist within a classawait StudySet.getFromClass("123456")
static
getFromFolder
| Parameter | Type | Default | Description | |-----------|-------------------|----------|-------------| |id
|string
number
| Required | The Folder ID |Promise<StudySet[]>
Gets all the sets that exist within a folderawait StudySet.getFromFolder("123456")
dynamic
getTerms
NonePromise<Term>
:PropertyTypeDescriptionterm
PropertyTypeDescriptiontext
string
The content's textaudio
string
The content's audio (Always a TTS from my testing)The term's termdefinition
PropertyTypeDescriptiontext
string
The content's textaudio
string
The content's audio (Always a TTS from my testing)The term's definitionrank
number
The term's index, or rank in the setimage
string
The image URL of the term.setId
number
The ID of the set that this term belongs inid
number
The ID of this termGets all the terms in a study setawait mySet.getTerms()
dynamic
getCreator
NonePromise<User>
Gets the creator of a study set.await mySet.getCreator()
Properties
url
string
The set URLid
number
The set's IDcreatorId
number
The ID of the set's creatortermLang
string
The languages of the terms in the setdefLang
string
The languages of the definitions in the settitle
string
The set title/namedescription
string
The set's descriptionthumbnail
string
The icon for the setnumTerms
number
The number of terms in this set
User (
TheQuizlet.User
)User
class allows you to see details about users on QuizletMethods
static
getByID
| Parameter | Types |Default| Description | |--- |--- |--- |-| |id
|string
number
|Required | The user ID |Promise<User>
Gets a user by their IDstatic
getByEmail
| Parameter | Types |Default| Description | |----------- |---------- |-|------------------ | |email
|string
|Required| The user's email |Promise<User>
Gets a user from a registered emailstatic
getByUsername
| Parameter | Types | Description | |------------ |---------- |--------------------- | |username
|string
| The user's username |Promise<User>
Gets a user from the user's usernamedynamic
getSets
NonePromise<StudySet[]>
Gets all the sets that a user has createddynamic
getClasses
NonePromise<Class[]>
Gets all the classes that the user is a member ofdynamic
getFolders
NonePromise<Folder[]>
Gets all the folders that the user has sets inProperties
| 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
|0
1
2
| 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 what1
means for the user, please let me know |
Class (
TheQuizlet.Class
)Class
class allows you to access classes created within QuizletMethods
static
getByID
| Parameter | Types | Default | Description | |----------- |------------------- |---------- |-------------- | |id
|string
number
| Required | The class ID |Promise<Class>
Gets a class by its IDstatic
getByCode
| Parameter | Type | Default | Description | |----------- |---------- |---------- |----------------------- | |code
|string
| Required | The class's join code |Promise<Class>
Gets a class by its join codestatic
getFromSchool
| Parameter | Types | Default | Description | |----------- |------------------- |---------- |-------------- | |id
|string
number
| Required | The school's ID |Promise<Class[]>
Gets all the classes in a schoolstatic
getFromUser
| Parameter | Types | Default | Description | |----------- |------------------- |---------- |-------------- | |id
|string
number
| Required | The user's ID |Promise<Class[]>
Gets all the sets that a user has createdstatic
getClasses
NonePromise<Class[]>
Gets all the classes that the user is a member ofdynamic
getMembers
NonePromise<User[]>
Gets all the members of a classdynamic
getSets
NonePromise<Set[]>
Gets all of the sets linked to the classProperties
| 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 (
TheQuizlet.Folder
)Folder
class allows you to see folders made by the many users of QuizletMethods
static
getByID
| Property | Type | Default | Description | |---------- |---------- |---------- |----------------- | |id
|number
| Required | The folder's ID |Promise<Folder>
Gets a folder by its IDstatic
getFromUser
| Property | Type | Default | Description | |---------- |---------- |---------- |----------------- | |id
|number
| Required | The user's ID |Promise<Folder[]>
Gets all the folders that belong to a userdynamic
getCreator
NonePromise<User>
Gets the creator of a folderdynamic
getSets
NonePromise<Set[]>
Gets all of sets in a folderProperties
| 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 (
When using this package to join any kind of Quizlet Live game, the classes should be setup in the following mannor:Quizlet.Live
)// 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
static
getGame
| Parameter | Type | Default | Description | |---------- |---------- |--------- |-------------- | |code
|number
|Required | The game code |Promise<Object>
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
) |dynamic
answer
| Parameter | Types | Description | |----------- |-------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |answer
|string
number
Term
|string
: Ifanswer
is of typestring
, it is considered to be the content text of the correct answernumber
: Ifanswer
is of typenumber
, it is considered to be the index of the correct answer in theoptions
array returned from thequestion
event.Term
: Ifanswer
is an instance ofTerm
, it is considered to contain the same text content of the correct answer |Properties
| Property | Types | Description | |---------------- |------------ |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
active
|boolean
| Whether the game currently active | |pin
|string
| The game pin | |gamemode
|0
1
| 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 between6
and12
| |type
|number
| Whether the game is a singleplayer game (2
), or a multiplayer game (not0
) | |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 astreak
of0
When your team gets a question wrong, and you have to start over, yourstreak
increments by1
| |players
|object
| All the players within the game | |gameOptions
|object
| The game's settings |Events
answer
| Property | Types | Description | |---------------- |----------- |---------------------------------------------------- | |streak
|number
| Thestreak
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 |replay
NoneFired when the host replays the gamelobby
NoneFired when the host moves the game into the lobby, or when the player joins the lobbyteams
| Property | Types | Description | |------------ |------------ |---------------------------------- | |myTeam
|object
| The team that the client is on | |allTeams
|object[]
| All of the teams within the game |ended
NoneFired when the game endsstart
NoneFired when the game startsquestion
| Property | Types | Description | |------------ |----------------------- |------------------- | |question
|Term
| The question term | |options
|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)
Checkpoint (
Quizlet.Live.Checkpoint
)Methods
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
) |dynamic
answer
| Parameter | Types | Default | Description | |----------- |-------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |answer
|string
Content
| Required |string
:Ifanswer
is of typestring
, it is considered to be the content text of the correct answerContent
:Ifanswer
is an instance ofContent
, it is considered to contain the same sub-content as the correct answer |Properties
active
boolean
Whether the game is currently runningpin
number
The game pingamemode
0
1
Whether the game is a Checkpoint (0
) or a Classic (1
) gamename
string
The display name that the client is joining the game withimage
string
The URL of the avatar that the client is joining the game withtoken
string
The checkpoint game token that the client needs to connect to serverid
string
The player's starting connection id (This id is only used for socket connection. For everything else, theuid
property is used)socket
Socket
The socket that connects the client to the server (A Socket.IO socket)uid
string
The player's internal IDcq
PropertyTypesDescriptionprompt
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) |answer
number
string
The question's answeroptions
Content[]
The question's possible answersid
number
The item ID for the questiontype
"WrittenQuestion"
"MultipleChoiceQuestion"
The question type. (See Excluded Features the question types that are not supported])The current question dataisCorrect
boolean
Whether you were correct on the last question that you answeredEvents
join
NoneFired when the client joins the gameend
NoneFired when the game has endedstart
NoneFired when the game startsanswer
isCorrect
Fired when the answers have been gradeddisconnect
| Property | Types | Description | |---------- |------- |----------------------- | |reason
|*
| The disconnect reason |question
cq
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.
Here is an example of what proper credit can look like:
[Quizlet.JS](https://github.com/RedYetiDev/Quizlet.JS) was created by [RedYetiDev](https://github.com/RedYetiDev)
Quizlet.JS was created by RedYetiDev
Credit
Got is a great Node.JS web requests package by Sindresorhus
Socket.IO is also a really cool WebSocket client and server software