Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

open-trivia-db

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

open-trivia-db

A wrapper for the Open Trivia Database API. Built with TypeScript, works with VanillaJS.

  • 1.0.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

OpenTriviaDB

open-trivia-db is a small, simple and fast wrapper for Open Trivia Database - A Free to use, user-contributed trivia question database. Built with TypeScript, works with VanillaJS.

Documentation: https://github.com/Elitezen/open-trivia-db-wrapper/wiki/Documentation

Support me: https://www.paypal.com/paypalme/alejandromuratalla

Installation

Ensure you are using Node version 14 or higher and that your enviroment contains the https module.

npm i open-trivia-db

Example Usage

The following examples make use of the Async/Await syntax. Ensure you are inside an async function, otherwise use promise callbacks.

Fetching Questions

You can provide QuestionOptions to describe the type of questions you want to recieve.

import { Category, getQuestions } from 'open-trivia-db';

const questions = await getQuestions({
  amount: 50, // 1 - 50
  difficulty: 'easy', // or 'medium' or 'hard'
  type: 'multiple', // or 'boolean (true/false)
  category: Category.allNames.SCIENCE_COMPUTERS
});

Output

Click to view
[
  {
 	value: 'What is the code name for the mobile operating system Android 7.0?',
  	category: 'Science: Computers',
  	type: 'multiple',
  	difficulty: 'easy',
  	correctAnswer: 'Nougat',
  	incorrectAnswers: [ 'Ice Cream Sandwich', 'Jelly Bean', 'Marshmallow' ],
  	allAnswers: [ 'Nougat', 'Jelly Bean', 'Marshmallow', 'Ice Cream Sandwich' ],
  	checkAnswer: [Function: checkAnswer]
  }

 ...
]

Working With Categories

Creating Categories with Resolvables

You can generate a category class by providing a CategoryResolvable which includes a category's name or id. An instance of Category will allow you to fetch category data and questions relating to the provided resolvable.

let myCategory = new Category(9);

myCategory = new Category('GENERAL_KNOWLEDGE');

myCategory = new Category(Category.allNames.GENERAL_KNOWLEDGE);

Fetching a Category's API Data

const data = await myCategory.getData();

Output

Click to view
  {
  	id: 9,
  	name: 'General Knowledge',
  	questionCounts: { 
  		total: 298, 
  		forEasy: 116, 
  		forMedium: 123, 
  		forHard: 59 
  	}
  }

Fetching Questions From a Category

const questions = await myCategory.fetchQuestions({
	amount: 1,
	difficulty: 'hard'
});

// Same outputs as getQuestions()

You can always get information relating to a category by simply passing a resolvable into getQuestions() and getCategoryData()

getQuestions({
	category: 9
});

getCategoryData('GENERAL_KNOWLEDGE');

// Same as myCategory.fetchQuestions() and .getData()

Using Sessions

A session ensures you do not get duplicate questions.

import { Category, Session, getQuestions } from 'open-trivia-db';

const session = new Session();
await session.start();


const batch1 = await getQuestions({
  amount: 10,
  category: Category.random(),
  difficulty: 'hard',
  session
});

const batch2 = await getQuestions({
  amount: 10,
  category: Category.random(),
  difficulty: 'hard',
  session
});


const completeBatch = [...batch1, ...batch2]; // All unique!
session.end();

Note: In respect to the API, it is recommended you generate and save 1 session token for use when testing.

Documentation

Documentation has been moved to a GitHub Wiki page:

https://github.com/Elitezen/open-trivia-db-wrapper/wiki/Documentation

Support Me

Any tip is greatly appreciated 😀 https://www.paypal.com/paypalme/alejandromuratalla

Keywords

FAQs

Package last updated on 06 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc