Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }