# Démarrage rapide

Ce guide de démarrage rapide soumet une tâche Weydub de suppression de texte dans une vidéo et effectue des vérifications répétées jusqu’à ce qu’un résultat soit disponible. Il est volontairement concis afin qu’un développeur humain ou un outil de programmation IA puisse le copier dans un script backend et vérifier rapidement ses identifiants.

## Prérequis

- Un compte Weydub. Les utilisateurs connectés peuvent activer gratuitement l’accès à l’API depuis la rubrique Mon compte.
- `AppKey` et `AppSecret`.
- Une URL de vidéo accessible publiquement. Les formats pris en charge incluent `mp4`, `avi`, `mov`, `mkv`, `mpg`, `m3u8` et `m4v`.

## Variables d’environnement recommandées

```bash
export WEYDUB_APP_KEY="your_app_key"
export WEYDUB_APP_SECRET="your_app_secret"
```

## Exemple Python

```python
import hashlib
import json
import os
import time

import requests

APP_KEY = os.environ["WEYDUB_APP_KEY"]
APP_SECRET = os.environ["WEYDUB_APP_SECRET"]
BASE_URL = "https://api.zhaoli.com"


def api_post(path: str, payload: dict) -> dict:
    body = json.dumps(payload, ensure_ascii=False, separators=(",", ":"))
    body_md5 = hashlib.md5(body.encode("utf-8")).hexdigest()
    app_sign = hashlib.md5((body_md5 + APP_SECRET).encode("utf-8")).hexdigest()
    headers = {
        "Content-Type": "application/json",
        "AppKey": APP_KEY,
        "AppSign": app_sign,
    }
    response = requests.post(f"{BASE_URL}{path}", headers=headers, data=body, timeout=30)
    response.raise_for_status()
    return response.json()


create_res = api_post(
    "/v-w-c/gateway/ve/work/free",
    {
        "urls": ["https://example.com/demo.mp4"],
        "needChineseOcclude": 1,
        "videoInpaintLang": "all",
    },
)

work_id = create_res["body"]["dataList"][0]["id"]
print("Created work:", work_id)

while True:
    status_res = api_post("/v-w-c/gateway/ve/work/status", {"idWorks": [work_id]})
    item = status_res["body"]["content"][0]
    process_status = item["processStatus"]

    if process_status == 1:
        print("Done:", item.get("videoUrl"))
        break
    if process_status > 1:
        raise RuntimeError(item.get("errorDetail") or "Task failed")

    print("Processing...")
    time.sleep(10)
```

## Étapes suivantes

- Ajoutez un `callback` URL lorsque vous avez besoin d’une gestion asynchrone adaptée à la production.
- Stockez rapidement les URL des contenus multimédias renvoyées ; les ressources générées sont soumises à la politique de conservation de la plateforme.
- Utilisez `uid` si votre application doit séparer les espaces de travail par client ou locataire.
- Exécutez les [scénarios de démonstration](./demo-scenarios.md) avant d’utiliser des contenus multimédias de clients.

## Pour les outils de programmation AI

Demandez à l’assistant de :

- Lire [Authentification et signature](./auth-and-signing.md) avant de modifier le code.
- Conserver les identifiants dans `WEYDUB_APP_KEY` et `WEYDUB_APP_SECRET`.
- Créer un client exclusivement backend ; ne pas appeler Weydub depuis du code exécuté dans le navigateur avec `AppSecret`.
- Signer exactement le corps JSON compact envoyé.
- Ajouter un mode de simulation qui affiche le point de terminaison et la charge utile sans afficher les secrets.
