# Bắt đầu nhanh

Hướng dẫn bắt đầu nhanh này gửi một tác vụ xóa văn bản khỏi video tới Weydub và liên tục kiểm tra cho đến khi có kết quả. Hướng dẫn được cố ý giữ ngắn gọn để nhà phát triển là con người hoặc công cụ lập trình AI có thể sao chép vào một tập lệnh backend và nhanh chóng xác minh thông tin xác thực.

## Yêu cầu tiên quyết

- Một tài khoản Weydub. Người dùng đã đăng nhập có thể kích hoạt miễn phí quyền truy cập API trong Tài khoản của tôi.
- `AppKey` và `AppSecret`.
- Một URL video có thể truy cập công khai. Các định dạng được hỗ trợ bao gồm `mp4`, `avi`, `mov`, `mkv`, `mpg`, `m3u8` và `m4v`.

## Các biến môi trường được đề xuất

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

## Ví dụ 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)
```

## Các bước tiếp theo

- Thêm URL `callback` khi bạn cần xử lý bất đồng bộ đủ tiêu chuẩn cho môi trường production.
- Nhanh chóng lưu các URL nội dung đa phương tiện được trả về; các tài nguyên được tạo ra tuân theo chính sách lưu giữ của nền tảng.
- Sử dụng `uid` nếu ứng dụng của bạn cần tách biệt các không gian làm việc theo khách hàng hoặc tenant.
- Chạy [Các kịch bản demo](./demo-scenarios.md) trước khi xử lý nội dung đa phương tiện của khách hàng.

## Dành cho công cụ lập trình AI

Yêu cầu trợ lý:

- Đọc [Xác thực và ký](./auth-and-signing.md) trước khi chỉnh sửa mã.
- Lưu trữ thông tin xác thực trong `WEYDUB_APP_KEY` và `WEYDUB_APP_SECRET`.
- Xây dựng client chỉ chạy ở backend; không dùng mã trình duyệt có `AppSecret` để gọi Weydub.
- Ký đúng phần thân JSON dạng rút gọn được gửi đi.
- Thêm chế độ chạy thử để in ra endpoint và payload nhưng không in ra thông tin bí mật.
