示例#1
0
        public async Task <GooglePhotosMediaItemsCollection> FetchPhotosOfAlbum(string albumID, int pageSize = 0, string pageToken = "")
        {
            //if Album ID is set, filters can't be
            //https://developers.google.com/photos/library/reference/rest/v1/mediaItems/search
            string searchCriteria = JsonConvert.SerializeObject(new
            {
                pageSize  = pageSize.ToString(),
                pageToken = pageToken,
                albumId   = albumID
            });

            GooglePhotosMediaItemsCollection cacheCollection = await SearchMediaItems(searchCriteria, pageSize, pageToken);

            cacheCollection.mediaItems.RemoveAll(m => !m.MimeType.Equals("image/jpeg"));

            return(cacheCollection);
        }
示例#2
0
        internal async Task <GooglePhotosMediaItemsCollection> FetchAllFavoredPhotos()
        {
            GooglePhotosMediaItemsCollection mediasCache      = new GooglePhotosMediaItemsCollection();
            GooglePhotosMediaItemsCollection allFavoredPhotos = new GooglePhotosMediaItemsCollection()
            {
                mediaItems = new List <GooglePhotosMediaItem>()
            };

            do
            {
                mediasCache = await SearchFavoredPhotos(100, mediasCache.nextPageToken);

                allFavoredPhotos.mediaItems.AddRange(mediasCache.mediaItems);
                allFavoredPhotos.nextPageToken = mediasCache.nextPageToken;
            }while (!string.IsNullOrEmpty(mediasCache.nextPageToken));

            return(mediasCache);
        }
示例#3
0
        public async Task <GooglePhotosMediaItemsCollection> FetchAllPhotosOfAlbum(string albumID)
        {
            GooglePhotosMediaItemsCollection googlePhotosMediaItemsCollection = new GooglePhotosMediaItemsCollection()
            {
                mediaItems = new List <GooglePhotosMediaItem>()
            };
            GooglePhotosMediaItemsCollection cacheGooglePhotosMediaItemsCollection = new GooglePhotosMediaItemsCollection();

            do
            {
                cacheGooglePhotosMediaItemsCollection = await FetchPhotosOfAlbum(albumID, 100, cacheGooglePhotosMediaItemsCollection.nextPageToken);

                if (cacheGooglePhotosMediaItemsCollection.mediaItems.Count != 0)
                {
                    googlePhotosMediaItemsCollection.mediaItems.AddRange(cacheGooglePhotosMediaItemsCollection.mediaItems);
                }

                googlePhotosMediaItemsCollection.nextPageToken = cacheGooglePhotosMediaItemsCollection.nextPageToken;
            } while (!string.IsNullOrEmpty(cacheGooglePhotosMediaItemsCollection.nextPageToken));


            return(googlePhotosMediaItemsCollection);
        }
示例#4
0
        private async Task Run()
        {
            SlideshowSettings slideshowSettings = new SlideshowSettings();

            slideshowSettings.displayFavorites = true;

            int albumCount = 0;
            GooglePhotosAlbumsCollection albums = await service.FetchAllAlbums();

            foreach (var anAlbum in albums.albums)
            {
                Console.WriteLine("{0}) {1}", albumCount++, anAlbum.title);
                slideshowSettings.AddSelectedAlbumId(anAlbum.id);
            }

            int mediaItemCount = 0;
            GooglePhotosMediaItemsCollection medias = await service.FetchAllFavoredPhotos();

            foreach (var media in medias.mediaItems)
            {
                Console.WriteLine("{0}) {1}", mediaItemCount++, media.Filename);
            }

            List <GooglePhotosMediaItem> photosToSlideshow = new List <GooglePhotosMediaItem>();

            var sw = Stopwatch.StartNew();

            //parallel fetching of photos
            Parallel.ForEach(slideshowSettings.selectedAlbumIds, (anAlbumId) =>
            {
                photosToSlideshow.AddRange((service.FetchAllPhotosOfAlbum(anAlbumId)).Result.mediaItems);
            });

            //serial fetching of photos
            //foreach (var anAlbumId in slideshowSettings.selectedAlbumIds)
            //{
            //    photosToSlideshow.AddRange((await service.FetchAllPhotosOfAlbum(anAlbumId)).mediaItems);
            //}

            sw.Stop();
            Console.WriteLine("Milliseconds elapsed while fetching photos: {0} [ms]", sw.ElapsedMilliseconds / 1000);

            photosToSlideshow.AddRange((await service.FetchAllFavoredPhotos()).mediaItems);

            switch (slideshowSettings.orderBy)
            {
            case OrderBy.DateTime:
                switch (slideshowSettings.order)
                {
                case Order.Ascending:
                    photosToSlideshow = photosToSlideshow.OrderBy(m => m.MediaMetadata.CreationTime).ToList();
                    break;

                case Order.Descending:
                    photosToSlideshow = photosToSlideshow.OrderByDescending(m => m.MediaMetadata.CreationTime).ToList();
                    break;

                case Order.Random:
                    photosToSlideshow = photosToSlideshow.OrderBy(m => m.Id).ToList();
                    break;

                default:
                    break;
                }
                break;

            case OrderBy.FileName:
                switch (slideshowSettings.order)
                {
                case Order.Ascending:
                    photosToSlideshow = photosToSlideshow.OrderBy(m => m.Filename).ToList();
                    break;

                case Order.Descending:
                    photosToSlideshow = photosToSlideshow.OrderByDescending(m => m.Filename).ToList();
                    break;

                case Order.Random:
                    photosToSlideshow = photosToSlideshow.OrderBy(m => m.Id).ToList();
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }

            foreach (var aPhoto in photosToSlideshow)
            {
                Wallpaper.Wallpaper.Set(new Uri(aPhoto.BaseUrl.AbsoluteUri + "=w1600-h900"), slideshowSettings.WallpaperStyle);
                Thread.Sleep(1000);
            }

            //slideshowSettings.SaveSettings();
        }