GutenbergClient
in package
Client for the Gutendex Project Gutenberg catalog API.
Tags
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.
TIMEOUT
HTTP fetch timeout in seconds.
private
mixed
TIMEOUT
= 10
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: listguessLanguageCode()
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()
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: listextractTextUrl()
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