Exemple #1
0
        public async Task <TwitterUserModel> GetUserProfileAsync(string username)
        {
            var htmlDoc = await HtmlLoader.TryLoadAndParsePageAsync($"https://twitter.com/{username}?lang=en", GetRandomProxy());

            if (htmlDoc != null)
            {
                if (HtmlExtracter.TryParseUser(htmlDoc, out var user))
                {
                    return(user);
                }
            }

            return(null);
        }
Exemple #2
0
        public async Task <TwitterFollowPageModel> GetFollowerAsync(string username, string cursor = "-1")
        {
            var url     = AddressLocator.Follower(username, cursor);
            var htmlDoc = await HtmlLoader.TryLoadAndParsePageAsync(url, GetRandomProxy(), false, false);

            if (htmlDoc != null)
            {
                if (HtmlExtracter.TryParseFollower(htmlDoc, out var followerPage))
                {
                    followerPage.BelongUserName = username;
                    return(followerPage);
                }
            }
            return(null);
        }
Exemple #3
0
        public async Task <TwitterTweetPageModel> GetUserTweetsAsync(TwitterOption option, Dictionary <string, string> paramDict)
        {
            var url = $"{AddressLocator.Web}/search/timeline";

            url = AddressLocator.SanitizeQuery(url, paramDict);
            var htmlSource = await HtmlLoader.TryLoadPageAsync(url, GetRandomProxy(), true, false);

            if (!string.IsNullOrEmpty(htmlSource))
            {
                if (RawTweetPage.TryParse(htmlSource, out var rawPage))
                {
                    var           parser  = new HtmlParser();
                    IHtmlDocument htmlDoc = null;
                    try
                    {
                        htmlDoc = await parser.ParseDocumentAsync(rawPage.ItemsHtml);
                    }
                    catch (Exception)
                    {
                    }

                    if (htmlDoc != null)
                    {
                        if (HtmlExtracter.TryParseTweet(option, htmlDoc, out var pageModel))
                        {
                            pageModel.NextPageParams = new Dictionary <string, string>(paramDict);
                            pageModel.HasNext        = rawPage.HasMoreItems;
                            pageModel.SetMaxPosition(rawPage.MinPosition);
                            pageModel.Options = option;
                            return(pageModel);
                        }
                    }
                }
            }


            return(null);
        }