Ejemplo n.º 1
0
        private static IEnumerable<Album> LoadAlbums(string url, Repository googleRepository)
        {
            XmlDocument xmlDocument = LoadXmlDocument(url);

            if (xmlDocument == null)
            {
                return null;
            }

            var nodes = (from n in xmlDocument.ChildNodes[1].ChildNodes.Cast<XmlNode>()
                         where n.Name == "entry"
                         select n).ToList();

            var albums = new List<Album>();

            foreach (var node in nodes)
            {
                var mediaNode = (from n in node.ChildNodes.Cast<XmlNode>()
                                 where n.Name == "media:group"
                                 select n).SingleOrDefault();

                var description = "";

                try
                {
                    description = (from n in mediaNode.ChildNodes.Cast<XmlNode>()
                                   where n.Name == "media:description"
                                   select n).SingleOrDefault().InnerText;

                }
                catch { }


                var thumbnailNode = (from n in mediaNode.ChildNodes.Cast<XmlNode>()
                                     where n.Name == "media:thumbnail"
                                     select n).SingleOrDefault();

                var title = (from n in node.ChildNodes.Cast<XmlNode>()
                             where n.Name == "title"
                             select n.InnerText).SingleOrDefault();

                var albumId = (from n in node.ChildNodes.Cast<XmlNode>()
                               where n.Name == "id"
                               select n.InnerText).SingleOrDefault().ToLower();

                var index = albumId.IndexOf("albumid/");
                albumId = albumId.Remove(0, index + 8);


                var coverUrl = (from a in thumbnailNode.Attributes.Cast<XmlAttribute>()
                                where a.Name == "url"
                                select a.Value).SingleOrDefault();



                var coverPhoto = new Photo
                                     {
                                         Url = coverUrl,
                                         AlbumId = albumId,
                                         PreviewUrl = coverUrl,
                                     };

                var album = new Album(googleRepository)
                                {
                                    UserName = googleRepository.GoogleAccount.PicasaUserName,
                                    UserId = googleRepository.GoogleAccount.PicasaUserName,
                                    Id = albumId,
                                    Title = title,
                                    CoverPhoto = coverPhoto,
                                    Description = description
                                };


                albums.Add(album);
            }

            return albums;
        }
Ejemplo n.º 2
0
        public static IEnumerable<Photo> LoadPhotoListFromAlbumXml(XmlDocument xmlDocument, string albumId, string userId)
        {
            if (xmlDocument == null || String.IsNullOrEmpty(xmlDocument.InnerXml))
            {
                return new List<Photo>();
            }

            var nodes = (from n in xmlDocument.ChildNodes[1].Cast<XmlNode>().ToList()
                         where n.Name == "entry"
                         select n).ToList();

            var result = new List<Photo>();

            foreach (var node in nodes)
            {
                var title = (from n in node.ChildNodes.Cast<XmlNode>()
                             where n.Name == "title"
                             select n.InnerText).SingleOrDefault();

                var timeStamp = (from n in node.ChildNodes.Cast<XmlNode>()
                                 where n.Name == "published"
                                 select DateTime.Parse(n.InnerText)).SingleOrDefault();

                var id = (from n in node.ChildNodes.Cast<XmlNode>()
                          where n.Name == "id"
                          select n.InnerText).SingleOrDefault().ToLower();

                id = id.ToLower().Replace(String.Format("http://picasaweb.google.com/data/entry/base/user/{0}/albumid/{1}/photoid/", userId, albumId).ToLower(), String.Empty);
                id = id.Replace("?hl=en_us", String.Empty);

                var mediaNode = (from n in node.ChildNodes.Cast<XmlNode>()
                                 where n.Name == "media:group"
                                 select n).SingleOrDefault();

                var mediaAttributes = (from n in mediaNode.ChildNodes.Cast<XmlNode>()
                                       where n.Name == "media:content"
                                       select n.Attributes.Cast<XmlAttribute>().ToList()).SingleOrDefault();


                var url = (from a in mediaAttributes
                           where a.Name == "url"
                           select a.Value).SingleOrDefault();

                var width = (from a in mediaAttributes
                             where a.Name == "width"
                             select int.Parse(a.Value)).SingleOrDefault();

                var height = (from a in mediaAttributes
                              where a.Name == "height"
                              select int.Parse(a.Value)).SingleOrDefault();

                var thumbnailNode = (from n in mediaNode.ChildNodes.Cast<XmlNode>()
                                     where n.Name == "media:thumbnail"
                                     select n).FirstOrDefault();

                var smalUrl = thumbnailNode.Attributes.GetNamedItem("url").Value;
                smalUrl = smalUrl.Replace("s72", "s144").Replace("s288", "s144").Replace("s640", "s144");


                var photo = new Photo
                    {
                        Id = id,
                        AlbumId = albumId,
                        Title = title,
                        TimeStamp = timeStamp,
                        Url = url,
                        Size = new Size(width, height),
                        PreviewUrl = smalUrl,
                        //Description = picasaEntry.Summary.Text,
                        Description = ""
                    };

                result.Add(photo);

            }

            return result;
        }
Ejemplo n.º 3
0
        public virtual Album GetAlbum(string albumId)
        {
            Album album;

            //if (Albums != null && Albums.Count() != 0)
            //{
            //    album = Albums.FirstOrDefault(x => x.Id == albumId);
            //}
            //else
            //{
                var key = CreateCacheKey(albumId);
                album = Cache[key] as Album;

                if (album == null)
                {
                    var url = String.Format( "https://picasaweb.google.com/data/feed/base/user/{0}/albumid/{1}?alt=rss&kind=photo",
                            GoogleAccount.PicasaUserName, albumId);
                    try
                    {
                        
                        var xmlDocument = LoadXmlDocument(url);
                        var rss = X.Web.RSS.RssDocument.Load(xmlDocument.InnerXml);
                        
                        var title = rss.Channel.Title;
                        var description = rss.Channel.Description;
                        
                        var coverPhoto = new Photo
                                             {
                                                 Url = rss.Channel.Image.Url.UrlString,
                                                 AlbumId = albumId,
                                                 PreviewUrl = rss.Channel.Image.Url.UrlString,
                                             };

                        album = new Album(this)
                                    {
                                        UserName = GoogleAccount.PicasaUserName,
                                        UserId = GoogleAccount.PicasaUserName,
                                        Id = albumId,
                                        Title = title,
                                        CoverPhoto = coverPhoto,
                                        Description = description
                                    };

                        Cache[key] = album;
                        
                    }
                    catch { }

                }
            //}

            return album;
        }