YouTube 数据 API v3 不支持 Video.snippet 资源的“标签”属性的 500 个字符

Posted

技术标签:

【中文标题】YouTube 数据 API v3 不支持 Video.snippet 资源的“标签”属性的 500 个字符【英文标题】:YouTube Data API v3 does not support 500 characters for ‘tags’ property of Video.snippet resource 【发布时间】:2014-08-01 11:32:45 【问题描述】:

在以交互方式将标签直接输入 YouTube 用户界面或使用 Data API v3 视频资源 sn-p 对象时,我们遇到了视频“标签”属性少于记录的最大 500 个字符的意外限制。

我们正在使用 YouTube 数据 API v3 从 ASP.Net C# Web 应用程序与 YouTube 交互,该应用程序使用适用于 .NET 的 Google API 客户端库。

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

YouTube 文档指出标签的最大长度应为 500 个字符,并且标签字段包含一个逗号分隔的列表,列表中的项目之间的逗号以及标签内逗号之间的空格计入限制。

虽然没有提及确切如何处理空格,但单个空格字符似乎比单个非空格字符计入整个字段大小,有效地减少了可以意外支持的标签的长度涉及空格。

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

【问题讨论】:

【参考方案1】:

这对我来说似乎很有效

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
  

【讨论】:

【参考方案2】:

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;

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于YouTube 数据 API v3 不支持 Video.snippet 资源的“标签”属性的 500 个字符的主要内容,如果未能解决你的问题,请参考以下文章

创建发布 apk 时 Youtube 数据 API v3 不上传视频

解析 youtube 数据 v3 api

如何使用 php 使用 Youtube Api v3 喜欢 Youtube 视频

Youtube 数据 API V3 - 无视频网址

YouTube 数据 API V3 是不是适用于 YouTube 音乐?

YouTube Data API V3:获取多个 videoCategoryId 视频