Пример #1
0
        public static async Task <List <Tweet> > GetTweets(HttpClient client)
        {
            var accessToken = await GetAccessToken(client);

            var requestUserTimeline = new HttpRequestMessage(HttpMethod.Get,
                                                             $"https://api.twitter.com/1.1/statuses/user_timeline.json?count=100&screen_name=shanselman&trim_user=0&exclude_replies=1");

            requestUserTimeline.Headers.Add("Authorization", "Bearer " + accessToken);

            var responseUserTimeLine = await client.SendAsync(requestUserTimeline);

            var json = await responseUserTimeLine.Content.ReadAsStringAsync();

            var tweetsRaw = TweetRaw.FromJson(json);

            return(tweetsRaw.Select(t => new Tweet
            {
                StatusID = t?.RetweetedStatus?.User?.ScreenName == "shanselman" ? t.RetweetedStatus.IdStr : t.IdStr,
                ScreenName = t?.RetweetedStatus?.User?.ScreenName ?? t.User.ScreenName,
                Text = t.Text,
                CurrentUserRetweet = (ulong)t.RetweetCount,
                CreatedAt = GetDate(t.CreatedAt, DateTime.MinValue),
                Image = t.RetweetedStatus != null && t.RetweetedStatus.User != null ?
                        t.RetweetedStatus.User.ProfileImageUrlHttps.ToString() : (t.User.ScreenName == "shanselman" ? "scott159.png" : t.User.ProfileImageUrlHttps.ToString())
            }).ToList());
        }
Пример #2
0
        public async Task <IEnumerable <Tweet> > GetTweetsAsync(string screenName, bool includeRetweets)
        {
            var accessToken = await GetAccessToken(client);

            var requestUserTimeline = new HttpRequestMessage(HttpMethod.Get,
                                                             $"https://api.twitter.com/1.1/statuses/user_timeline.json?count=100&screen_name={screenName}&trim_user=0&exclude_replies=1");

            requestUserTimeline.Headers.Add("Authorization", "Bearer " + accessToken);

            var responseUserTimeLine = await client.SendAsync(requestUserTimeline);

            var json = await responseUserTimeLine.Content.ReadAsStringAsync();

            var tweetsRaw = TweetRaw.FromJson(json);

            List <Tweet> tweets = tweetsRaw.Select(t => new Tweet
            {
                IsReTweet     = t?.RetweetedStatus != null,
                StatusID      = t?.RetweetedStatus?.User?.ScreenName == screenName ? t.RetweetedStatus.IdStr : t.IdStr,
                ScreenName    = t?.RetweetedStatus?.User?.ScreenName ?? t.User.ScreenName,
                Text          = HttpUtility.HtmlDecode(t?.Text),
                RetweetCount  = t.RetweetCount,
                FavoriteCount = t.FavoriteCount,
                CreatedAt     = GetDate(t.CreatedAt, DateTime.MinValue),
                Image         = t?.RetweetedStatus != null && t?.RetweetedStatus?.User != null ?
                                t.RetweetedStatus.User.ProfileImageUrlHttps.ToString() : (t?.User?.ScreenName == screenName ? "liar_in_chief.png" : t?.User?.ProfileImageUrlHttps.ToString()),
                MediaUrl = t?.Entities?.Media?.FirstOrDefault()?.MediaUrlHttps?.AbsoluteUri
            }).ToList();

            if (!includeRetweets)
            {
                tweets = tweets.Where(t => !t.IsReTweet).ToList();
            }
            return(tweets);
        }
        async Task <IEnumerable <TweetRaw> > GetTweets(string accessToken = null)
        {
            if (accessToken == null)
            {
                accessToken = await GetAccessToken();
            }

            var requestUserTimeline = new HttpRequestMessage(HttpMethod.Get,
                                                             $"https://api.twitter.com/1.1/statuses/user_timeline.json?count=100&screen_name=shanselman&trim_user=0&exclude_replies=1");

            requestUserTimeline.Headers.Add("Authorization", "Bearer " + accessToken);
            var httpClient = new HttpClient();
            HttpResponseMessage responseUserTimeLine = await httpClient.SendAsync(requestUserTimeline);

            string json = await responseUserTimeLine.Content.ReadAsStringAsync();

            return(TweetRaw.FromJson(json));
        }
Пример #4
0
        public static async Task AddTweet(TweetRaw t)
        {
            try
            {
                if (t.User != null)
                {
                    t.UserId = t.User.Id;
                    await AppDbHelper <User> .InsertOrUpdateTweetAsync(t.User);
                }
                if (t.QuotedStatus != null)
                {
                    await AddTweet(t.QuotedStatus);
                }
                if (t.RetweetedStatus != null)
                {
                    await AddTweet(t.RetweetedStatus);
                }

                await AppDbHelper <TweetRaw> .InsertOrUpdateTweetAsync(t);

                if (t.ExtendedTweet != null)
                {
                    t.ExtendedTweet.TweetRawId = t.Id;
                    await AppDbHelper <ExtendedTweet> .InsertOrUpdateTweetAsync(t.ExtendedTweet);
                }
                if (t.Place != null)
                {
                    t.Place.TweetRawId = t.Id;
                    await AppDbHelper <Place> .InsertOrUpdateTweetAsync(t.Place);

                    if (t.Place.BoundingBox != null)
                    {
                        t.Place.BoundingBox.PlaceId = t.Place.Id;
                        await AppDbHelper <BoundingBox> .InsertOrUpdateTweetAsync(t.Place.BoundingBox);
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Пример #5
0
 public void NewTweet(TweetRaw tweetRaw)
 {
 }
Пример #6
0
        public TweetDto CreateTweetDto(TweetRaw x)
        {
            return(new TweetDto
            {
                Id = x.Id,
                CreatedAt = x.CreatedAt,
                Text = x.Text,
                InReplyToStatusId = x.InReplyToStatusId,
                InReplyToScreenName = x.InReplyToScreenName,
                UserDefaultProfile = x.User.DefaultProfile,
                UserDefaultProfileImage = x.User.DefaultProfileImage,
                FavoriteCount = x.FavoriteCount,
                UserFollowers = x.User.Followers,
                UserFollowing = x.User.Following,
                IsQuoteStatus = x.IsQuoteStatus,
                IsRetweetStatus = x.IsRetweetStatus,
                UserName = x.User.Name,
                UserScreenName = x.User.ScreenName,
                NegativeScore = x.TweetSentiment != null ? x.TweetSentiment.NegativeScore : -1,
                PositiveScore = x.TweetSentiment != null ? x.TweetSentiment.PositiveScore : -1,
                NeutralScore = x.TweetSentiment != null ? x.TweetSentiment.NeutralScore : -1,
                QuoteCount = x.QuoteCount,
                ReplyCount = x.ReplyCount,
                RetweetCount = x.RetweetCount,
                Sentiment = x.TweetSentiment != null?x.TweetSentiment.Sentiment.ToString() : "",
                                UserId = x.User.Id,
                                UserProfileBanner = x.User.ProfileBanner,
                                UserProfileImage = x.User.ProfileImage,
                                UserVerified = x.User.Verified,
                                Hashtags = (x.TweetsHashtags != null && x.TweetsHashtags.Count > 0) ?
                                           x.TweetsHashtags.Select(x => $"#{x.Hashtags}").ToList()
                            : null,
                                SentimentSentence = (x.TweetSentiment != null && x.TweetSentiment.Sentences != null) ?
                                                    x.TweetSentiment.Sentences.Select((s) =>
                                                                                      new SentimentSentenceDto
                {
                    Sentiment = s.Sentiment.ToString(),
                    Length = s.Length,
                    NegativeScore = s.NegativeScore,
                    NeutralScore = s.NeutralScore,
                    PositiveScore = s.PositiveScore
                }

                                                                                      ).ToList() : null,
                                GeoCoordinate = (x.User.GeoUsers != null && x.User.GeoUsers.Count > 0) ?
                                                new GeoCoordinateDto
                {
                    Lat = x.User.GeoUsers[0].Lat,
                    Lon = x.User.GeoUsers[0].Lon,
                    GeoName = x.User.GeoUsers[0].DisplayName
                } : null,
                EntityRecognizeds = (x.TweetEntities != null && x.TweetEntities.Count > 0) ?
                                    x.TweetEntities.Select((e) =>

                                                           new EntityRecognizedDto
                {
                    EntityName = e.EntityName,
                    EntityType = e.EntityType,
                    Length = e.Length,
                    Offset = e.Offset
                }
                                                           ).ToList() : null
            });
        }