Search in sources :

Example 1 with PhotoModel

use of org.dataportabilityproject.dataModels.photos.PhotoModel 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);
        }
    }
}
Also used : AlbumEntry(com.google.gdata.data.photos.AlbumEntry) ServiceException(com.google.gdata.util.ServiceException) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum) IOException(java.io.IOException) MediaStreamSource(com.google.gdata.data.media.MediaStreamSource) PlainTextConstruct(com.google.gdata.data.PlainTextConstruct) URL(java.net.URL) PhotoEntry(com.google.gdata.data.photos.PhotoEntry)

Example 2 with PhotoModel

use of org.dataportabilityproject.dataModels.photos.PhotoModel in project data-transfer-project by google.

the class GooglePhotosService method exportPhotos.

private PhotosModelWrapper exportPhotos(String albumId, Optional<PaginationInformation> pageInfo) throws IOException {
    // imgmax=d gets the original immage as per:
    // https://developers.google.com/picasa-web/docs/2.0/reference
    URL photosUrl = new URL("https://picasaweb.google.com/data/feed/api/user/default/albumid/" + albumId + "?imgmax=d");
    AlbumFeed photoFeed;
    try {
        photoFeed = service.getFeed(photosUrl, AlbumFeed.class);
    } catch (ServiceException e) {
        throw new IOException("Problem making request to: " + photosUrl, e);
    }
    List<PhotoModel> photos = new ArrayList<>(photoFeed.getEntries().size());
    for (GphotoEntry photo : photoFeed.getEntries()) {
        MediaContent mediaContent = (MediaContent) photo.getContent();
        photos.add(new PhotoModel(photo.getTitle().getPlainText(), mediaContent.getUri(), photo.getDescription().getPlainText(), mediaContent.getMimeType().getMediaType(), albumId));
    }
    return new PhotosModelWrapper(null, photos, new ContinuationInformation(null, null));
}
Also used : ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) ServiceException(com.google.gdata.util.ServiceException) AlbumFeed(com.google.gdata.data.photos.AlbumFeed) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) ArrayList(java.util.ArrayList) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) MediaContent(com.google.gdata.data.MediaContent) IOException(java.io.IOException) GphotoEntry(com.google.gdata.data.photos.GphotoEntry) URL(java.net.URL)

Example 3 with PhotoModel

use of org.dataportabilityproject.dataModels.photos.PhotoModel in project data-transfer-project by google.

the class FlickrPhotoServiceTest method toCommonPhoto.

@Test
public void toCommonPhoto() {
    Photo photo = initializePhoto(PHOTO_TITLE, FETCHABLE_URL, PHOTO_DESCRIPTION);
    PhotoModel photoModel = FlickrPhotoService.toCommonPhoto(photo, ALBUM_ID);
    assertThat(photoModel.getAlbumId()).isEqualTo(ALBUM_ID);
    assertThat(photoModel.getFetchableUrl()).isEqualTo(FETCHABLE_URL);
    assertThat(photoModel.getTitle()).isEqualTo(PHOTO_TITLE);
    assertThat(photoModel.getDescription()).isEqualTo(PHOTO_DESCRIPTION);
    assertThat(photoModel.getMediaType()).isEqualTo("image/jpeg");
}
Also used : PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) Photo(com.flickr4java.flickr.photos.Photo) Test(org.junit.Test)

Example 4 with PhotoModel

use of org.dataportabilityproject.dataModels.photos.PhotoModel 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);
    }
}
Also used : SmugMugUserResponse(org.dataportabilityproject.serviceProviders.smugmug.model.SmugMugUserResponse) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum)

Example 5 with PhotoModel

use of org.dataportabilityproject.dataModels.photos.PhotoModel 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);
}
Also used : MediaResponse(org.dataportabilityproject.serviceProviders.instagram.model.MediaResponse) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) ArrayList(java.util.ArrayList) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) MediaFeedData(org.dataportabilityproject.serviceProviders.instagram.model.MediaFeedData) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum)

Aggregations

PhotoModel (org.dataportabilityproject.dataModels.photos.PhotoModel)8 IOException (java.io.IOException)5 PhotoAlbum (org.dataportabilityproject.dataModels.photos.PhotoAlbum)5 ArrayList (java.util.ArrayList)4 PhotosModelWrapper (org.dataportabilityproject.dataModels.photos.PhotosModelWrapper)4 ContinuationInformation (org.dataportabilityproject.dataModels.ContinuationInformation)3 FlickrException (com.flickr4java.flickr.FlickrException)2 Photo (com.flickr4java.flickr.photos.Photo)2 Photoset (com.flickr4java.flickr.photosets.Photoset)2 ServiceException (com.google.gdata.util.ServiceException)2 URL (java.net.URL)2 Flickr (com.flickr4java.flickr.Flickr)1 REST (com.flickr4java.flickr.REST)1 RequestContext (com.flickr4java.flickr.RequestContext)1 Auth (com.flickr4java.flickr.auth.Auth)1 PhotoList (com.flickr4java.flickr.photos.PhotoList)1 PhotosInterface (com.flickr4java.flickr.photos.PhotosInterface)1 Photosets (com.flickr4java.flickr.photosets.Photosets)1 PhotosetsInterface (com.flickr4java.flickr.photosets.PhotosetsInterface)1 UploadMetaData (com.flickr4java.flickr.uploader.UploadMetaData)1