Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parseMode"></param>
        /// <returns></returns>
        public TumblrBlog ParseAllBlogPhotoPosts(BlogPostsScanMode parseMode)
        {
            try
            {
                ProcessingStatusCode = ProcessingCode.Crawling;
                //ExistingImageList = FileHelper.GenerateFolderImageList(SaveLocation);

                Blog.Posts = Blog.Posts ?? new HashSet <TumblrPost>();

                int numPostsPerDocument = (int)NumberOfPostsPerApiDocument.ApiV2;

                TotalNumberOfPosts = (TotalNumberOfPosts == 0) ? Blog.TotalPosts : TotalNumberOfPosts;

                bool finished = false;

                PercentComplete = 0;

                while (ApiQueryOffset < TotalNumberOfPosts && !IsCancelled && !finished)
                {
                    ParseBlogPhotoPosts(parseMode, ApiQueryOffset);

                    if (parseMode == BlogPostsScanMode.NewestPostsOnly && ExistingHash.Count > 0)
                    {
                        finished = true;
                    }

                    NumberOfParsedPosts += (parseMode == BlogPostsScanMode.FullBlogRescan || Posts.Count == 0) ? numPostsPerDocument : Posts.Count;

                    NumberOfParsedPosts = (NumberOfParsedPosts > TotalNumberOfPosts) ? NumberOfParsedPosts : NumberOfParsedPosts;

                    PercentComplete = TotalNumberOfPosts > 0 ? (int)((NumberOfParsedPosts / (double)TotalNumberOfPosts) * 100.00) : 0;
                    ApiQueryOffset += numPostsPerDocument;

                    if (GenerateLog)
                    {
                        UpdateLogFile(Blog.Name);
                    }

                    Blog.Posts = new HashSet <TumblrPost>();
                }

                TotalNumberOfImages = ImageList.Count;

                if (ImageList.Count == 0)
                {
                    Blog.Posts = new HashSet <TumblrPost>();
                }

                return(Blog);
            }
            catch
            {
                return(Blog);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parseMode"></param>
        /// <param name="offset"></param>
        private void ParseBlogPhotoPosts(BlogPostsScanMode parseMode, int offset)
        {
            Posts        = GetTumblrPhotoPostList(offset);
            ExistingHash = new HashSet <TumblrPost>((from p in Posts
                                                     where FileHelper.FileExists(SaveLocation, p.Photos.Last().Filename)
                                                     select p));
            Posts.RemoveWhere(x => ExistingHash.Contains(x));

            if (Posts.Count != 0)
            {
                Blog.Posts.UnionWith(Posts); GenerateImageListForDownload(Posts);
            }

            if (parseMode == BlogPostsScanMode.FullBlogRescan)
            {
                Blog.Posts.UnionWith(ExistingHash);
            }
        }