YouTube API経由で動画を保存しようとしています。基本的にはすでにただ一つの例外のため、正常に動作している:Java - YouTube API - 動画のsetPublishAtが "400 Bad Request - invalidVideoMetadata"につながる
アップロードプロセスについては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();
私はほとんど使用しています:私は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."
}
コードがあり得ます同じコードとそれはそこで働いています。私がpublishAt
の日付を持つプロパティを設定しないで、代わりにnullに設定した場合、正常に動作しています。何か不足していますか?
更新: ビデオはpublic
に一度設定されている場合にのみ発生します。私がprivate
に戻って設定し、新しいpublishAt
を設定する場合は、私はBadRequest
を取得します。
ご返信ありがとうございます。試してみましたが、成功しませんでした。とにかく、これは実際にprivacystatusとpublishedAtをnullに設定するだけで実際に動作している理由を説明しません。 – PAWL
@PAWL apiがprivacystatusとpublishedAtを表示しない場合、それはnullであることを意味します。あなたがあなたの要求を変更せずにサーバーに送信したとき。それは正しく動作します。 – Kumar
@PAWLはもう一度400 badRequest – Kumar