YouTube上传v3 - 400错误请求

时间:2014-06-06 06:03:57

标签: youtube go youtube-api

我注意到在尝试通过以下方式上传视频时,我得到了很多HTTP 400个傻瓜: https://developers.google.com/youtube/v3/docs/videos/insert

我正在使用Google的Go SDK: code.google.com/p/google-api-go-client

失败上传的共同点是视频片段数据(标题/说明)中的某个地方有<, >等字符。如果我删除了有冲突的字符,视频上传就可以了。

我似乎无法在文档中找到它,但我是否需要进行某种消毒? HTML转义?删除^A-Za-z0-9的所有内容?那么<的非html使用情况如<3?那个unicode字符怎么样?我很困惑。

编辑: 要回答我的问题,我写这篇文章是为了解决Google仇恨><字符的问题。我只需用看起来相似的不同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
}

1 个答案:

答案 0 :(得分:1)

一个问题是:

  

这些是Google Discovery自动生成的Go库   服务的可用“新风格”Google的JSON描述文件   的API。

     

公告电邮:   http://groups.google.com/group/golang-nuts/browse_thread/thread/6c7281450be9a21e

     

状态:相对于其他Google API客户端,此库是   标记为alpha。某些高级功能可能无效。请提交错误   如果发现任何问题。

由于它们是从JSON服务定义自动生成的,因此可能错过了相应的转换。从API文档中,假设您使用的是http协议,视频信息将作为JSON blob发送。

Go将为您转换特殊字符。因此&lt;&gt;等会成为JSON有效的unicode转义序列。 Google可能不喜欢转义序列,因此您可能想尝试发送文字字符。但我真的怀疑这是问题。

此外,因为你提到&lt;&gt; youtube不会让你输入HTML,所以如果你正在做的事情,或看起来像html的东西,这可能是你的无效字符错误的原因。您将需要清理任何看起来像HTML的内容。

见这篇文章:

https://groups.google.com/forum/#!topic/youtube-api-gdata/EcYPPlHjllY

这表明golang生成unicode转义序列:

http://play.golang.org/p/hv2h7PA0tr