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

opentdb-py

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

opentdb-py

Python wrapper for the open-trivia-database API

  • 2.1.2
  • PyPI
  • Socket score

Maintainers
1

opentdb-py

Python wrapper for the open-trivia-database API

Installation

py -m pip install -U opentdb-py  
  
# latest (unstable)  
py -m pip install -U git+https://github.com/Marseel-E/opentdb-py  

Quickstart

import asyncio

from trivia import Client, EmptyToken

async def main() -> None:
	session_token = await Client.get_session_token()
	trivia_client = Client(session_token)
	
	try:
		data = await trivia_client.get_questions(amount=1)
	except EmptyToken:
		await trivia_client.reset_session_token()
	else:
		data = await trivia_client.get_questions(amount=1)
		
	print(data)

	await trivia_client.close_session()
    
if __name__ == '__main__:  
	asyncio.run(main())  
{  
  "category":"Entertainment: Video Games",  
  "type":"boolean",  
  "difficulty":"medium",  
  "question":"In the Resident Evil series, Leon S. Kennedy is a member of STARS.",  
  "correct_answer":"False",  
  "incorrect_answers":["True"]  
}  

Documentation

class Client

Sends a POST call to the API and gets the desired data.

Parameters

  • session_token ( str ) - The session token.

Methods
async get_session_token
async reset_session_token
async close_session
async get_questions
async get_categories
async get_category_questions_count
async get_global_questions_count

async Client.get_session_token

await Client.get_session_token()

This function is a coroutine.

Fetches a session token from the API.

Returns
Session Token.

Return Type
str

async Client.reset_session_token

await Client(...).reset_session_token()

This function is a coroutine.

Resets the session token.

async Client.close_session

await Client(...).close_session()

This function is a coroutine.

Closes the client session.

async Client.get_questions

await Client(...).questions(   
  amount=10,  
  category=Category.undefined,  
  difficulty=Difficulty.undefined,  
  question_type=QuestionType.both,  
  encoding=ResponseEncoding.default  
)  

This function is a coroutine.

Fetches the requests amount of questions from the API with the appropriate parameters.

Parameters

  • amount ( int ) - The amount of questions to return.
  • category ( Category ) - The category of questions.
  • difficulty ( Difficulty ) - The difficulty of the question (undefined=any, easy, medium, hard).
  • question_type ( QuestionType ) - The type of question (both, multiple choice, true/false).
  • encoding ( ResponseEncoding ) - The encoding of the API response.

Returns
A list of questions.

Return Type
QuestionData

async Client.get_categories

await Client(...).categories()

This function is a coroutine.

Fetches a list of all categories the API has.

Returns
A list of categories.

Return Type
CategoriesList

async Client.get_category_questions_count

await Client(...).category_questions_count(category=Category.general_knowledge)

This function is a coroutine.

Fetches statistics about a specific category.

Parameters

  • category ( Category ) - The category to fetch data from.

Returns
Statistics about the category.

Return Type
CategoryQuestionsCount

async Client.get_global_questions_count

await Client(...).global_questions_count()

This function is a coroutine.

Fetches statistics about all the categories.

Returns
Global statistics

Return Type
GlobalQuestionsCount

exception NoResults

<NoResults>: [Code 1] Could not return results. The API doesn't have enough questions for your query. (Ex. Asking for 50 Questions in a Category that only has 20.)

This exception is raised when a response_code 1 is returned.

The API doesn't have enough questions for the given query.

exception InvalidParameter

<InvalidParameter>: [Code 2] Contains an invalid parameter. Arguements passed in aren't valid. (Ex. Amount = Five)

This exception is raised when a response_code 2 is returned.

One or more of the query parameters are invalid.

exception TokenNotFound

<TokenNotFound>: [Code 3] Session Token does not exist.

This exception is raised when a response_code 3 is returned.

The session token was not specified.

exception TokenEmpty

<TokenEmpty>: [Code 4] Session Token has returned all possible questions for the specified query. Resseting the Token is necassery.

This exception is raised when a response_code 4 is returned.

The session token is about to expire. (session tokens last 6 hours only)

type QuestionData

class QuestionData(TypedDict):
	category: str
	type: str
	difficulty: str
	question: str
	correct_answer: str
	incorrect_answers: List[str]

type QuestionResponse

class QuestionResponse(TypedDict):
	response_code: int
	results: List[QuestionData]

type CategoryData

class CategoryData(TypedDict):
	id: int
	name: str

type CategoriesList

class CategoriesList(TypedDict):
	trivia_categories: List[CategoryData]

type CategoryQuestionsCount

class CategoryQuestionsCount(TypedDict):
	category_id: int
	category_questions_count: List[_CategoryQuestionsCount]

type GlobalQuestionsCount

class GlobalQuestionsCount(TypedDict):
	overall: _GlobalQuestionsCount
	categories: Dict[str, _GlobalQuestionsCount]

enum ResponseEncoding

class ResponseEncoding(Enum):
	default: None = None
	url: str = "url3986"
	base64: str = "base64"

enum Difficulty

class QuestionDifficulty(Enum):
	undefined: None = None
	easy: str = "easy"
	medium: str = "medium"
	hard: str = "hard"

enum QuestionType

class QuestionType(Enum):
	both: None = None
	multiple_choice: str = "multiple"
	true_false: str = "boolean"

enum Category

class QuestionCategory(Enum):
	undefined: None = None
	general_knowledge: int = 9
	entertainment_books: int = 10
	entertainment_film: int = 11
	entertainment_music: int = 12
	entertainment_music_and_theatres: int = 13
	entertainment_television: int = 14
	entertainment_video_games: int = 15
	entertainment_board_games: int = 16
	science_and_nature: int = 17
	science_computers: int = 18
	science_mathematics: int = 19
	mythology: int = 20
	sports: int = 21
	geography: int = 22
	history: int = 23
	politics: int = 24
	art: int = 25
	celebrities: int = 26
	animals: int = 27
	vehicles: int = 28
	entertainment_comics: int = 29
	science_gadgets: int = 30
	entertainment_japanese_anime_and_manga: int = 31
	entertainment_cartoons_and_animations: int = 32
:scroll: License

FAQs


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