Python / Node.js 调用短视频去水印 API 完整示例(含 SDK)

Python / Node.js 调用短视频去水印 API 完整示例(含 SDK)

导语

本文给出云析短视频解析接口的 Python、Node.js 完整调用示例,以及可本地 pip install -e / require 的轻量 SDK。适合想把「去水印」接到后端服务、脚本任务或内部中台的同学。


环境准备

  1. 注册并获取 UID/KEY:https://syapi.chuangye.site/user/login/register
  2. 文档:https://syapi.chuangye.site/home/doc
  3. 示例仓库:
bash 复制代码
export YUNXI_UID=YOUR_UID
export YUNXI_KEY=YOUR_KEY

PowerShell:

powershell 复制代码
$env:YUNXI_UID="YOUR_UID"
$env:YUNXI_KEY="YOUR_KEY"

接口地址:https://syapi.chuangye.site/home/api

产品编码示例:dsp


Python:标准库即可跑

仓库文件:examples/python/demo.py

python 复制代码
import json, os, sys
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_BASE = os.getenv("YUNXI_API_BASE", "https://syapi.chuangye.site/home/api")
UID = os.getenv("YUNXI_UID", "YOUR_UID")
KEY = os.getenv("YUNXI_KEY", "YOUR_KEY")

def parse_media(share_url: str) -> dict:
    qs = urlencode({"type": "dsp", "uid": UID, "key": KEY, "url": share_url})
    req = Request(f"{API_BASE}?{qs}", headers={"User-Agent": "yunxi-demo/1.0"})
    with urlopen(req, timeout=30) as resp:
        return json.loads(resp.read().decode("utf-8"))

if __name__ == "__main__":
    url = sys.argv[1] if len(sys.argv) > 1 else "https://www.douyin.com/video/xxxxxxxx"
    data = parse_media(url)
    print(json.dumps(data, ensure_ascii=False, indent=2))

运行:

bash 复制代码
python examples/python/demo.py "分享链接"

Python SDK(可选)

bash 复制代码
cd sdk/python
pip install -e .
python 复制代码
from yunxi_api import YunxiClient

client = YunxiClient()  # 读取环境变量 YUNXI_UID / YUNXI_KEY
data = client.parse_ok("分享链接")
print(data.get("playAddr") or data.get("pics"))

parse_ok 会在 code0001/200 时抛错,方便写业务逻辑。


Node.js 18+:原生 fetch

仓库文件:examples/nodejs/demo.js

javascript 复制代码
const API_BASE = process.env.YUNXI_API_BASE || 'https://syapi.chuangye.site/home/api';
const UID = process.env.YUNXI_UID || 'YOUR_UID';
const KEY = process.env.YUNXI_KEY || 'YOUR_KEY';

async function parseMedia(shareUrl) {
  const qs = new URLSearchParams({
    type: 'dsp',
    uid: UID,
    key: KEY,
    url: shareUrl,
  });
  const res = await fetch(`${API_BASE}?${qs}`);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

const shareUrl = process.argv[2] || 'https://www.douyin.com/video/xxxxxxxx';
parseMedia(shareUrl).then((data) => console.log(JSON.stringify(data, null, 2)));

运行:

bash 复制代码
node examples/nodejs/demo.js "分享链接"

Node SDK(可选)

javascript 复制代码
const { YunxiClient } = require('./sdk/nodejs');

(async () => {
  const client = new YunxiClient();
  const data = await client.parseOk(process.argv[2]);
  console.log(data.playAddr || data.pics);
})();

结果处理建议

text 复制代码
成功 code ∈ {0001, 200}
  ├─ playAddr → 视频
  └─ pics     → 图集数组
失败 → 读 msg,一般不扣点(以控制台规则为准)

生产环境补充:

  • 超时 15~30s
  • 有限次重试(注意别把失败重试打成费用;失败通常不扣点,但仍要控 QPS)
  • 日志里打请求 id / 分享域,不要打完整 KEY

PHP / Java / curl

同仓库 examples/ 目录还有:

  • examples/php/demo.php
  • examples/java/Demo.java
  • examples/curl/demo.sh

一套参数,多语言复用,减少团队协作成本。


总结

把「平台解析」交给云析,你的服务只做鉴权转发与业务封装,迭代会快很多。

如果希望下一篇写 Spring Boot / NestJS 封装,评论区扣 1。


相关推荐
circuitsosk8 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
shehuiyuelaiyuehao8 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
宸津-代码粉碎机8 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
测试19989 小时前
如何用appium搭建Android自动化测试框架?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
程序员大雄学编程9 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
数字化转型分享点滴9 小时前
## 工厂数字化管理系统的价值体现:构建制造全流程数据闭环
python
2301_8000742110 小时前
map,list简单方法
windows·python·list
ai小陈11 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
DeepVisionary11 小时前
30B 参数打平 1 万亿参数:Meta 开源 Muse Glimmer,跑分 35 对 36
python·自动化
吴声子夜歌11 小时前
Guava——基本工具(二)
windows·python·guava