更新youtube直播隐私状态

时间:2016-09-17 12:41:11

标签: scala youtube youtube-api youtube-data-api youtube-livestreaming-api

我正在尝试更新scala中LiveBroadcast的隐私状态(使用java jdk)。这是我的工作流程:

创建一个private隐私状态

的LiveBroadcast
val snippet = new LiveBroadcastSnippet()
    .setTitle(title)
    .setScheduledStartTime(YouTubeDateTime.now())
    .setChannelId(channel.getId)

val status = new LiveBroadcastStatus()
  .setPrivacyStatus("private")

val broadcast = new LiveBroadcast()
  .setKind("youtube#liveBroadcast")
  .setSnippet(snippet)
  .setStatus(status)

val request = youtube.liveBroadcasts()
  .insert("snippet,status,contentDetails", broadcast)

request.execute

将LiveBroadcast转换为testing(如果绑定的LiveStream处于活动状态)

val request = youtube.liveBroadcasts
    .transition(lifeCycleStatus.toString, broadcast.getId, "status")

request.execute

对流感到满意后,将LiveBroadcast隐私设置为public

val status = new LiveBroadcastStatus().setPrivacyStatus("public")

broadcast.setStatus(status)

val request = youtube.liveBroadcasts.update("status", broadcast)

request.execute()

最后一部分不起作用,而是返回400响应:

400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "youtube.part",
    "location" : "part",
    "locationType" : "parameter",
    "message" : "{0}",
    "reason" : "unexpectedPart"
  } ],
  "message" : "{0}"
}

执行相同的请求here有效,所以我不确定我做错了什么。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我可能错了,但我认为您还应该在LiveBroadcast请求中添加id参数。这是YouTube为唯一标识广播而分配的ID

您可能需要遵循Life of a Broadcast中讨论的有关如何创建和管理直播的指导原则,其中还提到了在设置广播时处理API响应:

  

您的代码应该从该资源中提取并存储id,因为您需要该值来识别未来API请求中的广播。 (您还可以使用相同的ID标识与liveBroadcast资源对应的视频资源。)

除此之外,遇到指定详细信息400 Bad Request的错误unexpectedPart,如YouTube Data API - Errors中的常见请求错误所述,意味着:

  

请求的part参数指定了一个意外的值。