Python wrapper for the open-trivia-database API
Project description
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 Get
from rich import print_json
async def main() -> None:
print_json(await Get.questions(amount=1))
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
Get
Sends a POST call to the API and gets the desired data.
Methods
async
questions
async
categories
async
category_questions_count
async
global_questions_count
async
Get.questions
await Get.questions(
amount=10,
category=QuestionCategory.undefined,
difficulty=QuestionDifficulty.undefined,
_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 ( QuestionCategory ) - The category of questions.
- difficulty ( QuestionDifficulty ) - The difficulty of the question (undefined=any, easy, medium, hard).
- _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
Get.categories
await Get.categories()
This function is a coroutine.
Fetches a list of all categories the API has.
Returns
A list of categories.
Return Type
CategoriesList
async
Get.category_questions_count
await Get.category_questions_count(category=QuestionCategory.general_knowledge)
This function is a coroutine.
Fetches statistics about a specific category.
Parameters
- category ( QuestionCategory ) - The category to fetch data from.
Returns
Statistics about the category.
Return Type
CategoryQuestionsCount
async
Get.global_questions_count
await Get.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.
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]
type
ResponseEncoding
class ResponseEncoding(TypedDict):
default: None = None
url: str = "url3986"
base64: str = "base64"
type
QuestionDifficulty
class QuestionDifficulty(TypedDict):
undefined: None = None
easy: str = "easy"
medium: str = "medium"
hard: str = "hard"
type
QuestionType
class QuestionType(TypedDict):
both: None = None
multiple_choice: str = "multiple"
true_false: str = "boolean"
type
QuestionCategory
class QuestionCategory(TypedDict):
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for opentdb_py-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5df3a3e6757fc4f89f2b1f5b50da436d68d0858811e9656818b5fc59dd1b7be9 |
|
MD5 | 7cf5883df581581b6f10824a21b19bb6 |
|
BLAKE2b-256 | 57d6934881d3ad153f2ac19145ed7ca90a4340ad73614b6a96b66e60811824f6 |