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
-
One of the main things about Quizlet is the unique study sets. This class allows you to access these sets StudySet (Quizlet.StudySet
)-
Methods
Type Method Parameters Returns Description Example static
getByID
Parameter Type Default Description id
string
number
Required The Set ID Promise<StudySet>
Gets a study set via it's ID await StudySet.getByID("123456")
static
getFromUser
Parameter Type Default Description id
string
number
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
string
number
Required The Class ID Promise<StudySet[]>
Gets all the sets that exist within a class await 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 folder await StudySet.getFromFolder("123456")
dynamic
getTerms
None Promise<Term>
: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 await mySet.getTerms()
dynamic
getCreator
None Promise<User>
Gets the creator of a study set. 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
-
-
The User (Quizlet.User
)User
class allows you to see details about users on Quizlet-
Methods
Type Method Parameters Returns Description static
getByID
Parameter Types Default Description id
string
number
Required The user ID Promise<User>
Gets a user by their ID static
getByEmail
Parameter Types Default Description email
string
Required The user's email Promise<User>
Gets a user from a registered email static
getByUsername
Parameter Types Description username
string
The user's username Promise<User>
Gets a user from the user's username dynamic
getSets
None Promise<StudySet[]>
Gets all the sets that a user has created dynamic
getClasses
None Promise<Class[]>
Gets all the classes that the user is a member of dynamic
getFolders
None Promise<Folder[]>
Gets all the folders that the user has sets in -
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
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
-
-
The Class (Quizlet.Class
)Class
class allows you to access classes created within Quizlet-
Methods
Type Method Parameters Returns Description static
getByID
Parameter Types Default Description id
string
number
Required The class ID Promise<Class>
Gets a class by its ID static
getByCode
Parameter Type Default Description code
string
Required The class's join code Promise<Class>
Gets a class by its join code static
getFromSchool
Parameter Types Default Description id
string
number
Required The school's ID Promise<Class[]>
Gets all the classes in a school static
getFromUser
Parameter Types Default Description id
string
number
Required The user's ID Promise<Class[]>
Gets all the sets that a user has created static
getClasses
None Promise<Class[]>
Gets all the classes that the user is a member of dynamic
getMembers
None Promise<User[]>
Gets all the members of a class dynamic
getSets
None Promise<Set[]>
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
-
-
The Folder (Quizlet.Folder
)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<Folder>
Gets a folder by its ID static
getFromUser
Property Type Default Description id
number
Required The user's ID Promise<Folder[]>
Gets all the folders that belong to a user dynamic
getCreator
None Promise<User>
Gets the creator of a folder dynamic
getSets
None Promise<Set[]>
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
-
-
When using this package to join any kind of Quizlet Live game, the classes should be setup in the following mannor: Live (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
Type Method Parameters Returns Description 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
)Nothing Joins the Quizlet Live game using the information provided 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 answerNothing Answers the currently active Quizlet Live question -
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 between 6
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 a streak
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
Event Data Description answer
Property Types Description streak
number
The streak
is how many tries the team has takenindex
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[]
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
Type Method Parameters Returns Description 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 | 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 |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
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 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
number
string
The question's answer options
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 -
Events
Event Data Description join
None Fired when the client joins the game end
None Fired when the game has ended start
None Fired when the game starts answer
isCorrect
Fired when the answers have been graded disconnect
Property Types Description reason
*
The disconnect reason Fired when the client disconnects from the socket 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