快手平台根据关键词获取视频列表的 API 接口详解

电子说

1.4w人已加入

描述

引言

在开发与短视频内容相关的应用时,经常需要根据特定关键词搜索并获取平台上的视频列表。快手作为国内领先的短视频平台,其开放平台提供了丰富的 API 接口供开发者使用。本文将详细介绍如何利用快手开放平台的 API 接口,实现根据关键词搜索视频的功能。

一、 接口基础

接口地址: 快手开放平台提供了 /api/rest/open/v1/video/data/search 接口用于视频搜索。

请求方法: GET 或 POST。

认证方式: 调用此接口需要在请求头中携带有效的 Access Token。Access Token 需要通过 OAuth2.0 授权流程获取(通常是客户端凭证模式 client_credentials)。

二、 关键请求参数

调用该接口时,需要传递以下关键参数(部分参数为可选):

参数名 类型 是否必填 说明
access_token String 调用接口凭证
keyword String 搜索关键词
cursor String 用于分页游标,初始调用可不传,后续分页传递上次返回的游标值
count Integer 每页返回的视频数量,最大值通常有限制(如 20)
sort_type Integer 排序方式(例如:0-综合排序,1-最新发布,2-最多点赞等,具体值需参考文档)
publish_time_start Long 视频发布时间范围 - 开始时间戳(毫秒)
publish_time_end Long 视频发布时间范围 - 结束时间戳(毫秒)
... ... ... 其他可选参数(如地域筛选、视频类型等,请查阅最新官方文档)

三、 请求示例

使用 Python requests 库示例 (GET):

 

import requests

# 替换为你的实际 Access Token 和关键词
access_token = "YOUR_ACCESS_TOKEN"
keyword = "科技"

# 构造请求 URL
url = "https://open.kuaishou.com/api/rest/open/v1/video/data/search"
params = {
    "access_token": access_token,
    "keyword": keyword,
    "count": 20,  # 假设每页 20 条
    "sort_type": 1  # 按最新发布排序
}

# 发送 GET 请求
response = requests.get(url, params=params)

# 检查响应状态
if response.status_code == 200:
    data = response.json()
    # 处理返回的 JSON 数据 (见下文)
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")
API

 

使用 Python requests 库示例 (POST):

 

import requests
import json

access_token = "YOUR_ACCESS_TOKEN"
keyword = "科技"

url = "https://open.kuaishou.com/api/rest/open/v1/video/data/search"
headers = {
    "Content-Type": "application/json"
}
payload = json.dumps({
    "access_token": access_token,
    "keyword": keyword,
    "count": 20,
    "sort_type": 1
})

response = requests.post(url, headers=headers, data=payload)

if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")
API

 

使用快手官方 SDK (如果提供): 如果快手提供了特定语言的 SDK,使用 SDK 封装的方法通常会更简洁和安全。具体调用方式需参考 SDK 文档。

四、 响应数据结构解析

成功的响应通常包含以下关键信息(具体字段名称和结构请务必以快手开放平台最新官方文档为准):

 

{
  "result": 1, // 通常 1 表示成功
  "message": "success",
  "data": {
    "cursor": "NEXT_CURSOR_VALUE", // 用于获取下一页的游标
    "has_more": true, // 是否还有更多数据
    "videos": [ // 视频列表
      {
        "video_id": "xxxxxxxxxx", // 视频唯一 ID
        "cover_url": "https://...", // 封面图 URL
        "video_title": "这是一个关于科技的短视频...", // 视频标题
        "video_description": "...", // 视频描述
        "duration": 15, // 视频时长 (秒)
        "create_time": 1672531200000, // 创建时间戳 (毫秒)
        "like_count": 1000, // 点赞数
        "comment_count": 50, // 评论数
        "share_count": 200, // 分享数
        "view_count": 50000, // 播放数
        "author": { // 作者信息
          "user_id": "yyyyyyyyyy",
          "user_name": "科技达人",
          "avatar_url": "https://..."
        }
        // ... 可能还有其他字段 (如标签、地理位置信息等)
      },
      // ... 更多视频对象
    ]
  }
}
API

 

五、 分页处理

首次调用通常不传递 cursor 参数或传递空值,以获取第一页数据。

响应中的 has_more 字段指示是否还有下一页数据。

如果需要获取下一页,将本次响应返回的 cursor 值作为请求参数 cursor 的值,再次调用接口。

循环此过程,直到 has_more 为 false。

六、 注意事项与最佳实践

权限申请: 在快手开放平台创建应用后,需要申请相应的 API 权限(如视频搜索)才能调用此接口。

频率限制: 严格遵守开放平台的 API 调用频率限制(Rate Limit),避免因频繁调用导致接口被限流或禁用。

错误处理: 完善错误处理逻辑,检查 HTTP 状态码和响应 JSON 中的 result 或 error_code 字段,根据错误码进行相应处理(如 Token 过期、参数错误、频率超限等)。

参数验证: 在调用前验证请求参数的有效性(如关键词非空、count 值在允许范围内)。

数据缓存: 对于非实时性要求极高的场景,考虑在应用层对搜索结果进行适当缓存,减少 API 调用次数。

遵循平台规则: 使用 API 获取的数据应严格遵守快手开放平台的使用协议和数据安全规范,不得用于非法用途。

关注文档更新: API 接口和参数可能会更新,务必定期查阅快手开放平台的官方文档。

七、 应用场景

内容聚合与推荐

热点话题追踪与分析

竞品视频监控

用户生成内容(UGC)收集与分析

结合 AI 进行视频内容理解或分类

结语 通过快手开放平台的 /api/rest/open/v1/video/data/search 接口,开发者能够高效地根据关键词获取平台上的视频列表数据,为构建丰富的短视频相关应用提供了强大的支持。开发者在使用时需注意权限申请、频率限制、参数传递和错误处理等关键点,并始终遵守平台的规则和政策。

请注意:

以上代码示例中的 YOUR_ACCESS_TOKEN 需要替换为开发者通过 OAuth2.0 流程获取的真实有效的 Access Token。

接口地址、参数名称、参数选项(如 sort_type 的具体值)、响应字段结构等必须以快手开放平台发布的最新官方文档为准。本文档仅为通用技术思路的示例。

调用 API 前务必在快手开放平台注册开发者账号并创建应用,申请相应的 API 权限。

​审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • API

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分