Skip to content

Клиентская библиотека для генерации скриншотов по HTML-коду с помощью публичного API Gotenberg

Notifications You must be signed in to change notification settings

devmanorg/gotenberg-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Gotenberg API

Библиотека Gotenberg API упрощает работу с endpoint API для генерации скриншотов gotenberg.dev, предоставляя тонкую обёртку над веб API и библиотекой HTTPX.

Она добавляет к обычным возможностям HTTPX свои схемы данных, а также удобные, часто используемые функции, но не мешает, при необходимости, спускаться ниже на уровень HTTP-запросов.

Установка

Вы можете установить библиотеку с помощью pip:

# Установить из публичного GitHub репозитория (рекомендуемый способ)
$ pip install git+https://github.com/devmanorg/gotenberg-api.git

# Установить из приватного GitLab репозитория (если у вас есть к нему доступ)
$ pip install git+https://gitlab.dvmn.org/dvmn/courses/fastapi/gotenberg-api.git

Использование

Библиотека использует асинхронный HTTPX клиент.

Для запуска требуется указать следующие настройки:

  • базовый адрес Gotenberg API
  • ширина скриншота в пикселях
  • формат скриншота (может принимать значения jpeg, png, webp). По-умолчанию - jpeg.
  • время ожидания завершения анимаций на html-странице. По-умолчанию - 2 секунды.
  • опциональные настройки асинхронного клиента

Важно: время ожидания завершения анимаций должно быть меньше значения таймаута асинхронного клиента, иначе библиотека будет всегда возвращать TimeoutError. Рекомендуемый диапазон различия: 2-5 секунд.

Пример запроса:

import httpx

from gotenberg_api import GotenbergServerError, ScreenshotHTMLRequest

 try:
    async with httpx.AsyncClient(
        base_url=settings_var.get().GOTENBERG_URL,
        timeout=15,
    ) as client:
        screenshot_bytes = await ScreenshotHTMLRequest(
            index_html=raw_html,
            width=1000,
            format='png',
            wait_delay=5,
        ).asend(client)
except GotenbergServerError as e:
    logger.error(e)
    screenshot_bytes = None

Исключения

У библиотеки есть своё собственное исключение, которое через контекстный менеджер отлавливает исключение:

About

Клиентская библиотека для генерации скриншотов по HTML-коду с помощью публичного API Gotenberg

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages