public JsonResult GetCityTweets(string cityName)
        {
            TwitterViewModel model = new TwitterViewModel
            {
                ProfileName = string.Empty,
                FollowerCount = 0,
                FollowingCount = 0,
                TweetList = new List<TweetViewModel>()
            };

            var searchParameter = new TweetSearchParameters("")
            {
                Lang = Language.English,
                //hard coding the geo location for newyork
                GeoCode = Geo.GenerateGeoCode(Geo.GenerateCoordinates(-74.006, 40.742), 1000, DistanceMeasure.Miles)
            };
            var tweets = Search.SearchTweets(searchParameter);

            foreach (var item in tweets.OrderByDescending(res => res.CreatedAt))
            {
                model.TweetList.Add(new TweetViewModel
                {
                    TweetText = item.Text,
                    CreatedAt = String.Format("{0:d/M/yyyy HH:mm:ss}", item.CreatedAt),
                    CreatedBy = item.CreatedBy.Id.ToString(),
                    HashTag = item.Hashtags.Any() ? item.Hashtags[0].Text : ""
                });
            }

            return Json(model, JsonRequestBehavior.AllowGet);
        }
Example #2
0
        //OLD UNUSED CODE//
        public static string createBinArrayFile(IEnumerable<ITweet> listOfTweets, TweetSearchParameters searchParameters)
        {
            string date = "", time = "";
            string startDir = Directory.GetCurrentDirectory();
            string currentDir = startDir + @"\Searches\" + date;
            string filePath = "";

            GetDateTime(ref date, ref time);
            if(!Directory.Exists(currentDir))
                Directory.CreateDirectory(currentDir);
            Directory.SetCurrentDirectory(currentDir);

            sTweet[] tweetArray = ListToSerialTweet(listOfTweets, listOfTweets.Count(), searchParameters);

            BinaryFormatter bf = new BinaryFormatter();
            byte[] buffer;
            using(var ms = new MemoryStream())
            {
                bf.Serialize(ms, tweetArray);
                buffer = ms.ToArray();
            }

            filePath = String.Format("{0}_{1}.bin", date, time);

            using(BinaryWriter newFile = new BinaryWriter(File.Open(filePath, FileMode.CreateNew)))
            {
                newFile.Write(buffer, 0, buffer.Length);
                newFile.Close();
            }

            Directory.SetCurrentDirectory(startDir);
            return currentDir + filePath;
        }
Example #3
0
    // Note: The latitude/longitude order here is reversed compared to the various
    //       signatures in Tweetinvi (see the GeoCode constructor below for example),
    //       for ease of copy-and-pasting coordinates from the web
    static ISearchResult SearchTweetsTaggedWithGeo(string query,
                                                   double latitude,
                                                   double longitude,
                                                   double radius = 15,
                                                   DistanceMeasure distanceMeasure = DistanceMeasure.Miles)
    {
        var searchParameters = new TweetSearchParameters(query)
        {
            GeoCode = new GeoCode(longitude, latitude, radius, distanceMeasure),
            Lang = Language.English,
            SearchType = SearchResultType.Recent,
            MaximumNumberOfResults = 15,
            Locale = "new york"
        };

        return Search.SearchTweetsWithMetadata(searchParameters);
    }
        public ITweetSearchParameters CloneTweetSearchParameters(ITweetSearchParameters tweetSearchParameters)
        {
            var clone = new TweetSearchParameters(tweetSearchParameters.SearchQuery)
            {
                Filters = tweetSearchParameters.Filters,
                GeoCode = tweetSearchParameters.GeoCode,
                Lang = tweetSearchParameters.Lang,
                Locale = tweetSearchParameters.Locale,
                MaxId = tweetSearchParameters.MaxId,
                MaximumNumberOfResults = tweetSearchParameters.MaximumNumberOfResults,
                SearchType = tweetSearchParameters.SearchType,
                Since = tweetSearchParameters.Since,
                SinceId = tweetSearchParameters.SinceId,
                TweetSearchType = tweetSearchParameters.TweetSearchType,
                Until = tweetSearchParameters.Until
            };

            return clone;
        }
Example #5
0
        private BTree.BTree<int, sTweet> Pesquisar()
        {
            // Creates the search parameter for the search function.
            var searchParameter = new TweetSearchParameters(searchTextParameter.Text)
            {
                MaximumNumberOfResults = (int) numberTweetsParameter.Value,
                Lang = ((KeyValuePair<string, Language>) langParameter.SelectedItem).Value, //get language value of selected item in langParameter listbox
                TweetSearchType = Type(),    //get Tweet Search Type from selected item in tweetsearchtypeparameter listbox
            };

            //if the <none> geolocation isn't selected, the user wants to set a geolocation.
            //Searches through index of listbox and finds which option the user choose.
            int indexGeoPosParameter = GeoPosBoxParameter.SelectedIndex;
            switch (indexGeoPosParameter)
            {
                case 1: //Campus Centro
                    searchParameter.GeoCode = new GeoCode(-51.2209625, -30.0331423, (double)radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 2: //Campus do Vale
                    searchParameter.GeoCode = new GeoCode(-51.1218710, -30.0710872, (double)radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 3: //Hospital de Clínicas
                    searchParameter.GeoCode = new GeoCode(-51.2069721, -30.0390867, (double)radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 4: //Aeroporto Salgado Filho
                    searchParameter.GeoCode = new GeoCode(-51.1753810, -29.9934730, (double)radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 5: //Mercado Público
                    searchParameter.GeoCode = new GeoCode(-51.2278460, -30.0275120, (double)radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 6: //Cristo Redentor
                    searchParameter.GeoCode = new GeoCode(-43.2104845, -22.9519098, (double) radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                case 7: //Aeropuerto Tegucigalpa
                    searchParameter.GeoCode = new GeoCode(-87.2170801, 14.0608254, (double) radiusParameter.Value, DistanceMeasure.Kilometers);
                    break;
                default: //Geolocale not defined
                    break;
            }

            return Pesquisar(searchParameter);
        }
Example #6
0
 public static void searchTweets()
 {
     tweetList = new List<TweetObj>();
     TweetSearchParameters searchParameter;
     if (location)
     {
         searchParameter = new TweetSearchParameters(new GeoCode(longi, lat, r, DistanceMeasure.Kilometers));
     } else
     {
         searchParameter = new TweetSearchParameters("*");
     }            
     searchParameter.Lang = Language.English;
     searchParameter.MaximumNumberOfResults = 250;
     var tweets = Search.SearchTweets(searchParameter);
     using (var sequenceEnum = tweets.GetEnumerator())
     {
         while (sequenceEnum.MoveNext())
         {
             tweetList.Add(new TweetObj(sequenceEnum.Current.Text, sequenceEnum.Current.CreatedBy.Name, sequenceEnum.Current.CreatedBy.ScreenName,
                 sequenceEnum.Current.CreatedAt, sequenceEnum.Current.Coordinates, sequenceEnum.Current.Place, sequenceEnum.Current.Hashtags));
         }
     }
 }
        public static double ProfileFrequency(string query)
        {
            if (profiledQueries.ContainsKey(query))
                return profiledQueries[query];

            if (!IsNextRequestPossible())
                SleepUntilNextRequest();

            var credentials = new TwitterCredentials(
                ConfigurationManager.AppSettings["ConsumerKey"],
                ConfigurationManager.AppSettings["ConsumerSecret"],
                ConfigurationManager.AppSettings["WorkerToken"],
                ConfigurationManager.AppSettings["WorkerSecret"]
            );

            exceptionError = "";
            List<DateTime> tweetsDateTime = new List<DateTime>();

            Auth.ExecuteOperationWithCredentials(credentials, () =>
            {
                int profilingRetries = 0;
                TweetSearchParameters searchParams = new TweetSearchParameters(query) { SearchType = SearchResultType.Recent };
                
                // retry profiling a few times if there is no response
                while (profilingRetries <= Convert.ToInt32(ConfigurationManager.AppSettings["TwitterProfilerRetries"]))
                {
                    var tweets = Search.SearchTweets(searchParams);

                    if (tweets == null)
                    {
                        var latestException = ExceptionHandler.GetLastException();
                        exceptionError = latestException.TwitterDescription;
                        profilingRetries++;
                    }
                    else
                    {
                        ++numberOfRequestsMade;
                        exceptionError = "";
                        foreach (var tweet in tweets)
                            tweetsDateTime.Add(tweet.CreatedAt);

                        break;
                    }
                }
            });

            lastRequest = DateTime.Now;
            nextPossibleRequest = DateTime.Now.AddMilliseconds(Convert.ToInt32(ConfigurationManager.AppSettings["TwitterProfilerRateLimitMs"]));

            double returnFrequency = double.Epsilon;

            if (tweetsDateTime.Count == 0 || tweetsDateTime.Count == 1)
            {
                if (exceptionError != "") { returnFrequency = (int)InvalidReturns.Exception; }
                profiledQueries.Add(query, returnFrequency);
                Console.WriteLine("Query [{0}] has frequency {1}", query, returnFrequency);
                return returnFrequency;
            }
            
            tweetsDateTime.Sort();
            TimeSpan timeDiffBetweenTweets = tweetsDateTime.Last().Subtract(tweetsDateTime.First());

            returnFrequency = (tweetsDateTime.Count-1)/((Math.Abs(timeDiffBetweenTweets.TotalMilliseconds)+1)/1000.0);
            profiledQueries.Add(query, returnFrequency);

            Console.WriteLine("Query [{0}] has frequency {1}", query, returnFrequency);
            return returnFrequency;
        }
Example #8
0
        //Type converters
        public static sTweet[] ListToSerialTweet(IEnumerable<ITweet> listOfTweets, int TweetsInList, TweetSearchParameters searchParameters)
        {
            int index = 0;
            Tweetinvi.Core.Interfaces.Models.IGeoCode aux = searchParameters.GeoCode;

            bool isKilo = false;
            sTweet[] tweetArray = new sTweet[TweetsInList];

            foreach (var tweet in listOfTweets)
            {
                tweetArray[index] = new sTweet(tweet.Text, tweet.CreatedBy.Name, tweet.CreatedBy.ScreenName, tweet.CreatedAt, tweet.RetweetCount, tweet.FavouriteCount, tweet.Id, tweet.IdStr);

                if(aux != null)
                {
                    if(aux.DistanceMeasure == Tweetinvi.Core.Enum.DistanceMeasure.Kilometers)
                        isKilo = true;
                    else
                        isKilo = false;

                    tweetArray[index].serializeParameters = new sParameters
                    (
                    aux.Coordinates.Longitude,
                    aux.Coordinates.Latitude,
                    aux.Radius,
                    isKilo,
                    (byte) searchParameters.Lang,
                    (byte) searchParameters.TweetSearchType
                    );

                    index++;
                }
                else
                {
                    tweetArray[index].serializeParameters = new sParameters(-1, -1, -1, false, (byte) searchParameters.Lang, (byte) searchParameters.TweetSearchType);

                    index++;
                }

            }

            return tweetArray;
        }
Example #9
0
    // Note: The latitude/longitude order here is reversed compared to the various
    //       signatures in Tweetinvi (see the GeoCode constructor below for example),
    //       for ease of copy-and-pasting coordinates from the web
    static ISearchResult SearchTweetsTaggedWithGeo(string query,
												   double latitude,
												   double longitude,
												   double radius = 15,
												   DistanceMeasure distanceMeasure = DistanceMeasure.Miles)
    {
        var searchParameters = new TweetSearchParameters(query)
        {
            GeoCode = new GeoCode(longitude, latitude, radius, distanceMeasure),
            Lang = Language.English,
            SearchType = SearchResultType.Recent,
            MaximumNumberOfResults = 15
        };

        try
        {
            var result = Search.SearchTweetsWithMetadata(searchParameters);
            return result;
        }
        catch (Exception e)
        {
            PrintStackTrace(e);
            Log(e);
            return null;
        }
    }
Example #10
0
        private BTree.BTree<int, sTweet> Pesquisar(TweetSearchParameters searchParameter)
        {
            string aux = button1.Text;
            if ((searchParameter.SearchQuery != "") || (searchParameter.GeoCode != null)) //usuário passou parâmetros
            {
                progressBar.Show();
                button1.Text = "Searching, please wait...";
                IEnumerable<ITweet> list = Search.SearchTweets(searchParameter);

                progressBar.Step = 33;
                progressBar.PerformStep();

                sTweet[] tweetArray = FileManipulation.ListToSerialTweet(list, list.Count(), searchParameter);
                progressBar.PerformStep();

                TreeIndexCheck check = new TreeIndexCheck(0, 0, 0);
                BTree.BTree<int, sTweet> Tree = FileManipulation.SerialITweetToBTree(tweetArray, ref check);
                progressBar.PerformStep();

                int i = list.Count();
                button1.Text = aux;

                MessageBox.Show("Todos tweets lidos. Retornando a lista com " + i.ToString() + " elementos.");
                progressBar.Value = 0;

                return Tree;
            }
            else
            {
                MessageBox.Show("Pesquisa sem parâmetros!\nInsira pelos menos um query de texto ou um geolocal.", "ERROR 001");
                return null;
            }
        }
        public JsonResult GetUserDetails(string id, string key, string geo)
        {
            string message = "";
            TwitterViewModel model = new TwitterViewModel { TweetList = new List<TweetViewModel>() };

            if (!string.IsNullOrEmpty(id))
            {
                var user = Tweetinvi.User.GetUserFromScreenName(id);

                model.ProfileName = user.Name;
                model.FollowerCount = user.FollowersCount;
                model.FollowingCount = user.FriendsCount;

            }

            string query = string.IsNullOrEmpty(key) ? "" : key + " ";
            query += string.IsNullOrEmpty(id) ? "" : "from:" + id;

            var searchParameter = new TweetSearchParameters("")
            {
                Lang = Language.English,

                SearchQuery = query.TrimEnd()
            };

            if(!string.IsNullOrEmpty(geo))
            {
                string[] result = geo.Split(',');
                if (!string.IsNullOrEmpty(result[0].Trim()))
                {
                    searchParameter.GeoCode = new GeoCode(double.Parse(result[1].TrimEnd()), double.Parse(result[0].TrimEnd()), double.Parse(result[2].TrimEnd()), DistanceMeasure.Miles);
                }
            }

            var tweets = Search.SearchTweets(searchParameter);

            foreach (var item in tweets.OrderByDescending(res => res.CreatedAt))
            {
                model.TweetList.Add(new TweetViewModel
                {
                    TweetText = item.Text,
                    CreatedAt = String.Format("{0:d/M/yyyy HH:mm:ss}", item.CreatedAt),
                    CreatedBy = item.CreatedBy.Name,
                    HashTag = item.Hashtags.Any() ? item.Hashtags[0].Text : ""
                });
            }

            return Json(model, JsonRequestBehavior.AllowGet);
        }
Example #12
0
 /// <summary>
 /// Search Tweets by text
 /// </summary>
 /// <param name="text"></param>
 /// <returns>Enumeration of finded tweets or null if nothing</returns>
 public IEnumerable<ITweet> SearchTweets(string text)
 {
     ITweetSearchParameters parameters = new TweetSearchParameters(text)
     {
         MaximumNumberOfResults = 20
     };
     var tweets = Search.SearchTweets(parameters);
     return tweets;
 }
        public TweetContainer Search(string query, long sinceId, int maximumNumberOfResults)
        {
            TweetContainer container = new TweetContainer();
            TweetSearchParameters parameters = new TweetSearchParameters(query);
            parameters.TweetSearchType = TweetSearchType.OriginalTweetsOnly;
            parameters.SearchType = SearchResultType.Mixed;
            parameters.SinceId = sinceId;
            parameters.MaximumNumberOfResults = maximumNumberOfResults;
            container.Tweets = Tweetinvi.Search.SearchTweets(parameters);
            container.HasNextBatch = maximumNumberOfResults == container.Tweets.Count();

            container.Tweets = container.Tweets.Where(tweet => tweet.Text.IndexOf(": RT", StringComparison.OrdinalIgnoreCase) > -1 == false);
            container.Tweets = container.Tweets.Where(tweet => tweet.Text.StartsWith("RT", StringComparison.OrdinalIgnoreCase) == false);
            container.Tweets = container.Tweets.Where(tweet => IgnoredUsers.Any(user => !tweet.CreatedBy.ScreenName.Equals(user, StringComparison.OrdinalIgnoreCase)));
            container.Tweets = container.Tweets.Where(tweet => IgnoredUsers.Any(user => !tweet.Text.Contains(user)));
            container.Tweets = container.Tweets.Where(tweet => tweet.Text.Replace(".", "").Replace(" ", "").IndexOf("lastrtwin", StringComparison.OrdinalIgnoreCase) == -1);

            return container;
        }