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 不上传视频
如何使用 php 使用 Youtube Api v3 喜欢 Youtube 视频