use of org.dataportabilityproject.dataModels.photos.PhotoAlbum in project data-transfer-project by google.
the class GooglePhotosService method importItem.
@Override
public void importItem(PhotosModelWrapper wrapper) throws IOException {
for (PhotoAlbum album : wrapper.getAlbums()) {
if (true) {
// Google doesn't support creating albums anymore
continue;
}
AlbumEntry myAlbum = new AlbumEntry();
myAlbum.setTitle(new PlainTextConstruct("copy of " + album.getName()));
myAlbum.setDescription(new PlainTextConstruct(album.getDescription()));
URL albumUrl = new URL("https://picasaweb.google.com/data/feed/api/user/default");
AlbumEntry insertedEntry;
try {
// https://developers.google.com/picasa-web/docs/2.0/developers_guide_java#AddAlbums
insertedEntry = service.insert(albumUrl, myAlbum);
jobDataCache.store(album.getId(), insertedEntry.getGphotoId());
} catch (ServiceException e) {
throw new IOException("Problem copying" + album.getName() + " request to: " + albumUrl, e);
}
}
for (PhotoModel photo : wrapper.getPhotos()) {
// String newAlbumId = jobDataCache.getData(photo.getAlbumId(), String.class);
String newAlbumId = "default";
URL photoPostUrl = new URL("https://picasaweb.google.com/data/feed/api/user/default/albumid/" + newAlbumId);
PhotoEntry myPhoto = new PhotoEntry();
myPhoto.setTitle(new PlainTextConstruct("copy of " + photo.getTitle()));
myPhoto.setDescription(new PlainTextConstruct(photo.getDescription()));
myPhoto.setClient(CLIENT_NAME);
String mediaType = photo.getMediaType();
if (mediaType == null) {
mediaType = "image/jpeg";
}
MediaStreamSource streamSource = new MediaStreamSource(getImageAsStream(photo.getFetchableUrl()), mediaType);
myPhoto.setMediaSource(streamSource);
try {
service.insert(photoPostUrl, myPhoto);
} catch (ServiceException e) {
throw new IOException("Problem adding " + photo.getTitle() + " to " + newAlbumId, e);
}
}
}
use of org.dataportabilityproject.dataModels.photos.PhotoAlbum in project data-transfer-project by google.
the class SmugMugPhotoService method getAlbums.
private PhotosModelWrapper getAlbums(Optional<PaginationInformation> paginationInformation) throws IOException {
String albumUri;
if (paginationInformation.isPresent()) {
albumUri = ((StringPaginationToken) paginationInformation.get()).getId();
} else {
SmugMugResponse<SmugMugUserResponse> userResponse = makeUserRequest(USER_URL);
albumUri = userResponse.getResponse().getUser().getUris().get("UserAlbums").getUri();
}
List<PhotoAlbum> albums = new ArrayList<>();
List<Resource> resources = new ArrayList<>();
SmugMugResponse<SmugmugAlbumsResponse> albumResponse = makeAlbumRequest(albumUri);
for (SmugMugAlbum album : albumResponse.getResponse().getAlbums()) {
albums.add(new PhotoAlbum(album.getAlbumKey(), album.getTitle(), album.getDescription()));
resources.add(new IdOnlyResource(album.getAlbumKey()));
}
StringPaginationToken pageToken = null;
if (albumResponse.getResponse().getPageInfo() != null && albumResponse.getResponse().getPageInfo().getNextPage() != null) {
pageToken = new StringPaginationToken(albumResponse.getResponse().getPageInfo().getNextPage());
}
return new PhotosModelWrapper(albums, null, new ContinuationInformation(resources, pageToken));
}
use of org.dataportabilityproject.dataModels.photos.PhotoAlbum in project data-transfer-project by google.
the class SmugMugPhotoService method importItem.
@Override
public void importItem(PhotosModelWrapper wrapper) throws IOException {
String folder = null;
if (!wrapper.getAlbums().isEmpty()) {
SmugMugResponse<SmugMugUserResponse> userResponse = makeUserRequest(USER_URL);
folder = userResponse.getResponse().getUser().getUris().get("Folder").getUri();
}
for (PhotoAlbum album : wrapper.getAlbums()) {
createAlbum(folder, album);
}
for (PhotoModel photo : wrapper.getPhotos()) {
uploadPhoto(photo);
}
}
use of org.dataportabilityproject.dataModels.photos.PhotoAlbum in project data-transfer-project by google.
the class GooglePhotosService method exportAlbums.
private PhotosModelWrapper exportAlbums(Optional<PaginationInformation> pageInfo) throws IOException {
URL albumUrl = new URL("https://picasaweb.google.com/data/feed/api/user/default?kind=album");
UserFeed albumFeed;
try {
albumFeed = service.getFeed(albumUrl, UserFeed.class);
} catch (ServiceException e) {
throw new IOException("Problem making request to: " + albumUrl, e);
}
List<PhotoAlbum> albums = new ArrayList<>(albumFeed.getEntries().size());
List<Resource> resources = new ArrayList<>(albumFeed.getEntries().size());
for (GphotoEntry myAlbum : albumFeed.getEntries()) {
// Adding sub-resources tells the framework to re-call
// export to get all the photos.
resources.add(new IdOnlyResource(myAlbum.getGphotoId()));
// Saving data to the album allows the target service
// to recreate the album structure.
albums.add(new PhotoAlbum(myAlbum.getGphotoId(), myAlbum.getTitle().getPlainText(), myAlbum.getDescription().getPlainText()));
}
return new PhotosModelWrapper(albums, null, new ContinuationInformation(resources, null));
}
use of org.dataportabilityproject.dataModels.photos.PhotoAlbum in project data-transfer-project by google.
the class InstagramPhotoService method export.
@Override
public PhotosModelWrapper export(ExportInformation exportInformation) throws IOException {
MediaResponse response = makeRequest("https://api.instagram.com/v1/users/self/media/recent", MediaResponse.class);
List<PhotoModel> photos = new ArrayList<>();
// TODO: check out paging.
for (MediaFeedData photo : response.getData()) {
// TODO json mapping is broken.
String photoId = photo.getId();
String url = photo.getImages().getStandardResolution().getUrl();
String text = (photo.getCaption() != null) ? photo.getCaption().getText() : null;
photos.add(new PhotoModel("Instagram photo: " + photoId, url, text, null, FAKE_ALBUM_ID));
}
List<PhotoAlbum> albums = new ArrayList<>();
if (!photos.isEmpty() && !exportInformation.getPaginationInformation().isPresent()) {
albums.add(new PhotoAlbum(FAKE_ALBUM_ID, "Imported Instagram Photos", "Photos imported from instagram"));
}
return new PhotosModelWrapper(albums, photos, null);
}
Aggregations