# เริ่มต้นใช้งานอย่างรวดเร็ว

คู่มือเริ่มต้นใช้งานอย่างรวดเร็วนี้จะส่งงานลบข้อความออกจากวิดีโอไปยัง Weydub และตรวจสอบสถานะเป็นระยะจนกว่าผลลัพธ์จะพร้อม คู่มือนี้ตั้งใจให้กระชับ เพื่อให้นักพัฒนาหรือเครื่องมือเขียนโค้ด AI สามารถคัดลอกไปใช้ในสคริปต์แบ็กเอนด์และตรวจสอบข้อมูลรับรองได้อย่างรวดเร็ว

## ข้อกำหนดเบื้องต้น

- บัญชี Weydub ผู้ใช้ที่ลงชื่อเข้าใช้แล้วสามารถเปิดใช้งานการเข้าถึง API ได้ฟรีจาก My Account
- `AppKey` และ `AppSecret`
- URL ของวิดีโอที่เข้าถึงได้แบบสาธารณะ รูปแบบที่รองรับ ได้แก่ `mp4`, `avi`, `mov`, `mkv`, `mpg`, `m3u8` และ `m4v`

## ตัวแปรสภาพแวดล้อมที่แนะนำ

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

## ตัวอย่าง 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)
```

## ขั้นตอนต่อไป

- เพิ่ม URL สำหรับ `callback` เมื่อต้องการการจัดการแบบอะซิงโครนัสระดับใช้งานจริง
- จัดเก็บ URL ของสื่อที่ส่งคืนโดยเร็ว สื่อที่สร้างขึ้นอยู่ภายใต้นโยบายการเก็บรักษาของแพลตฟอร์ม
- ใช้ `uid` หากแอปของคุณจำเป็นต้องแยกพื้นที่ทำงานตามลูกค้าหรือผู้เช่าแต่ละราย
- เรียกใช้ [สถานการณ์สาธิต](./demo-scenarios.md) ก่อนดำเนินการกับสื่อของลูกค้า

## สำหรับเครื่องมือเขียนโค้ด AI

บอกผู้ช่วยให้ดำเนินการดังนี้:

- อ่าน [การยืนยันตัวตนและการลงนาม](./auth-and-signing.md) ก่อนแก้ไขโค้ด
- เก็บข้อมูลรับรองไว้ใน `WEYDUB_APP_KEY` และ `WEYDUB_APP_SECRET`
- สร้างไคลเอนต์ที่ใช้เฉพาะฝั่งแบ็กเอนด์ ห้ามเรียก Weydub จากโค้ดในเบราว์เซอร์โดยใช้ `AppSecret`
- ลงนามเนื้อหา JSON แบบกะทัดรัดชุดเดียวกับที่ส่งจริงทุกประการ
- เพิ่มโหมด dry-run ที่แสดง endpoint และ payload โดยไม่แสดงข้อมูลลับ
