# Panduan Memulai Cepat

Panduan memulai cepat ini mengirimkan tugas Weydub untuk menghapus teks dari video dan melakukan polling hingga hasilnya siap. Panduan ini sengaja dibuat ringkas agar pengembang manusia atau alat pemrograman AI dapat menyalinnya ke dalam skrip backend dan memverifikasi kredensial dengan cepat.

## Prasyarat

- Akun Weydub. Pengguna yang telah masuk dapat mengaktifkan akses API secara gratis melalui Akun Saya.
- `AppKey` dan `AppSecret`.
- URL video yang dapat diakses secara publik. Format yang didukung mencakup `mp4`, `avi`, `mov`, `mkv`, `mpg`, `m3u8`, dan `m4v`.

## Variabel Lingkungan yang Direkomendasikan

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

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

## Langkah Berikutnya

- Tambahkan `callback` URL saat Anda memerlukan penanganan asinkron berstandar produksi.
- Segera simpan URL media yang dikembalikan; aset yang dihasilkan mengikuti kebijakan retensi platform.
- Gunakan `uid` jika aplikasi Anda perlu memisahkan ruang kerja berdasarkan pelanggan atau tenant.
- Jalankan [Skenario demo](./demo-scenarios.md) sebelum memproses media pelanggan.

## Untuk Alat Pemrograman AI

Instruksikan asisten untuk:

- Baca [Autentikasi dan penandatanganan](./auth-and-signing.md) sebelum mengedit kode.
- Simpan kredensial dalam `WEYDUB_APP_KEY` dan `WEYDUB_APP_SECRET`.
- Buat klien khusus backend; jangan panggil Weydub dari kode browser dengan `AppSecret`.
- Tandatangani isi JSON ringkas yang persis sama dengan yang dikirim.
- Tambahkan mode dry-run yang mencetak endpoint dan payload tanpa mencetak informasi rahasia.
