Aller au contenu

Démarrage rapide

Captures d'écran de sites web en Python

Utilisez requests pour créer une capture d'écran avec une seule requête HTTPS, sans infrastructure de navigateur à gérer.

Ironfang Render utilise une API HTTPS standard : Python peut donc l'appeler avec requests, sans SDK. Une requête réussie renvoie directement les octets de l'image, prêts à être écrits dans un fichier.

Obtenir une clé

Créez une clé API dans le portail. Le secret ne s'affiche qu'une fois et il est stocké sous forme de hachage. Conservez-le dans une variable d'environnement nommée IRONFANG_API_KEY plutôt que dans le fichier source ; l'exemple ci-dessous l'y lit.

export IRONFANG_API_KEY="if_live_..."

Installer

pip install requests

Réaliser une capture d'écran

import os
import sys

import requests

key = os.environ.get("IRONFANG_API_KEY")
if not key:
    sys.exit("Set IRONFANG_API_KEY to your Ironfang API key.")

resp = requests.post(
    "https://api.ironfang.uk/render/v1/screenshot",
    headers={"Authorization": f"Bearer {key}"},
    json={"url": "https://example.com", "width": 1280},
    timeout=60,
)

if resp.status_code != 200:
    # Errors are JSON even though success is binary.
    err = resp.json()["error"]
    sys.exit(f"{resp.status_code} {err['code']}: {err['message']}")

with open("shot.png", "wb") as f:
    f.write(resp.content)

Exécutez-le, et la capture d'écran est enregistrée sous le nom shot.png dans le répertoire courant :

python shot.py

Gérer les erreurs

Les réponses de rendu réussies sont binaires. Les erreurs sont en JSON, de la forme {"error": {"code", "message"}}. Une clé absente ou non reconnue renvoie 401 invalid_api_key. Une clé sans la portée render:render renvoie 403 insufficient_scope.

# The status check comes before the file is written: a failed
# render returns JSON, which must not be saved as shot.png.

PDF et modèles

La même forme d'appel fonctionne pour les PDF sur /render/v1/pdf, et pour les images issues de modèles sur /render/v1/image/{id}. Seuls le chemin et le corps changent.

Pour aller plus loin