2016-10-26 9 views
0

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を取得します。

答えて

1

すべてのステータス値を送信する必要があります。そうしないと、更新メソッドは空の状態を考えています。あなたはsetPrivacyStatusとpublishatを送信しました。しかし、あなたは他のすべてのパラメータをあなたの要求に送るべきです。また、現在の時刻に近すぎるpublishat時刻を送信すると、badRequest(400)invalidPublishAtが表示されます。 60分を入れてみてください。わたしにはできる。

+0

ご返信ありがとうございます。試してみましたが、成功しませんでした。とにかく、これは実際にprivacystatusとpublishedAtをnullに設定するだけで実際に動作している理由を説明しません。 – PAWL

+0

@PAWL apiがprivacystatusとpublishedAtを表示しない場合、それはnullであることを意味します。あなたがあなたの要求を変更せずにサーバーに送信したとき。それは正しく動作します。 – Kumar

+0

@PAWLはもう一度400 badRequest – Kumar

関連する問題