Java - YouTube API - 视频上的 setPublishAt 导致 "400 Bad Request - invalidVideoMetadata"

标签 java youtube youtube-api youtube-data-api

我正在尝试通过 YouTube API 保存视频。基本上它已经工作正常,只有一个异常(exception):如果我尝试设置 status.setPublishAt()我明白了

400 Bad Request
{
  "code" : 400,
  "errors" : [ {
  "domain" : "youtube.video",
  "location" : "body",
  "locationType" : "other",
  "message" : "The request metadata is invalid.",
  "reason" : "invalidVideoMetadata"
} ],
"message" : "The request metadata is invalid."
}

代码如下:

YouTube.Videos.List listVideosRequest = M_YOUTUBE.videos().list("snippet,status").setId(_dbVideo.getYoutubeId());

VideoListResponse listResponse = listVideosRequest.execute();

List<Video> videoList = listResponse.getItems();
if (videoList.isEmpty()) {
    return false;
}

Video video = videoList.get(0);
VideoStatus status = video.getStatus();

status.setPrivacyStatus(_dbVideo.getPrivacyStatus()); // "private"

String sPublishedAt = _dbVideo.getPublishedAt();
// sPublishAt is in ISO 8106: "2016-10-28T10:01:00.000+02:00"
if (sPublishedAt != null && sPublishedAt != "") {
    // this line leads to the bad request.
    status.setPublishAt(new DateTime(sPublishedAt));
} else {
    status.setPublishAt(null);
}

VideoSnippet snippet = video.getSnippet();

String sTitle = _dbVideo.getTitle();
String sDescription = _dbVideo.getDescription();
String sTags = _dbVideo.getTags();

...

snippet.setTitle(sTitle);
snippet.setDescription(sDescription);
snippet.setTags(tagList);
snippet.setCategoryId(_dbVideo.getCategoryId());

YouTube.Videos.Update updateVideosRequest = M_YOUTUBE.videos().update("snippet,status", video);         
updateVideosRequest.execute();

对于上传过程,我使用的代码基本相同,并且它在那里工作。如果我决定不设置publishAt带有日期的属性并将其设置为 null 它也工作正常。我错过了什么吗?

更新: 仅当视频设置为 public 时才会发生此行为一次。如果我决定将其设置回 private并设置一个新的 publishAt我得到BadRequest .

最佳答案

您必须发送所有状态值,否则更新方法会认为您正在尝试清空它们。您已发送 setPrivacyStatus 和publishat。但您应该将所有其他参数发送到您的请求。另外,如果您发送的发布时间太接近当前时间,则会显示 badRequest (400) invalidPublishAt。尝试投入 60 分钟。它对我有用。

关于Java - YouTube API - 视频上的 setPublishAt 导致 "400 Bad Request - invalidVideoMetadata",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256970/

相关文章:

java - 当互联网连接丢失时 MySQL 连接会发生什么?

java - 使用 Apache POI 在 Java 中将 .doc 转换为 .html

Javamail 535 5.7.8 身份验证失败

javascript - 使用YouTube API和IE8进行“视频未定义”

oauth - 如何使用访问 token 上传到 YouTube v3?

javascript - 有没有办法将 YouTube API 播放器添加到传单控制窗口?

javascript - YouTube iframe 播放器 API : control MULTIPLE iframe players that are already in the HTML

java - 不知道如何处理这个带有分数的简单递归

youtube - 为什么我的YouTube订阅按钮变暗且无法点击?

javascript - 滚动到时自动播放youtube视频(使用youtube api)