如何通过YouTube Data API修改视频的snippet.defaultLanguage
关于YouTube Data API设置Video.snippet.defaultLanguage的问题
核心结论
*snippet.defaultLanguage是可以设置的,调用Videos.update接口时存在几个容易忽略的约束和坑,导致你测试时出现问题。
关键注意事项
- 必填字段约束:YouTube Data API的
Videos.update接口虽然是补丁更新逻辑,但snippet下的title、categoryId属于必填字段——哪怕你不需要修改它们,也必须传入视频当前的原值,否则接口会直接返回错误,这就是你必须包含这些"无关"字段的原因。 - 语言代码规范:
defaultLanguage的值必须是符合ISO 639-1标准的双字母语言代码(比如en、zh),不能使用语言全称或非标准代码,否则接口会识别失败。 - 请求字段范围优化:调用
Videos.update的第二个参数(返回字段范围)不需要写全snippet, localizations,如果只修改defaultLanguage,可以简化为'id,snippet',避免不必要的字段传递。 - localizations处理:如果你不需要修改视频的本地化内容,要么传入视频当前的原有本地化数据,要么直接从resource对象中移除
localizations字段——空对象或格式错误的本地化数据会导致接口调用失败。
修正后的示例代码
// 先获取视频当前的snippet基础数据 const video = YouTube.Videos.list('snippet', {id: '你的视频ID'}).items[0]; const resource = { id: video.id, snippet: { // 必须传入的必填字段原值 title: video.snippet.title, categoryId: video.snippet.categoryId, // 要设置的目标语言代码 defaultLanguage: 'zh' } }; // 仅请求必要的字段范围 YouTube.Videos.update(resource, 'id,snippet');
常见失败排查点
- 确认你的授权令牌拥有
https://www.googleapis.com/auth/youtube.force-ssl权限,修改视频信息必须使用这个权限范围。 - 检查目标视频是否属于当前授权账号,第三方账号无法修改非自有视频的信息。
- 如果之前配置过视频本地化内容,修改
defaultLanguage后要确保本地化内容的语言映射逻辑没有冲突。
内容的提问来源于stack exchange,提问作者amit jha
相关产品推荐
相关产品推荐

