/// <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); } }
/// <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); } }