public List<Objects.Option> GetAllAvailableOptions() { var tweetCountNumerics = new List<int>(1); tweetCountNumerics.Add(10); // default to 10 minutes in between tweet count updates var tweetCountOption = new Objects.Option(1, null, tweetCountNumerics); // id 1 is the tweet count notification option for Twitter var directMessageOption = new Objects.Option(2, null, null); // id 2 is the direct message notification option for Twitter var options = new List<Objects.Option>(2); options.Add(tweetCountOption); options.Add(directMessageOption); return options; }
public async Task<IEnumerable<TweetDto>> GetTweetsFor(IEnumerable<string> tweetsIds) { var tweetsIdsList = tweetsIds.Select(s => Convert.ToUInt64(s)).Materialize(); if (tweetsIdsList.IsEmpty()) { return Enumerable.Empty<TweetDto>(); } using (var twitterContext = CreateContext()) { var results = new List<TweetDto>(); foreach (var tweetsId in tweetsIdsList) { var id = tweetsId; var tweet = await twitterContext.Status .Where(status => status.Type == StatusType.Show && status.ID == id).FirstOrDefaultAsync(); if (tweet != null) { results.Add(BuildTweetDto(tweet)); } } return results; } }
static void Main(string[] args) { if (!EnsureSingleLoad()) { Console.WriteLine("{0}: Another Instance Currently Runing", DateTime.Now); return; } var streamMonitors = new List<DualStreamMonitor>(); UsersCollection.PrimaryUsers().AsParallel() .ForAll(u => { var streamMonitor = new DualStreamMonitor(u, Console.Out); streamMonitor.Start(); lock (streamMonitors) { streamMonitors.Add(streamMonitor); } }); while (Console.ReadLine() != "exit") ; streamMonitors.ForEach(s => s.Stop()); }
public IActionResult Index(string screenname, string order) { // TODO handle hashtags separately int markovOrder; // default order is 2, if the parse failed if (!int.TryParse(order, out markovOrder)) markovOrder = 2; // hack to avoid null pointer exception if (markovOrder > 5) markovOrder = 5; int tweetCount = 200; var generator = new MarkovGenerator(markovOrder, false); // how to handle hashtags? just keep a list of them along with a probability for each, // i.e. a single-prefix markov chain? // would also need a no-hashtag probability // no, that won't work, since there wouldn't be an end point, really. at least not one that makes sense. // what might work is keeping track of individual hashtag probabilities, // as well as a probability distribution of number of hashtags. (fun to get some stats on that, see if it's poisson-distributed) ViewData["Screenname"] = screenname; var auth = new SingleUserAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = _consumerKey, ConsumerSecret = _consumerSecret, AccessToken = _accessToken, AccessTokenSecret = _accessTokenSecret } }; var twitterCtx = new TwitterContext(auth); var timeline = (twitterCtx.Status.Where(tweet => tweet.Type == StatusType.User && tweet.ScreenName == screenname && tweet.Count == tweetCount)) .ToList(); foreach (var tweet in timeline) { generator.ReadInput(tweet.Text); } int outputCount = 20; var outputList = new List<string>(); for (int i = 0; i < outputCount; i++) { outputList.Add(generator.GenerateOutput()); } //TODO add form //TODO use form data return View(outputList); }
private IEnumerable<TweetFromUser> BuildLast20TweetsOfUser(IEnumerable<Status> tweets) { var last20TweetsFromUser = new List<TweetFromUser>(); tweets.ToList().ForEach(tweet => last20TweetsFromUser .Add(new TweetFromUser { TweetText = tweet.Text })); return last20TweetsFromUser; }
public override List<Result> Search(string pKeyWords) { string twitterConsumerKey = ConfigurationManager.AppSettings["twitter-consumer-key"]; string twitterConsumerSecret = ConfigurationManager.AppSettings["twitter-consumer-secret"]; if (string.IsNullOrWhiteSpace(twitterConsumerKey) || string.IsNullOrWhiteSpace(twitterConsumerSecret)) throw new Exception("App was unable to find Twitter credentials on the current settings file. Please add twitter-consumer-key and twitter-consumer-secret to the appSettings section."); ApplicationOnlyAuthorizer authorization = new ApplicationOnlyAuthorizer() { Credentials = new InMemoryCredentials() { ConsumerKey = twitterConsumerKey, ConsumerSecret = twitterConsumerSecret } }; authorization.Authorize(); if(!authorization.IsAuthorized) throw new Exception("Twitter authorizaton was unsuccessful. Please review your Twitter key and secret."); TwitterContext twitterContext = new TwitterContext(authorization); LinqToTwitter.Search twitterSearch = (from search in twitterContext.Search where search.Type == SearchType.Search && search.Query == pKeyWords && search.Count == this.MaxResultSearch select search) .SingleOrDefault(); IEnumerable<Status> tweets = from status in twitterSearch.Statuses orderby status.CreatedAt descending select status; List<Result> domainResults = new List<Result>(); foreach (Status status in tweets) { domainResults.Add( new Result() { CreatedDate = status.CreatedAt, Type = SourceType.Twitter, Text = status.Text, Title = status.Text.Length > 50? string.Format("{0}...",status.Text.Substring(0, 47)) : status.Text, URL = string.Format("http://twitter.com/{0}", status.User.Identifier.ScreenName) } ); } return domainResults; }
private IEnumerable<TweetFromUser> BuildTweetsFromStatuses(IEnumerable<Status> myWall) { var tweetFromUserList = new List<TweetFromUser>(); myWall.ToList().ForEach(tweet => tweetFromUserList .Add(new TweetFromUser { TweetText = tweet.Text, User = BuildUserOffUserId(tweet.User.Identifier.UserID) })); return tweetFromUserList; }
public static List<string> getstopwords(string lang) { //lang can be implemented later. XML doc has lang attribute in wordlist element. List<string> sw = new List<string>(); XmlDocument xd = new XmlDocument(); xd.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content/StopWords.xml")); XmlNodeList nl = xd.SelectNodes("/wordlist/word"); foreach (XmlNode n in nl) { sw.Add(n.InnerText); } return sw; }
/// <summary> /// /// </summary> /// <param name="actionState"></param> /// <returns></returns> public List<UserStatistics> FindAllUserStatistics(ActionState actionState) { List<UserStatistics> userStattisticsList = new List<UserStatistics>(); IEnumerable<BsonValue> userNameList = FindAUsersID(actionState); for (int i = 0; i < userNameList.ToArray<BsonValue>().Count(); i++) { UserStatistics userStatistic = new UserStatistics(); userStatistic.Name = userNameList.ToArray<BsonValue>()[i].AsString; userStatistic.Count = FindTwitterCountByName(userStatistic.Name, actionState); userStattisticsList.Add(userStatistic); } return userStattisticsList; }
/// <summary> /// Converts XML to a new Geometry /// </summary> /// <param name="geometry">XML to convert</param> /// <returns>Geometry containing info from XML</returns> public Geometry CreateGeometry(XElement geometry) { if (geometry == null) { return null; } List<Coordinate> coords = new List<Coordinate>(); if (geometry.Element("coordinates") == null) { XNamespace geoRss = "http://www.georss.org/georss"; if (geometry.Element(geoRss + "polygon") != null) { var coordArr = geometry.Element(geoRss + "polygon").Value.Split(' '); for (int lat = Coordinate.LatitudePos, lon = Coordinate.LongitudePos; lon < coordArr.Length; lat+=2, lon += 2) { coords.Add( new Coordinate { Latitude = double.Parse(coordArr[lat]), Longitude = double.Parse(coordArr[lon]) }); } } } else { var coordinate = new Coordinate(); coords = (from coord in geometry.Element("coordinates").Element("item").Elements("item") select coordinate.CreateCoordinate(coord)) .ToList(); } return new Geometry { Type = geometry.Element("type") == null ? string.Empty : geometry.Element("type").Value, Coordinates = coords }; }
public async Task<IActionResult> Tweets(string screenName) { var model = new List<TweetViewModel>(); List<Status> statuses = await twitterService.GetUserTweetsAsync(screenName); foreach (var status in statuses) { var tweet = new TweetViewModel { TweetId = status.StatusID, TweetedOn = status.CreatedAt, InReplyToScreenName = status.InReplyToScreenName, Text = status.Text, Url = "https://twitter.com/" + status.ScreenName + "/status/" + status.StatusID }; model.Add(tweet); } return View("Index", model); }
// GET api/UpdateTweets public async Task<string> Get() { //Services.Log.Info("Hello from custom controller!"); var dbCtx = new MobileServiceContext(); long lastTweetId = 0; var t = dbCtx.Tweets.OrderByDescending(x => x.Date).ToList().Select(x => new { StatusId = x.StatusId }).FirstOrDefault(); if (t != null) { lastTweetId = t.StatusId; } var statuses = await GetLatestsTwittersWithHashtag("mobilecloudhackday", lastTweetId); var newTweets = new List<Tweet>(); foreach (var status in statuses) { var twt = new Tweet() { Id = Guid.NewGuid().ToString(), StatusId = (long)status.StatusID, Text = status.Text, Date = status.CreatedAt, User = status.User.Name, UserId = status.User.ScreenNameResponse, UserImageUri = status.User.ProfileImageUrl }; dbCtx.Tweets.Add(twt); newTweets.Add(twt); } await dbCtx.SaveChangesAsync(); await NotifyPush(newTweets); return "Ok"; }
public IList<Tweet> GetLatestTweets(int count) { var twitterContext = new TwitterContext(Authorize()); var tweets = new List<Tweet>(); var statusTweets = from tweet in twitterContext.Status where tweet.Type == StatusType.User && tweet.ScreenName == _twitterAccount && tweet.IncludeContributorDetails == true && tweet.Count == 10 && tweet.IncludeEntities == true select tweet; foreach (var statusTweet in statusTweets) { tweets.Add(Tweet.Create(statusTweet.User.ProfileImageUrl, statusTweet.User.ScreenName, GetTweetMediaUrl(statusTweet), statusTweet.Text)); } return tweets; }
public IEnumerable<TwitterSearchResult> Search(string searchText) { IList<TwitterSearchResult> foundTweets = new List<TwitterSearchResult>(); try { var queryResults = from search in TwitterCtx.Search where search.Type == SearchType.Search && search.Query == searchText select search; var queryResult = queryResults.SingleOrDefault(); foreach (var entry in queryResult.Entries) { var statusID = entry.ID.Substring(entry.ID.LastIndexOf(":") + 1); var status = (from tweet in twitterCtx.Status where tweet.Type == StatusType.Show && tweet.ID == statusID select tweet) .SingleOrDefault(); TwitterSearchResult foundTweet = new TwitterSearchResult() { UserName = "******" + status.User.Identifier.ScreenName, ProfileImageUrl = status.User.ProfileImageUrl, TweetText = status.Text, DateTime = status.CreatedAt.ToLongDateString() + " " + status.CreatedAt.ToLongTimeString(), Source = "via: "+status.Source }; foundTweets.Add(foundTweet); } } catch (TargetInvocationException ex) { MessageBox.Show("Error Querying Twitter: " + ex.InnerException.Message ); } return foundTweets; }
public IList<Feed> GetFeed(FeedModel request) { var result = new List<Feed>(); var user = repository.AsQueryable<Sociopath.DataEntities.Entities.User>().FirstOrDefault(x => x.Id == request.UserId); if (user == null || user.TwitterToken == null || user.TwitterSecret == null) { return result; } var auth = new SingleUserAuthorizer { CredentialStore = new InMemoryCredentialStore { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, OAuthToken = user.TwitterToken, OAuthTokenSecret = user.TwitterSecret } }; var twitterCtx = new TwitterContext(auth); var tweets = twitterCtx.Status.Where(tweet => tweet.Type == StatusType.User).ToList(); foreach (Status tweet in tweets) { Feed feedItem = repository.AsQueryable<Feed>().FirstOrDefault(x => x.TwitterExternalId == tweet.StatusID.ToString()) ?? new Feed(); feedItem.TwitterExternalId = tweet.StatusID.ToString(); feedItem.Message = tweet.Text; feedItem.Time = tweet.CreatedAt; repository.Save(feedItem); result.Add(feedItem); } repository.Commit(); return result; }
public async Task OpenTwitterConnection(string findString, int findLimit) { var auth = new SingleUserAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = App.consumerKey, ConsumerSecret = App.consumerSecret, AccessToken = App.accessToken, AccessTokenSecret = App.acessTokenSecret } }; TwitterContext twitterCtx = new TwitterContext(auth); Search searchResponse = await ( from search in twitterCtx.Search where search.Type == SearchType.Search && search.Query == findString && search.Count == findLimit && search.ResultType == ResultType.Recent select search ).SingleOrDefaultAsync(); if (searchResponse != null && searchResponse.Statuses != null) { this.tweetList = new List<NBATeamTweet>(); List<Status> searchResults = searchResponse.Statuses.ToList(); foreach (var tweet in searchResults) { tweet.IncludeRetweets = false; tweet.IncludeUserEntities = true; tweet.User.ShowAllInlineMedia = true; tweet.User.ImageSize = ProfileImageSize.Normal; tweetList.Add(new NBATeamTweet() { tweetUser = tweet.User.ScreenNameResponse , tweetContent = tweet.Text, tweetImage = tweet.User.ProfileImageUrl }); } } }
private async Task<IDialog> GetVkDialogWithFriend(DataIUser user, IUser friend) { IDialog dialog = null; try { Account acc = Account.Deserialize(user.SerializeInfo.ToString()); this.StartRequest(); var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/messages.getHistory"), null, acc); request.Parameters.Add("user_id", friend.Uid); request.Parameters.Add("count", "200"); var res = await request.GetResponseAsync(); var responseText = res.GetResponseText(); var msg = JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.VkMessagesResponse>(responseText); msg.Response.RemoveAt(0); IList<XamarinSocialApp.Droid.Data.VkData.MessageInDialog> msg1 = new List<XamarinSocialApp.Droid.Data.VkData.MessageInDialog>(); foreach (var item in msg.Response) { msg1.Add(JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.MessageInDialog>(item.ToString())); } IList<IMessage> messages = new List<IMessage>(); foreach (var item in msg1) { messages.Add(new DataMessage() { Content = item.Body, Sender = item.UserId == user.Uid ? user : friend }); } dialog = new XamarinSocialApp.UI.Data.Implementations.Entities.Databases.Dialog(user, messages); } catch (Exception) { } return dialog; }
private async Task<IDialog> GetTwitterDialogWithFriend(DataIUser user, DataIUser friend) { IDialog dialog = null; IUser userInDialog = null; IList<IMessage> messages = new List<IMessage>(); try { TwitterContext context = this.GetTwitterContext(user.SerializeInfo); var receivedMessages = await (from dm in context.DirectMessage where dm.Type == DirectMessageType.SentTo select dm).OrderByDescending(x => x.CreatedAt) .ToListAsync(); var sentMessages = await (from dm in context.DirectMessage where dm.Type == DirectMessageType.SentBy select dm).OrderByDescending(x => x.CreatedAt) .ToListAsync(); foreach (var message in receivedMessages) { if (message.SenderID.ToString() == friend.Uid) { userInDialog = new User() { FirstName = message.Sender.ScreenNameResponse }; messages.Add(new DataMessage() { Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString() }); } } foreach (var message in sentMessages) { if (message.RecipientID.ToString() == friend.Uid) { userInDialog = new User() { FirstName = message.Sender.ScreenNameResponse }; messages.Add(new DataMessage() { Content = message.Text, Sender = userInDialog, DateMessage = message.CreatedAt.ToString() }); } } messages = messages.OrderByDescending(x => x.DateMessage).ToList(); dialog = new XamarinSocialApp.UI.Data.Implementations.Entities.Databases.Dialog(user, messages); } catch (Exception) { } return dialog; }
private static async Task<IEnumerable<DataIUser>> GetUserVkFriends(DataIUser user) { IList<DataIUser> friends = new List<DataIUser>(); try { Account acc = Account.Deserialize(user.SerializeInfo.ToString()); var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/friends.get"), null, acc); request.Parameters.Add("fields", "nickname,photo_200"); request.Parameters.Add("order", "hints"); var res = await request.GetResponseAsync(); var responseText = res.GetResponseText(); var listFriendsIds = JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.VkUsers>(responseText); foreach (var friend in listFriendsIds.response) { friends.Add(new DataUser() { UserPhoto = friend.photo_200, FirstName = friend.first_name, LastName = friend.last_name, SerializeInfo = user.SerializeInfo, Uid = friend.uid }); } } catch (Exception) { } return friends; }
public async Task<IEnumerable<DataIUser>> GetUserTwitterFriends(DataIUser user) { IList<DataIUser> friends = new List<DataIUser>(); try { TwitterContext context = this.GetTwitterContext(user.SerializeInfo); var friendship = await (from friend in context.Friendship where friend.Type == FriendshipType.FollowersList && friend.UserID == user.Uid select friend) .SingleOrDefaultAsync(); if (friendship != null && friendship.Users != null) friendship.Users.ForEach(friend => friends.Add(new DataUser() { UserPhoto = friend.ProfileImageUrl.Replace("normal", "bigger"), FirstName = friend.ScreenNameResponse, Uid = friend.UserIDResponse, SerializeInfo = user.SerializeInfo, SocialNetwork = user.SocialNetwork })); } catch (Exception) { } return friends; }
private static async Task<IEnumerable<IDialog>> GetVkDialogs(DataIUser user) { IList<IDialog> dialogs = new List<IDialog>(); try { Account acc = Account.Deserialize(user.SerializeInfo.ToString()); var request = new OAuth2Request("GET", new Uri("https://api.vk.com/method/messages.getDialogs"), null, acc); request.Parameters.Add("count", "200"); request.Parameters.Add("v", "5.37"); var res = await request.GetResponseAsync(); var responseText = res.GetResponseText(); var msg = JsonConvert.DeserializeObject<XamarinSocialApp.Droid.Data.VkData.VkDialogsResponse>(responseText); foreach (var item in msg.Response.Messages) { IUser userDialog = new User() { Uid = item.Message.UserId, SerializeInfo = user.SerializeInfo }; DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); string dateMessage = start.AddSeconds(item.Message.DateMessage).ToLocalTime().ToString(); //var userDialog = await GetUserInfoRequest(item.Message.UserId, acc, socialNetwork); dialogs.Add(new DataDialogs(userDialog, new List<IMessage>() { new DataMessage() { Content = item.Message.Body, DateMessage = dateMessage } })); } } catch (Exception) { } return dialogs; }
public async Task<IEnumerable<IDialog>> GetTwitterDialogs(DataIUser user) { IList<IDialog> dialogs = new List<IDialog>(); try { TwitterContext context = this.GetTwitterContext(user.SerializeInfo); var twitterDialogs = await (from dm in context.DirectMessage where dm.Type == DirectMessageType.SentTo select dm) .ToListAsync(); foreach (var msg in twitterDialogs) { IUser userDialog = new User() { Uid = msg.SenderID.ToString(), FirstName = msg.SenderScreenName, SerializeInfo = user.SerializeInfo, SocialNetwork = user.SocialNetwork }; dialogs.Add(new DataDialogs(userDialog, new List<IMessage>() { new DataMessage() { Content = msg.Text, DateMessage = msg.CreatedAt.ToString() } })); } } catch (Exception) { } return dialogs; }
static void ConditionalSearchDemo(TwitterContext twitterCtx) { const string TwitterSearchGeocodeFormat = "{0},{1},{2}"; string query = "Twitter"; string language = null; string locale = null; string latitude = "37.781157"; string longitude = "-122.398720"; uint radius = 1; string radiusUnitType = "mi"; Type searchType = typeof(Search); ParameterExpression srch = Expression.Parameter(searchType, "srch"); var predicates = new List<Expression>(); if (!string.IsNullOrWhiteSpace(query)) { predicates.Add( Expression.Equal( Expression.Property(srch, "Query"), Expression.Constant(query))); } if (!string.IsNullOrWhiteSpace(language)) { predicates.Add( Expression.Equal( Expression.Property(srch, "SearchLanguage"), Expression.Constant(language))); } if (!string.IsNullOrWhiteSpace(locale)) { predicates.Add( Expression.Equal( Expression.Property(srch, "Locale"), Expression.Constant(locale))); } if (!string.IsNullOrWhiteSpace(longitude) && !string.IsNullOrWhiteSpace(latitude) && radius > 0) { var radiusString = string.Format("{0}{1}", radius, radiusUnitType.ToString().ToLower()); var geoCodeParameter = String.Format(TwitterSearchGeocodeFormat, latitude, longitude, radiusString); predicates.Add( Expression.Equal( Expression.Property(srch, "GeoCode"), Expression.Constant(geoCodeParameter))); } BinaryExpression expr = Expression.Equal( Expression.Property(srch, "Type"), Expression.Constant(SearchType.Search)); predicates.ForEach(pred => expr = Expression.AndAlso(expr, pred)); var searchLambda = Expression.Lambda(expr, srch) as Expression<Func<Search, bool>>; var response = twitterCtx.Search .Where(searchLambda) .SingleOrDefault(); Console.WriteLine("\nQuery: {0}\n", response.SearchMetaData.Query); response.Statuses.ForEach(entry => Console.WriteLine( "ID: {0, -15}, Source: {1}\nContent: {2}\n", entry.StatusID, entry.Source, entry.Text)); }
private async void StartRequestSequence() { var companymash = CompanyFor.Text.ToLower(); var companiesList = new List<string>(); if (companymash.Contains("+")) { foreach (var company in companymash.Split('+')) { companiesList.Add(company); } } else { companiesList.Add(companymash); } FadeResultsOut.Begin(); _currentResultItems.Clear(); //empty the bottle, reset companies var _tempCurrentResultItems = new List<SummaryReturn.Root>(); var _tempCurrentResultItem = new SummaryReturn.Root(); foreach (var company in companiesList) { _tempCurrentResultItem = (await mdc.Services.ApiInteract.GetSummaryDecoded(company))[0]; //just grab first copy of the company, no dupes. _tempCurrentResultItem.tweets_popular = new List<SummaryReturn.Tweet>(); if (_areWeTwitAuthed) { var tweetObjects = await TwitterInteract.Search(_auth, company, ResultType.Popular); //grab tweets foreach (var tweet in tweetObjects.Statuses) //mash tweets into the root article object { _tempCurrentResultItem.tweets_popular.Add(new SummaryReturn.Tweet { text = tweet.Text, timestamp = tweet.CreatedAt, username = tweet.User.Name }); } } else { Debug.WriteLine("Error, Still Authorising with TW"); _tempCurrentResultItem.tweets_popular.Add(new SummaryReturn.Tweet { text = "Still waiting for Token from Twitter", timestamp = DateTime.Now, username = "******" }); } _tempCurrentResultItems.Add(_tempCurrentResultItem); //mash back together into one list of above } foreach (var item in _tempCurrentResultItems) //strip out nulls { if (item.mission_statement_investigator == null) { item.mission_statement_investigator = "Not Verified!"; } if (item.mission_statement_proof == null) { item.mission_statement_proof = "N/A"; } //remove from view? } //TextBlockDump.Text = string.Concat("RAW Json output:\n", await mdc.Services.ApiInteract.GetSummaryRaw(company.Split('+')[0])); _currentResultItems = _tempCurrentResultItems; ResultItemsControl.ItemsSource = CurrentResultItems; FadeResultsIn.Begin(); }
void DBWrite(object sender, DoWorkEventArgs args) { //Check rate limit DateTime writeTime = DateTime.Now; int maxWrites = (int)Math.Ceiling(RateLimitPerMinute * (writeTime - _lastDBWrite).TotalMinutes); _lastDBWrite = writeTime; int discardedCount = 0; List<string> tweets = new List<string>(); while (_tweetQueue.Count > 0) { string tweet = _tweetQueue.Dequeue(); if (tweets.Count < maxWrites) tweets.Add(tweet); else discardedCount++; } if (discardedCount > 0) Console.WriteLine("Rate limited: Discarding " + discardedCount + " tweets (saving " + tweets.Count + ")"); if (tweets.Count == 0) return; MySqlConnection connection = null; try { connection = new MySqlConnection(_connectionString); connection.Open(); _dbFail = false; using (MySqlCommand command = connection.CreateCommand()) { SetInsertStatement(command, tweets); try { Helpers.RunSqlStatement(Name, command); } catch (MySqlException e) { command.Cancel(); command.Dispose(); throw e; } } } catch (Exception e) { if (_dbFail) { Thread.Sleep(20000); } else { if (e.InnerException is System.Net.Sockets.SocketException) { Output.Print(Name, "Failed to connect to database:" + Environment.NewLine + e); _dbFail = true; } else { Output.Print(Name, "Exception when inserting tweets:" + Environment.NewLine + e); } } } finally { try { connection.Close(); } catch (Exception e) { Output.Print(Name, "Exception when trying to close DB connection:" + Environment.NewLine + e); } } }
private void GetTwitter() { // De beoordeling van dit onderdeel is afhankelijk van // - Het aantal tweets in de afgelopen 7 dagen, 3+ keer is maximaal 10, 2 keer is maximaal 8, 1 keer is maximaal 6, 0 keer is maximaal 4. // - Het aantal volgers van het account tegenover het aantal tweets. 50-75% is 2 punten aftrek, 33-50% is 3 punten aftrek, 10-33% is 4 punten aftrek, 0-10% is 5 punten aftrek. // - Het aantal gebruikers dat het account volgt tegenover het aantal volgers. Wanneer het aantal volgend 75+% is van aantal volgers: 2 punten aftrek. var url = Session["MainUrl"].ToString(); Debug.WriteLine("GetTwitter <<< "); var screennameList = new List<string>(); var rating = 1.0m; var apiKey = System.Web.Configuration.WebConfigurationManager.AppSettings["GoogleAPI"]; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&key=" + apiKey + "&rsz=8&q=twitter%20" + url); // Additional parameters // &rsz=[1-8] resultSize can be 1 through 8, currently using 8 // &start=[x] Indicate where to start searching request.UserAgent = Session["userAgent"].ToString(); request.Headers.Add("Accept-Language", "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4"); // Get the response. HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Get the stream containing content returned by the server. Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. var reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); JObject googleSearch = JObject.Parse(responseFromServer); IList<JToken> results = googleSearch["responseData"]["results"].Children().ToList(); var isTwitterfound = false; if (results.Count != 0) { foreach (JToken item in results) { var screenName = SliceScreenName(item["unescapedUrl"].ToString()); if (screenName != "") { screennameList.Add(screenName); Debug.WriteLine(screenName + " aan lijst toegevoegd!"); } } foreach (var screenName in screennameList) { if (IsTwitter(screenName)) { Debug.WriteLine(screenName + " gevonden via Google!"); isTwitterfound = true; rating = GetTwitterRating(screenName); break; } } } // If !isTwitterfound { doorzoek pagina op aanwezigheid twitter.com mbv agility pack if (!isTwitterfound) { var screenNames = GetScreenNamesFromPage(url); if (screenNames.Count > 0) { foreach (var screenName in screenNames) { if (IsTwitter(screenName)) { Debug.WriteLine(screenName + " gevonden via pagina!"); rating = GetTwitterRating(screenName); isTwitterfound = true; break; } } } } if (!isTwitterfound) { rating = 0.0m; message += "<div class='alert alert-danger col-md-12 col-lg-12 col-xs-12 col-sm-12' role='alert'>" + "<i class='glyphicon glyphicon-alert glyphicons-lg messageIcon'></i>" + "<span class='messageText'> Er is geen Twitter account gevonden die geassocieerd is met deze website. Zorg ervoor dat de URL van uw pagina in uw Twitter-profiel staat</span></div>"; } twitterResults.InnerHtml = message; decimal rounded = decimal.Round(rating, 1); TwitterRating.InnerHtml = rounded.ToString(); var temp = (decimal)Session["RatingUx"]; Session["RatingUx"] = rounded + temp; temp = (decimal)Session["RatingMarketing"]; Session["RatingMarketing"] = rounded + temp; Session["TwitterRating"] = rounded; Debug.WriteLine("Rounded = " + rounded); SetRatingDisplay(rating); }
/// <summary> /// Get a list of screen names found on a page /// </summary> /// <param name="url">Page to check for Facebook link</param> /// <returns>List of possible screen names found on page</returns> private List<string> GetScreenNamesFromPage(string url) { Debug.WriteLine("GetScreenNamesFromPage <<< "); var screenNames = new List<string>(); try { var webget = new HtmlWeb(); var doc = webget.Load(url); if (doc.DocumentNode.SelectNodes("//a[@href]") != null) { foreach (var node in doc.DocumentNode.SelectNodes("//a[@href]")) { if (node.Attributes["href"].Value.Contains("twitter.com")) { var temp = SliceScreenName(node.Attributes["href"].Value); Debug.WriteLine(temp + " aan lijst toevoegen!"); if (temp != "") screenNames.Add(temp); } } } } catch (WebException) { } return screenNames; }
public async Task<ActionResult> TweetAsync(LoadUserViewModel user) { if (!ModelState.IsValid) { return View(user); } //load OAuth credentials var auth = new MvcAuthorizer { CredentialStore = new SessionStateCredentialStore() }; var ctx = new TwitterContext(auth); Friendship friendship; long cursor = -1; List<string> urls = new List<string>(); List<int> counts = new List<int>(); // load profile picture urls and tweets count using linq2twitter try { if (user.size < 24 || user.size > 2000) throw new Exception("Size out of bounds. Min size: 24, Max size: 2000"); do { friendship = await (from friend in ctx.Friendship where friend.Type == FriendshipType.FriendsList && friend.ScreenName == user.Text.Trim() && friend.Cursor == cursor select friend).SingleOrDefaultAsync(); if (friendship != null && friendship.Users != null && friendship.CursorMovement != null) { cursor = friendship.CursorMovement.Next; friendship.Users.ForEach(friend => { urls.Add(friend.ProfileImageUrl.Replace("normal","bigger")); counts.Add(friend.StatusesCount); } ); } } while (cursor != 0); // generate image collage from urls ViewBag.ImageData = ImageProcessing(urls, user.size, counts, user.Resize); // genrate status response var responseTweetVM = new LoadUserViewModel { Text = user.Text, size = user.size, Response = "Collage loaded" }; return View(responseTweetVM); } catch (Exception ex) { ViewBag.errors = ex.Message.Replace("page", "user"); } return View(); }
private Task<StreamContent> StartTwitterUserStream(TwitterContext context) { return Task<StreamContent>.Factory.StartNew(() => { bool firstWait = true; StreamContent sc = null; hadUserStreamFailure = false; context.Log = log; try { context.UserStream .Where(s => s.Type == LinqToTwitter.UserStreamType.User) .Select(strm => strm) .StreamingCallback(strm => { try { lastCallBackTimeUserStream = DateTime.Now; sc = strm; if (strm != null) { if (strm.Status == TwitterErrorStatus.RequestProcessingException) { var wex = strm.Error as WebException; if (wex != null && wex.Status == WebExceptionStatus.ConnectFailure) { log.WriteLine("{0}: LinqToTwitter UserStream Connection Failure (UserStream)", DateTime.Now); hadUserStreamFailure = true; //Will Be Restarted By Processing Queue } } else if (!string.IsNullOrEmpty(strm.Content)) { var status = new Status(LitJson.JsonMapper.ToObject(strm.Content)); if (status != null && !string.IsNullOrEmpty(status.StatusID)) { var tweet = new Tweet(string.IsNullOrEmpty(status.RetweetedStatus.StatusID) ? status : status.RetweetedStatus); lock (queue_lock) { queue.Add(tweet); } log.WriteLine("{0}: Added Item to Queue (UserStream): {1}", DateTime.Now, tweet.TweetText); } else { //If you can handle friends we will look for them if (processingStep is ITweepProcessingStep) { var jsonDataFriends = LitJson.JsonMapper.ToObject(strm.Content) .FirstOrDefault(x => x.Key == "friends"); //If this is a friends collection update we will notify you if (!jsonDataFriends.Equals(default(KeyValuePair<string,LitJson.JsonData>)) && jsonDataFriends.Value != null && jsonDataFriends.Value.IsArray) { var friends = new List<LazyLoader<Tweep>>(); for (int i = 0; i < jsonDataFriends.Value.Count; i++) { friends.Add(TwitterModel.Instance.GetLazyLoadedTweep(jsonDataFriends.Value[i].ToString())); } (processingStep as ITweepProcessingStep).ProcessTweeps(friends); } else log.WriteLine("{0}: Unhandled Item in Stream (UserStream): {1}", DateTime.Now, strm.Content); } else log.WriteLine("{0}: Unhandled Item in Stream (UserStream): {1}", DateTime.Now, strm.Content); } } else log.WriteLine("{0}: Twitter Keep Alive (UserStream)", DateTime.Now); } else throw new ArgumentNullException("strm", "This value should never be null!"); } catch (Exception ex) { log.WriteLine("{0}: Error (UserStream): {1}", DateTime.Now, ex.ToString()); } }).SingleOrDefault(); } catch (Exception ex) { log.WriteLine("{0}: Error (UserStream): {1}", DateTime.Now, ex.ToString()); } while (sc == null) { if (firstWait) { log.WriteLine("{0}: Waiting On Twitter Connection (UserStream)", DateTime.Now); firstWait = false; } System.Threading.Thread.Sleep(1000); } log.WriteLine("{0}: Twitter Connection Established (UserStream)", DateTime.Now); return sc; }); }
public static List<Models.Location> SlimLocations(List<Models.Location> inList) { int Interval = inList.Count / (LocationHelper.maxLocations - 2); if (Interval < 2) { Interval = 2; } List<Models.Location> outList = new List<Models.Location>(); for (int i = 0; i < inList.Count; i += Interval) { outList.Add(inList[i]); } //always add the last value - map always updated then plus other things rely on it! outList.Add(inList.Last()); return outList; }