一、前言
淘宝商品视频 API 是淘宝开放平台(TOP)提供的官方接口,核心用于获取淘宝 / 天猫商品关联的视频信息(如视频播放地址、时长、封面、状态等)。该接口广泛应用于电商数据分析、第三方电商工具开发、商品信息聚合展示等场景。
二、接口概述
以淘宝官方的「商品视频获取接口(taobao.item.video.get)」为例,核心信息如下:
1. 基础信息
| 项⽬ | 说明 |
|---|---|
| 接口方法名 | taobao.item.video.get(固定值) |
| 请求方式 | HTTP POST |
| 正式环境地址 | c0b.cc/R4rbK2 (前往体验接口测试,Taobaoapi2014添加V获取) |
| 接口权限 | 需要申请「商品视频读取」相关权限(开放平台应用管理页配置) |
2. 核心请求参数(必填 + 关键)
| 参数名 | 类型 | 说明 |
|---|---|---|
method | 字符串 | 接口方法名,固定为taobao.item.video.get |
app_key | 字符串 | 开放平台创建应用后获取的 APP Key |
session | 字符串 | 用户授权后的 Session Key(部分场景需用户授权,如获取私有商品视频) |
item_id | 字符串 | 商品 ID(要查询视频的淘宝商品 ID) |
format | 字符串 | 响应格式,推荐填json |
v | 字符串 | 接口版本,固定为2.0 |
timestamp | 字符串 | 时间戳,格式为yyyy-MM-dd HH:mm:ss(如2026-01-12 10:00:00) |
sign | 字符串 | 请求签名(按淘宝规则生成,签名错误会直接调用失败) |
3. 核心响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
video_id | 字符串 | 视频唯一 ID |
video_url | 字符串 | 视频播放地址(URL) |
video_duration | 数字 | 视频时长(单位:秒) |
cover_url | 字符串 | 视频封面图片地址 |
status | 数字 | 视频状态(1 = 正常,0 = 异常 / 下架) |
三、Python 请求示例
1. 前置准备
- 安装依赖库:
bash
pip install requests hashlib - 准备凭证:从淘宝开放平台获取
APP_KEY、APP_SECRET,若需用户授权则补充SESSION。
2. 完整调用代码
python
import requests import hashlib import time from urllib.parse import urlencode # ===================== 配置区(替换为你自己的信息) ===================== APP_KEY = "你的APP Key" APP_SECRET = "你的APP Secret" SESSION = "你的Session Key(非必填,根据权限要求填写)" ITEM_ID = "1234567890" # 要查询的淘宝商品ID API_ENV = "online" # online=正式环境,sandbox=沙箱测试环境 # ====================================================================== # 选择接口地址 API_URL = "c0b.cc/R4rbK2 (前往体验接口测试,Taobaoapi2014添加V获取)" if API_ENV == "online" else "https://gw.api.tbsandbox.com/router/rest" def generate_taobao_sign(params: dict, app_secret: str) -> str: """ 生成淘宝API签名(核心!签名错误会导致接口调用失败) 签名规则:参数按key升序排列 → 拼接成key+value字符串 → 前后加app_secret → MD5加密 → 转大写 """ # 1. 按参数名升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 2. 拼接字符串(跳过空值) sign_str = app_secret for key, value in sorted_params: if value and str(value).strip(): sign_str += f"{key}{value}" sign_str += app_secret # 3. MD5加密并转大写 sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() return sign def get_taobao_item_video(item_id: str) -> dict | None: """ 调用淘宝商品视频API,返回视频信息字典(失败返回None) """ # 1. 构造基础请求参数 base_params = { "method": "taobao.item.video.get", "app_key": APP_KEY, "session": SESSION, "item_id": item_id, "format": "json", "v": "2.0", "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "sign_method": "md5", "partner_id": "apidoc" # 固定值,仅用于文档示例 } # 2. 生成签名并补充到参数中 base_params["sign"] = generate_taobao_sign(base_params, APP_SECRET) try: # 3. 发送POST请求(淘宝API推荐POST方式) response = requests.post( url=API_URL, data=base_params, timeout=10, # 超时时间10秒 headers={"Content-Type": "application/x-www-form-urlencoded"} ) response.raise_for_status() # 抛出HTTP状态码异常(如400、500) # 4. 解析响应结果 result = response.json() # 处理接口错误 if "error_response" in result: err_msg = result["error_response"]["msg"] err_code = result["error_response"]["code"] print(f"接口调用失败:{err_msg}(错误码:{err_code})") return None # 提取视频核心信息 video_info = result["item_video_get_response"]["video"] return video_info except requests.exceptions.Timeout: print("错误:请求超时,请检查网络或接口地址") return None except requests.exceptions.RequestException as e: print(f"错误:请求异常 - {str(e)}") return None except KeyError as e: print(f"错误:响应解析失败,缺失字段 - {str(e)}") return None # 主程序调用 if __name__ == "__main__": video_data = get_taobao_item_video(ITEM_ID) if video_data: print("✅ 商品视频信息获取成功:") print(f"视频ID:{video_data.get('video_id')}") print(f"播放地址:{video_data.get('video_url')}") print(f"时长(秒):{video_data.get('video_duration')}") print(f"封面地址:{video_data.get('cover_url')}") print(f"视频状态:{video_data.get('status')}")3. 代码关键说明
generate_taobao_sign函数:严格遵循淘宝签名规则生成签名,这是接口调用成功的核心,参数排序、拼接规则不能出错;- 异常处理:覆盖了超时、HTTP 错误、响应字段缺失等常见场景,避免程序直接崩溃;
- 环境区分:支持正式环境和沙箱测试环境切换,方便开发调试。
四、结语
淘宝商品视频 API 的调用核心在于「凭证准备」和「签名生成」,新手容易踩的坑主要是签名规则错误、权限不足、参数格式不正确。在实际开发中,建议:
- 先在沙箱环境完成测试,再切换到正式环境;
- 控制接口调用频率,避免超出淘宝开放平台的限流阈值;
- 增加日志记录和重试机制(如签名过期、网络波动导致的调用失败);
- 若接口返回错误,可通过淘宝开放平台的「错误码查询工具」定位问题(如权限不足、商品 ID 无效等)。
总结
- 调用淘宝商品视频 API 的前提是完成开放平台开发者认证、获取 APP Key/Secret 等核心凭证,并申请对应接口权限;
- 签名生成是核心步骤,必须严格按照「参数升序拼接 + 前后加 APP Secret+MD5 加密转大写」的规则执行;
- 提供的 Python 示例包含完整的请求流程和异常处理,替换配置信息后即可快速测试,需注意区分正式 / 沙箱环境的接口地址。