我注意到当我试图通过上传视频时,我得到了相当多的HTTP 400
失败:https://developers.google.com/youtube/v3/docs/videos/insert
我正在使用Go SDK从谷歌:code.google.com/p/google-api-go-client
上传失败的共同点是在视频片段数据(标题/描述)的某个地方有像<, >
这样的字符。如果我删除冲突字符,视频上传会很好。
我似乎在文档中找不到,但是我是否需要做一些消毒?HTML转义吗?移除所有^A-Za-z0-9
的东西?<
(如<3
)的非html用法如何?那么unicode字符呢?我困惑。
编辑:为了回答我的问题,这里是我写的一个小技巧,以对抗谷歌讨厌>
, <
字符的问题。我只是用看起来相似的不同UNICODE字符替换它们。
// < and > need to be stripped out, or the upload will throw 400 error
// https://developers.google.com/youtube/2.0/reference#youtube_data_api_tag_media:description
sanitize := func(val string) string {
replacements := map[string]string{
"<": "≺",
">": "≻",
}
for k, v := range replacements {
val = strings.Replace(val, k, v, -1)
}
return val
}
一个问题是:
这些是从Google Discovery自动生成的Go库可用的"新风格"Google服务的JSON描述文件api。
通知电子邮件:http://groups.google.com/group/golang-nuts/browse_thread/thread/6c7281450be9a21e
状态:相对于其他Google API客户端,这个库是标记为α。一些高级功能可能无法工作。请归档bug如果发现任何问题。
由于它们是从JSON服务定义自动生成的,因此它们可能错过了适当的翻译。根据API文档,假设您正在使用http协议,视频信息将作为JSON blob发送。
Go将为您转换特殊字符。因此<>,等成为JSON有效的unicode转义序列。Google可能不喜欢转义序列,所以您可能想尝试发送文字字符。但我真的怀疑这是问题所在。
也,因为你提到<> youtube不会让你把HTML,所以如果这是你正在做的,或者看起来像HTML的东西,这可能是你无效字符错误的原因。你需要清除任何看起来像html.
的内容。看这篇文章:
https://groups.google.com/forum/!主题/youtube-api-gdata EcYPPlHjllY
显示golang生成unicode转义序列:
http://play.golang.org/p/hv2h7PA0tr