示例#1
0
        public async Task <List <Tweet> > GetTweetsFromLocation(double lat, double lng, int radius, bool allowRetweet, int maxTweets, bool showRecent)
        {
            string     query      = "";
            ResultType resultType = ResultType.Recent;

            if (allowRetweet)
            {
                query = "%20";
            }
            else
            {
                query = "%20 -RT";
            }
            if (!showRecent)
            {
                resultType = ResultType.Mixed;
            }

            var twitterCtx = new TwitterContext(auth);

            var searchResponse = await
                                     (from search in twitterCtx.Search
                                     where search.Type == SearchType.Search && search.Query == query &&
                                     search.GeoCode == string.Format("{0},{1},{2}km", lat, lng, radius) &&
                                     search.ResultType == resultType &&
                                     search.Count == maxTweets
                                     //&& search.SearchLanguage == "nl"
                                     select search)
                                 .SingleOrDefaultAsync();

            if (searchResponse != null && searchResponse.Statuses != null)
            {
                tweetList.Clear();
                foreach (var tweet in searchResponse.Statuses)
                {
                    Tweet tweetToAdd = new Tweet
                    {
                        User  = tweet.User.ScreenNameResponse,
                        Text  = tweet.Text,
                        Place = tweet.Place.Name,
                        Lat   = tweet.Coordinates.Latitude,
                        Lng   = tweet.Coordinates.Longitude
                    };
                    tweetToAdd.ExtractHyperlink();
                    tweetToAdd.SplitText();
                    tweetList.Add(tweetToAdd);
                }
            }
            return(tweetList);
        }