try { File photoFile = new File(getFileName()); service = new PicasawebService(applicationName); MediaFileSource photoMedia = new MediaFileSource(photoFile, "image/jpg"); URL albumPostUrl = new URL(String.format("http://picasaweb.google.com/data/feed/api/user/%1$s/albumid/%2$s", getUserName(), getAlbumId())); PhotoEntry returnedPhoto = service.insert(albumPostUrl, PhotoEntry.class, photoMedia); String href = returnedPhoto.getHtmlLink().getHref(); if (returnedPhoto.getMediaContents().size() > 0) { // !!!!!!!!!!!!!!!This is exactly JPEG URL href = returnedPhoto.getMediaContents().get(0).getUrl(); } logger.info(String.format("Image published: <%s>", href)); return href; } catch (AuthenticationException e) { logger.error(e.getMessage(), e); e.printStackTrace(); } catch (MalformedURLException e) { logger.error(e.getMessage(), e); e.printStackTrace(); } catch (IOException e) { logger.error(e.getMessage(), e); e.printStackTrace(); } catch (ServiceException e) { logger.error(e.getMessage(), e); e.printStackTrace(); }
/** * Initialize a resumable media upload request. * * @param request {@link GDataRequest} to initialize. * @param file media file that needs to be upload. * @param title title of uploaded media or {@code null} if no title. */ private void initResumableMediaRequest( GDataRequest request, MediaFileSource file, String title) { initMediaRequest(request, title); request.setHeader( GDataProtocol.Header.X_UPLOAD_CONTENT_TYPE, file.getContentType()); request.setHeader(GDataProtocol.Header.X_UPLOAD_CONTENT_LENGTH, new Long(file.getContentLength()).toString()); }
/** * Constructor to update a media with progress update. Use {@link Builder} * to construct this instance. * * @param uploadUrl resumable media upload url. * @param file media file to upload. * @param service {@link MediaService} for target service. * @param chunkSize max chunk size in bytes to include in each request. * @param executor resource pool to execute upload task. * @param progressListener callback to listen to progress updates. * @param progressIntervalMillis how often to notify about update progress. * @throws IOException any read/write error * @throws ServiceException any service specific error */ private ResumableGDataFileUploader(URL uploadUrl, MediaFileSource file, MediaService service, long chunkSize, ExecutorService executor, ProgressListener progressListener, long progressIntervalMillis) throws IOException, ServiceException { super(uploadUrl, file.getMediaFile(), executor, progressListener, chunkSize, progressIntervalMillis); this.service = service; }
/** * Creates a resumable upload session for a new media. * * @param createMediaUrl resumable put/post url. * @param title media title for new upload or {@code null} for updating * media part of existing media resource. * @param file new media file to upload. * @return resumable upload url to upload the media to. * @throws IOException error communicating with the GData service. * @throws ServiceException insert request failed due to system error. */ URL createResumableUploadSession( URL createMediaUrl, String title, MediaFileSource file) throws IOException, ServiceException { String mimeType = file.getContentType(); GDataRequest request = createRequest(GDataRequest.RequestType.INSERT, createMediaUrl, new ContentType(mimeType)); initResumableMediaRequest(request, file, title); try { startVersionScope(); request.execute(); return new URL(request.getResponseHeader("Location")); } finally { endVersionScope(); request.end(); } }
/** * Creates a resumable upload session for a new media with specified metadata. * * @param createMediaUrl resumable put/post url. * @param entry metadata for new media. * @param file new media file to upload. * @return resumable upload url to upload the media to. * @throws IOException error communicating with the GData service. * @throws ServiceException insert request failed due to system error. */ URL createResumableUploadSession( URL createMediaUrl, IEntry entry, MediaFileSource file) throws IOException, ServiceException { GDataRequest request = createInsertRequest(createMediaUrl); initResumableMediaRequest(request, file, file.getName()); try { startVersionScope(); writeRequestData(request, entry); request.execute(); return new URL(request.getResponseHeader("Location")); } finally { endVersionScope(); request.end(); } }
uploader.addHeader("Content-Type", mediaFile.getContentType()); return uploader;
URL albumPostUrl = new URL("https://picasaweb.google.com/data/feed/api/user/username/albumid/albumid"); PhotoEntry myPhoto = new PhotoEntry(); myPhoto.setTitle(new PlainTextConstruct("Puppies FTW")); myPhoto.setDescription(new PlainTextConstruct("Puppies are the greatest.")); myPhoto.setClient("myClientName"); MediaFileSource myMedia = new MediaFileSource(new File("/home/liz/puppies.jpg"), "image/jpeg"); myPhoto.setMediaSource(myMedia); PhotoEntry returnedPhoto = myService.insert(albumPostUrl, myPhoto);
if (isMediaOnly) { request = createRequest(GDataRequest.RequestType.UPDATE, editMediaUrl, new ContentType(file.getContentType())); } else { request = createUpdateRequest(editMediaUrl);
/** * Associate a File with this entry with the specified mime type */ public void setFile(File file, String mimeType) { MediaFileSource fileSource = new MediaFileSource(file, mimeType); MediaContent content = new MediaContent(); content.setMediaSource(fileSource); content.setMimeType(new ContentType(mimeType)); setContent(content); }
/** * Associate a File with this entry with the specified mime type */ public void setFile(File file, String mimeType) { MediaFileSource fileSource = new MediaFileSource(file, mimeType); MediaContent content = new MediaContent(); content.setMediaSource(fileSource); content.setMimeType(new ContentType(mimeType)); setContent(content); }
/** * Associate a File with this entry with the specified mime type */ public void setFile(File file, String mimeType) { MediaFileSource fileSource = new MediaFileSource(file, mimeType); MediaContent content = new MediaContent(); content.setMediaSource(fileSource); content.setMimeType(new ContentType(mimeType)); setContent(content); }
String src = ((OutOfLineContent) child.getContent()).getUri(); File attachmentFile = new File(directory, src); MediaSource mediaSource = new MediaFileSource(attachmentFile, "application/octet-stream"); child.setContent((Content) null);
VideoEntry newEntry = new VideoEntry(); YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup(); mg.setTitle(new MediaTitle()); mg.getTitle().setPlainTextContent("Title goes here"); mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Autos")); mg.setKeywords(new MediaKeywords()); mg.getKeywords().addKeyword("keyword-here"); mg.setDescription(new MediaDescription()); mg.getDescription().setPlainTextContent("My description"); mg.setPrivate(false); mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag")); mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag")); newEntry.setGeoCoordinates(new GeoRssWhere(37.0,-122.0)); // alternatively, one could specify just a descriptive string // newEntry.setLocation("Mountain View, CA"); MediaFileSource ms = new MediaFileSource(new File("file.mov"), "video/quicktime"); newEntry.setMediaSource(ms); String uploadUrl = "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"; VideoEntry createdEntry = service.insert(new URL(uploadUrl), newEntry);
VideoEntry newEntry = new VideoEntry(); YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup(); mg.setTitle(new MediaTitle()); mg.getTitle().setPlainTextContent("My Test Movie"); mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Autos")); mg.setKeywords(new MediaKeywords()); mg.getKeywords().addKeyword("cars"); mg.getKeywords().addKeyword("funny"); mg.setDescription(new MediaDescription()); mg.getDescription().setPlainTextContent("My description"); mg.setPrivate(false); mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag")); mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag")); newEntry.setGeoCoordinates(new GeoRssWhere(37.0,-122.0)); // alternatively, one could specify just a descriptive string // newEntry.setLocation("Mountain View, CA"); MediaFileSource ms = new MediaFileSource(new File("file.mov"), "video/quicktime"); newEntry.setMediaSource(ms); String uploadUrl = "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"; VideoEntry createdEntry = service.insert(new URL(uploadUrl), newEntry);