如何在YouTube API中设置「为儿童制作」标识?
解决Java YouTube API设置COPPA儿童标识的问题
别担心,你找错地方啦——COPPA要求的「是否为儿童制作」标识不是snippet对象的属性,而是在单独的status对象里,不管是上传普通视频还是创建直播,都需要通过这个对象来配置。我给你详细说下具体操作:
1. 核心属性说明
这个标识对应的属性是madeForKids,是一个布尔值:
- 设置为
true:表示内容专为儿童制作 - 设置为
false:表示内容不针对儿童(或仅部分面向)
需要注意的是,调用API时必须确保请求的part参数包含status,否则这个属性的设置会被直接忽略。
2. 上传视频时的配置示例
用Java API上传视频时,除了常规的snippet设置,还要单独构建VideoStatus对象并赋值:
// 初始化YouTube服务实例(这里假设你已经完成了授权等前置操作) YouTube youtube = new YouTube.Builder(new NetHttpTransport(), new JacksonFactory(), credential) .setApplicationName("你的应用名称") .build(); // 创建视频对象 Video video = new Video(); // 设置视频的基础信息(snippet部分) VideoSnippet snippet = new VideoSnippet(); snippet.setTitle("儿童科普小课堂"); snippet.setDescription("专为6-12岁儿童打造的科学启蒙内容"); video.setSnippet(snippet); // 设置COPPA相关的status属性 VideoStatus status = new VideoStatus(); status.setMadeForKids(true); // 根据你的内容实际情况设置true/false video.setStatus(status); // 发起上传请求,务必确保part参数包含"snippet,status" Videos.Insert insertRequest = youtube.videos().insert("snippet,status", video); // 这里添加媒体文件上传逻辑(比如setMediaContent等) Video uploadedVideo = insertRequest.execute();
3. 创建直播时的配置示例
如果是直播内容,逻辑类似,只是对象换成LiveBroadcast和LiveBroadcastStatus:
// 初始化YouTube服务实例(同上) YouTube youtube = new YouTube.Builder(new NetHttpTransport(), new JacksonFactory(), credential) .setApplicationName("你的应用名称") .build(); // 创建直播对象 LiveBroadcast broadcast = new LiveBroadcast(); // 设置直播的基础信息(snippet部分) LiveBroadcastSnippet broadcastSnippet = new LiveBroadcastSnippet(); broadcastSnippet.setTitle("儿童手工直播课"); broadcastSnippet.setScheduledStartTime(new DateTime("2024-06-01T10:00:00.000Z")); broadcast.setSnippet(broadcastSnippet); // 设置直播的COPPA标识 LiveBroadcastStatus broadcastStatus = new LiveBroadcastStatus(); broadcastStatus.setMadeForKids(true); broadcast.setStatus(broadcastStatus); // 发起直播创建请求,part参数同样要包含"snippet,status" LiveBroadcasts.Insert insertBroadcast = youtube.liveBroadcasts().insert("snippet,status", broadcast); LiveBroadcast createdBroadcast = insertBroadcast.execute();
4. 更新已有内容的标识
如果需要修改已上传视频或已创建直播的COPPA标识,可以用update方法:
// 以更新视频为例 Video updateVideo = new Video(); updateVideo.setId("你的视频ID"); VideoStatus updateStatus = new VideoStatus(); updateStatus.setMadeForKids(false); updateVideo.setStatus(updateStatus); Videos.Update updateRequest = youtube.videos().update("status", updateVideo); Video updatedVideo = updateRequest.execute();
总结一下:这个属性完全不是隐藏的,只是位置不在snippet里,只要确保part参数包含status,并正确设置madeForKids布尔值就可以了。
内容的提问来源于stack exchange,提问作者hooperdev
相关产品推荐
相关产品推荐

