Ejemplo n.º 1
0
        public static void UpdatePhotos()
        {
            using (var ctx = new JamieEntityModelContainer())
            {
                foreach (var owner in ctx.Owners)
                {
                    var service = GetService(owner);
                    if (ctx.Albums.Count() > 0)
                    {
                        owner.Albums.Run(album =>
                        {
                            var googleAlbum = GetAlbum(service, album.Id);
                            if (googleAlbum.Updated != album.LastUpdated)
                            {
                                var query = new PhotoQuery(PicasaQuery.CreatePicasaUri(owner.Name, album.Id)) { ExtraParameters = "imgmax=1280" };
                                var googlePhotos = service.Query(query).Entries.Select(entry => new Google.Picasa.Photo { AtomEntry = entry }).ToArray();
                                var albumPhotos = album.Photos.ToArray();

                                albumPhotos.Run(photo =>
                                {
                                    if (googlePhotos.FirstOrDefault(gPhoto => gPhoto.Id == photo.Id) != null)
                                        return;

                                    album.Photos.Remove(photo);
                                    ctx.Photos.DeleteObject(photo);
                                });

                                googlePhotos.Run(photo =>
                                {
                                    if (albumPhotos.FirstOrDefault(p => p.Id == photo.Id) != null || ctx.Photos.FirstOrDefault(p => p.Id == photo.Id) != null)
                                        return;

                                    var newPhoto = new Photo
                                    {
                                        Id = photo.Id,
                                        TimeTaken = FromUnixTimeStamp(photo.Timestamp),
                                        ThumbUri = ((PicasaEntry)photo.AtomEntry).Media.Thumbnails.Last().Url,
                                        FullUri = photo.AtomEntry.Content.AbsoluteUri
                                    };

                                    album.Photos.Add(newPhoto);
                                });

                                album.LastUpdated = googleAlbum.Updated;
                            }
                        });
                    }
                }

                ctx.SaveChanges();
            }
        }
Ejemplo n.º 2
0
 // NOTE: This class is used to add the extra custom actions used in the application (http://www.vidyano.com/Documentation/custom-actions)
 public static void RefreshAll(JamieEntityModelContainer context, CustomActionArgs e)
 {
     Picasa.UpdatePhotos();
 }