【发布时间】:2022-07-30 00:12:42
【问题描述】:
我正在尝试使用 Ruby SDK 自动将视频上传到 YouTube。插入视频、删除视频和设置视频缩略图都可以正常工作,但由于某种原因,无论我使用什么参数,尝试添加字幕都会导致元数据客户端错误无效。
我编写了基于the documentation 的代码和其他语言的代码示例(我在当前的 gem 中找不到任何在 Ruby 中执行此操作的示例)。我正在使用google-apis-youtube_v3 gem,版本 0.22.0。
这是我的代码的相关部分(假设我上传了一个 ID 为 \'XYZ123\' 的视频):
require \'googleauth\'
require \'googleauth/stores/file_token_store\'
require \'google-apis-youtube_v3\'
def authorize [... auth code omitted ...] end
def get_service
service = Google::Apis::YoutubeV3::YouTubeService.new
service.key = API_KEY
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize
service
end
body = {
\"snippet\": {
\"videoId\": \'XYZ123\',
\"language\": \'en\',
\"name\": \'English\'
}
}
s = get_service
s.insert_caption(\'snippet\', body, upload_source: \'/path/to/my-captions.vtt\')
我尝试了许多不同的组合,但结果总是一样的:
Google::Apis::ClientError: invalidMetadata:请求包含无效的元数据值,这会阻止创建轨道。确认请求为
snippet.language、snippet.name和snippet.videoId属性指定了有效值。snippet.isDraft属性也可以包括在内,但这不是必需的。状态码:400看来语言和视频ID值真的没有太多选择,将字幕命名为“英文”也没什么了不起的。对于我传入的值可能有什么问题,我真的很茫然。
顺便说一句,即使我只是将 nil 作为 body 传递,我也会得到完全相同的响应。
标签: ruby youtube-data-api google-api-ruby-client closed-captions