Documentation

GutenbergClient

Client for the Gutendex Project Gutenberg catalog API.

Tags
since
3.0.0

Table of Contents

Constants

API_BASE  = 'https://gutendex.com/books'
Gutendex API base URL.
LANGUAGE_NAME_MAP  = ['english' => 'en', 'french' => 'fr', 'german' => 'de', 'spanish' => 'es', 'italian' => 'it', 'portuguese' => 'pt', 'dutch' => 'nl', 'finnish' => 'fi', 'swedish' => 'sv', 'danish' => 'da', 'norwegian' => 'no', 'hungarian' => 'hu', 'polish' => 'pl', 'czech' => 'cs', 'greek' => 'el', 'russian' => 'ru', 'chinese' => 'zh', 'japanese' => 'ja', 'korean' => 'ko', 'arabic' => 'ar', 'hebrew' => 'he', 'turkish' => 'tr', 'romanian' => 'ro', 'catalan' => 'ca', 'latin' => 'la', 'esperanto' => 'eo', 'tagalog' => 'tl']
Common language name to ISO 639-1 code mapping.
TIMEOUT  = 10
HTTP fetch timeout in seconds.

Methods

browse()  : array{results: list, count: int, next: bool}|array{error: string}
Browse popular books for a language (no search query).
guessLanguageCode()  : string|null
Guess ISO 639-1 language code from a language name.
search()  : array{results: list, count: int, next: bool}|array{error: string}
Search Project Gutenberg catalog.
extractTextUrl()  : string|null
Extract the best plain-text URL from a Gutenberg book record.
fetchJson()  : array<string|int, mixed>|null
Fetch and decode JSON from a URL.

Constants

API_BASE

Gutendex API base URL.

private mixed API_BASE = 'https://gutendex.com/books'

LANGUAGE_NAME_MAP

Common language name to ISO 639-1 code mapping.

private array<string, string> LANGUAGE_NAME_MAP = ['english' => 'en', 'french' => 'fr', 'german' => 'de', 'spanish' => 'es', 'italian' => 'it', 'portuguese' => 'pt', 'dutch' => 'nl', 'finnish' => 'fi', 'swedish' => 'sv', 'danish' => 'da', 'norwegian' => 'no', 'hungarian' => 'hu', 'polish' => 'pl', 'czech' => 'cs', 'greek' => 'el', 'russian' => 'ru', 'chinese' => 'zh', 'japanese' => 'ja', 'korean' => 'ko', 'arabic' => 'ar', 'hebrew' => 'he', 'turkish' => 'tr', 'romanian' => 'ro', 'catalan' => 'ca', 'latin' => 'la', 'esperanto' => 'eo', 'tagalog' => 'tl']

Used as fallback when LgSourceLang is not set.

Methods

browse()

Browse popular books for a language (no search query).

public browse(string $languageCode[, int $page = 1 ]) : array{results: list, count: int, next: bool}|array{error: string}
Parameters
$languageCode : string

ISO 639-1 language code (e.g. "en", "fr")

$page : int = 1

Page number (1-based)

Return values
array{results: list, count: int, next: bool}|array{error: string}

guessLanguageCode()

Guess ISO 639-1 language code from a language name.

public static guessLanguageCode(string $languageName) : string|null
Parameters
$languageName : string

Language name (e.g. "English", "French")

Return values
string|null

ISO code or null if unknown

Search Project Gutenberg catalog.

public search(string $query[, string|null $languageCode = null ][, int $page = 1 ]) : array{results: list, count: int, next: bool}|array{error: string}
Parameters
$query : string

Search query (title or author)

$languageCode : string|null = null

ISO 639-1 language code (e.g. "en", "fr")

$page : int = 1

Page number (1-based)

Return values
array{results: list, count: int, next: bool}|array{error: string}

extractTextUrl()

Extract the best plain-text URL from a Gutenberg book record.

private extractTextUrl(array<string|int, mixed> $book) : string|null

Prefers UTF-8 plain text, falls back to ASCII.

Parameters
$book : array<string|int, mixed>

Gutendex book record

Return values
string|null

Plain text URL or null

fetchJson()

Fetch and decode JSON from a URL.

private fetchJson(string $url) : array<string|int, mixed>|null
Parameters
$url : string

URL to fetch

Return values
array<string|int, mixed>|null

Decoded JSON or null on failure


        
On this page

Search results