# Schnellstart

Dieser Schnellstart übermittelt eine Weydub-Aufgabe zur Entfernung von Text aus einem Video und fragt den Status ab, bis ein Ergebnis bereitsteht. Er ist bewusst kompakt gehalten, damit ein menschlicher Entwickler oder ein KI-Codierungstool ihn in ein Backend-Skript kopieren und die Zugangsdaten schnell überprüfen kann.

## Voraussetzungen

- Ein Weydub-Konto. Angemeldete Nutzer können über My Account kostenlos den API-Zugriff freischalten.
- `AppKey` und `AppSecret`.
- Eine öffentlich erreichbare Video-URL. Zu den unterstützten Formaten gehören `mp4`, `avi`, `mov`, `mkv`, `mpg`, `m3u8` und `m4v`.

## Empfohlene Umgebungsvariablen

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

## Python-Beispiel

```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)
```

## Nächste Schritte

- Fügen Sie eine `callback`-URL hinzu, wenn Sie eine für den Produktionseinsatz geeignete asynchrone Verarbeitung benötigen.
- Speichern Sie zurückgegebene Medien-URLs umgehend; generierte Assets unterliegen der Aufbewahrungsrichtlinie der Plattform.
- Verwenden Sie `uid`, wenn Ihre Anwendung Arbeitsbereiche nach Kunden oder Mandanten trennen muss.
- Führen Sie [Demo-Szenarien](./demo-scenarios.md) aus, bevor Sie Kundenmedien verarbeiten.

## Für KI-Codierungstools

Weisen Sie den Assistenten an:

- Lesen Sie [Authentifizierung und Signierung](./auth-and-signing.md), bevor Sie den Code bearbeiten.
- Bewahren Sie die Zugangsdaten in `WEYDUB_APP_KEY` und `WEYDUB_APP_SECRET` auf.
- Erstellen Sie einen ausschließlich backendseitigen Client; rufen Sie Weydub nicht aus Browsercode mit `AppSecret` auf.
- Signieren Sie genau den kompakten JSON-Body, der gesendet wird.
- Fügen Sie einen Dry-Run-Modus hinzu, der Endpunkt und Payload ausgibt, ohne geheime Werte auszugeben.
