public async Task <string> GetRandomPost(string blogName) { if (!_maxPostNumbersCache.TryGetValue(blogName, out var postsCount)) { var blogInfo = await _client.GetBlogInfoAsync(blogName); _maxPostNumbersCache[blogName] = postsCount = (int)blogInfo.PostsCount; } //the loop is necessary because blogInfo.PostsCount doesn't count only images PhotoPost post; do { var postNumber = Random.Next(postsCount); var posts = await _client.GetPostsAsync(blogName, postNumber, 5, PostType.Photo); post = posts.Result.FirstOrDefault() as PhotoPost; if (post == null) { _maxPostNumbersCache[blogName] = postsCount = postNumber; } } while (post == null && postsCount > 0); if (post == null) { throw new Exception("no images on the blog"); } var imageUrl = post.PhotoSet.RandomSubset(1).Single().OriginalSize.ImageUrl; return(imageUrl); }
private async void LoadTagsFromPosts() { if (tumblrClient != null) { var userInfo = await tumblrClient.GetUserInfoAsync(); var blogs = userInfo.Blogs; foreach (var blog in blogs) { var blogInfo = await tumblrClient.GetBlogInfoAsync(blog.Name); for (int i = 0; i < blogInfo.PostsCount; i = i + 20) { var posts = await tumblrClient.GetPostsAsync(blog.Name, i); Parallel.ForEach(posts.Result, (post) => { Parallel.For(0, post.Tags.Length - 1, (k) => { string tag = post.Tags[k]; postTags.Add(tag); } ); } ); } } } }
public async Task <string> GetBlog(string blogName) { Followers followers = await _tc.GetFollowersAsync(blogName); BlogInfo blogInfo = await _tc.GetBlogInfoAsync(blogName); StringBuilder sb = new StringBuilder(); AddHtmlHeader(sb, "Blog"); sb.AppendLine($"Your blog {blogName} with Title: {blogInfo.Title} have:"); sb.AppendLine($"<p>{followers.Count} Follower</p>"); sb.AppendLine($"<p>{blogInfo.PostsCount} Posts</p>"); sb.AppendLine($"<p>{blogInfo.LikesCount} Likes</p>"); AddEndHTML(sb); string result = sb.ToString(); return(result); }