YouTube Data API v3不支持Video.snippet资源的“tags”属性的500个字符

时间:2014-06-11 12:00:26

标签: api youtube tags youtube-api

我们遇到了一个意外的限制,即视频'标签'属性中记录的最多500个字符,无论是在交互式地直接输入标签到YouTube UI还是使用Data API v3视频资源片段对象时。

我们正在使用YouTube Data API v3与来自ASP.Net C#网络应用程序的YouTube进行交互,该应用程序使用适用于.NET的Google API客户端库。

在测试过程中,我们注意到只有单个关键字标签支持500个字符,但是当关键字中遇到任何空格时,例如人们的名称,每个空格似乎都有开销和结果意外地超过了500个字符的限制。

YouTube文档指出,标签最多可以包含500个字符,并且标签字段包含以逗号分隔的列表,列表中的项目之间的逗号和标记之间的空格中的逗号计入限制。< / p>

虽然没有提到空格的确切处理方式,但是单个空格字符似乎将整个字段大小计算为多个非空白字符,从而有效地减少了可以支持的标记长度。涉及空间。

有人可以就上述问题提出建议吗?

3 个答案:

答案 0 :(得分:1)

如果标记包含空格,则API服务器会处理标记值,就好像它用引号括起来一样,并且引号计入字符限制。因此,出于字符限制的目的,标签Foo-Baz包含七个字符,但标签Foo Baz包含九个字符。

答案 1 :(得分:1)

Youtube为每个带空格的单词添加两个引号

 example:  hello world   // 10 letters + 1 space + 2 quotation marks = 13chars.
           hello,world   // 10 letters + 1 comma = 11chars.

在javascript中我会进行下一次验证来控制:

 function tagsValidator (values) {
  //calculate num spaces (youtube add 2 quotes mark by space)
  var numSpaces = values.replace(/[^\s]/g,'').length,
      numTags = values.split(",").length,
      numChars = (numTags+(numSpaces*2));
  if(numChars>500) return false;
  return true;
}

答案 2 :(得分:0)

这对我来说似乎很好

const tagsOverMaxLength = (tags) => {
  let length = 0
  for (const tag of tags) {
    length += tag.length
    // each tag adds 1 char for the seperator
    length += 1
    // if the tag contains spaces it adds 2 chars
    // because it gets wrapped in quotes
    if (tag.match(' ')) {
      length += 2
    }
  }
  if (length > 500) {
    return true
  }
}