Java 如何使用YouTube API V2从可恢复上传中获得响应?
我正在使用他们的API(V2)实现一项将视频上传到YouTube的服务,但一旦上传视频,我需要找到响应,以便获得目标URL。有人知道如何做到这一点吗 下面是调用上载函数的调用:Java 如何使用YouTube API V2从可恢复上传中获得响应?,java,youtube-api,youtube-data-api,Java,Youtube Api,Youtube Data Api,我正在使用他们的API(V2)实现一项将视频上传到YouTube的服务,但一旦上传视频,我需要找到响应,以便获得目标URL。有人知道如何做到这一点吗 下面是调用上载函数的调用: YouTubeService service = new YouTubeService("My_Service", developerKey); try { service.setUserCredentials(user, password); } catch (AuthenticationExcept
YouTubeService service = new YouTubeService("My_Service", developerKey);
try {
service.setUserCredentials(user, password);
} catch (AuthenticationException e) {
System.out.println("Invalid login credentials.");
return;
}
youtubeURL = YouTubeUploadClient.uploadVideo(service);
下面是上传功能代码,正如我所说的:
public static String uploadVideo(YouTubeService service)
throws IOException, ServiceException, InterruptedException, JSONException {
String youtubeURL = null;
File videoFile = new File("c://video.mp4");
if (!videoFile.exists()) {
System.out.println("Sorry, that video doesn't exist.");
return null;
}
MediaFileSource ms = new MediaFileSource(videoFile, "video/mp4");
String videoTitle = "Title";
VideoEntry newEntry = new VideoEntry();
YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();
mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Games"));
mg.setTitle(new MediaTitle());
mg.getTitle().setPlainTextContent("Title");
mg.setKeywords(new MediaKeywords());
mg.getKeywords().addKeyword("Test");
mg.setDescription(new MediaDescription());
mg.getDescription().setPlainTextContent("Description");
FileUploadProgressListener listener = new FileUploadProgressListener();
ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(
service, new URL("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads"), ms, newEntry)
.title(videoTitle)
.trackProgress(listener, 1000)
.chunkSize(10000000)
.build();
uploader.start();
while (!uploader.isDone()) { Thread.sleep(25); }
switch(uploader.getUploadState()) {
case COMPLETE: System.out.println("Uploaded successfully"); return null;
case CLIENT_ERROR: System.out.println("Upload Failed"); return null;
default: System.out.println("Unexpected upload status"); return null;
}
}
private static class FileUploadProgressListener implements ProgressListener {
public synchronized void progressChanged(ResumableHttpFileUploader uploader)
{
switch(uploader.getUploadState()) {
case COMPLETE: System.out.println("Upload Completed"); break;
case CLIENT_ERROR: System.out.println("Upload Failed"); break;
case IN_PROGRESS: System.out.println(String.format("Upload in progress: %3.0f", uploader.getProgress() * 100) + "%"); break;
case NOT_STARTED: System.out.println("Upload Not Started"); break;
}
}
}
在YouTube API论坛()中找到此响应:
ResumableDataFileUploader uploader=新建ResumableDataFileUploader.Builder(
服务,新URL(“http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads)女士,新条目)
.标题(视频标题)
.trackProgress(监听器,1000)
.chunkSize(10000000)
.build();
Future futureResponse=uploader.start();
而(!uploader.isDone()){Thread.sleep(1000);}
开关(uploader.getUploadState()){
案例完成:
ResumableHttpFileUploader.ResponseMessageResponseMessage=FutureSponse.get();
VideoEntry VideoEntry=新的VideoEntry();
parseAtom(新的ExtensionProfile(),responseMessage.getInputStream());
youtubeURL=videoEntry.gethtmlink().getHref();
logger.info(“上传成功”);
返回youtubeURL;
案例客户端_错误:logger.ERROR(“上载失败”);返回null;
默认值:logger.warn(“意外上载状态”);返回null;
}
ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(
service, new URL("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads"), ms, newEntry)
.title(videoTitle)
.trackProgress(listener, 1000)
.chunkSize(10000000)
.build();
Future<ResumableHttpFileUploader.ResponseMessage> futureResponse = uploader.start();
while (!uploader.isDone()) { Thread.sleep(1000); }
switch(uploader.getUploadState()) {
case COMPLETE:
ResumableHttpFileUploader.ResponseMessage responseMessage = futureResponse.get();
VideoEntry videoEntry = new VideoEntry();
videoEntry.parseAtom(new ExtensionProfile(), responseMessage.getInputStream());
youtubeURL = videoEntry.getHtmlLink().getHref();
logger.info("Uploaded successfully");
return youtubeURL;
case CLIENT_ERROR: logger.error("Upload Failed"); return null;
default: logger.warn("Unexpected upload status"); return null;
}