ナビゲーション

Python

Python SDK

bannerify Python パッケージで、画像と PDF を生成する方法を説明します。

bannerify は、Python 3.8 以降向けの Bannerify クライアントです。エラーを値として返すため、リクエストが失敗しても例外は発生しません。

インストール

Examples

Open only what you need

pip
pip install bannerify
uv
uv add bannerify

クライアントを作成する

API キーが必要です。ダッシュボードの API Keys ページで作成し、サーバー側で管理してください。

import os

from bannerify import BannerifyClient

client = BannerifyClient(os.environ["BANNERIFY_API_KEY"])

クライアントは HTTP のコネクションプールを保持します。終わったら client.close() を呼ぶか、クライアントをコンテキストマネージャーとして使ってください。

with BannerifyClient(os.environ["BANNERIFY_API_KEY"]) as client:
    result = client.create_image("tpl_xxx")

画像を生成する

result = client.create_image(
    "tpl_xxx",
    modifications=[{"name": "headline", "text": "Summer sale"}],
)

if "error" in result:
    raise RuntimeError(result["error"]["message"])

with open("banner.png", "wb") as file:
    file.write(result["result"])

result["result"] に、画像のバイト列が入っています。

メソッド

メソッド 結果 用途
create_image bytes 画像のバイト列を取得する
create_pdf bytes PDF を取得する
create_stored_image URL の文字列 ホスト済みの画像 URL を取得する
render_video (Beta) イベントのイテレーター 動画をレンダリングし、進行状況を追う
render_and_wait_video (Beta) URL の文字列 動画をレンダリングし、MP4 の URL を取得する
create_video (Beta) 作成された動画の dict 待たずに動画を開始し、その ID をすぐに取得する
get_video (Beta) 動画の dict ID から、動画のステータスと MP4 の URL を読み取る
watch_video (Beta) イベントのイテレーター ID から、動画の進行状況をもう一度追う
generate_image_signed_url URL の文字列 開かれたときにレンダリングされるリンクを作る

最初の 3 つは画像と PDF の作成で、動画のメソッドは動画のレンダリングで、最後の 1 つは署名付き URLで説明しています。

エラーを処理する

generate_image_signed_url 以外のメソッドは、result キーまたは error キーのどちらかを持つ dict を返します。両方を持つことはありません。

{"result": b"..."}

{"error": {"code": "NOT_FOUND", "message": "...", "docs": "...", "requestId": "..."}}

API が返すエラーには、4 つのキーがすべてあります。docs は、そのコードのページへのリンクです。リクエストについてサポートに問い合わせるときは、requestId を伝えてください。コードの一覧は、エラーにあります。

SDK は、いくつかのエラーを自分で作ります。これらには code、message、docs はありますが、requestId はありません。

コード 意味
INVALID_FORMAT 形式が png、jpeg、webp のいずれでもない
TIMEOUT リクエストがタイムアウトを超えた
TIMEOUT_ERROR 動画のストリームが切れ、SDK が動画をもう一度読み取れなかった
REQUEST_ERROR API が応答する前にリクエストが失敗した。たとえば、接続が切れた場合
HTTP_ERROR API がエラーで応答したが、SDK が読み取れなかった
EXCEPTION SDK 内で起きた、そのほかの例外。message に例外のテキストが入ります

generate_image_signed_url は文字列を返し、形式がサポートされていない場合は ValueError を発生させます。

オプション

client = BannerifyClient(
    os.environ["BANNERIFY_API_KEY"],
    timeout=30.0,
)
オプション 既定値 説明
base_url https://api.bannerify.co/v1 API のベース URL
timeout 60.0 リクエストのタイムアウト (秒)

Modification モデル

modification は dict です。bannerify の Modification モデルを渡すこともでき、クライアントが変換します。

from bannerify import Modification

client.create_image("tpl_xxx", modifications=[Modification(name="headline", text="Hello")])