如何通过Box.com API获取视频文件时长?(Python开发场景)
获取Box.com视频文件时长(无需完整下载)
Box.com会对上传的视频文件进行转码生成预览,此时视频的时长信息会被存入文件的media_info元数据中,无需下载完整文件即可获取。以下是Python实现方案:
实现步骤
安装Box Python SDK
执行命令安装官方SDK:pip install boxsdk初始化客户端认证
推荐使用服务账号认证(适合批量处理大量文件),替换成你在Box开发者控制台获取的认证信息。编写获取时长的函数
通过指定fields=media_info参数请求文件元数据,从中提取时长信息:
from boxsdk import Client, OAuth2 # 替换为你的Box应用认证信息 auth = OAuth2( client_id='你的客户端ID', client_secret='你的客户端密钥', access_token='你的访问令牌', ) client = Client(auth) def get_video_duration(file_id): try: # 请求包含media_info的文件信息 file = client.file(file_id).get(fields='media_info') if hasattr(file, 'media_info') and 'duration' in file.media_info: # 时长单位为毫秒,转换为HH:MM:SS格式 duration_ms = file.media_info['duration'] duration_sec = duration_ms / 1000 hours = int(duration_sec // 3600) minutes = int((duration_sec % 3600) // 60) seconds = int(duration_sec % 60) return f"{hours:02d}:{minutes:02d}:{seconds:02d}" return "视频未完成转码,暂无法获取时长" except Exception as e: return f"获取失败: {str(e)}" # 批量处理示例 target_file_ids = ['文件ID1', '文件ID2', '文件ID3'] for fid in target_file_ids: print(f"文件{fid}时长: {get_video_duration(fid)}")
注意事项
- 视频上传后需等待Box完成转码,否则
media_info字段不会存在,可添加重试逻辑 - 确保你的Box应用已配置读取文件元数据的权限(在开发者控制台的应用权限中开启)
- 若使用用户OAuth授权,需确保用户已授予应用访问目标文件的权限
内容的提问来源于stack exchange,提问作者Daman
相关产品推荐
相关产品推荐

