//************************************************************************* // Constructor: TwitterNetworkAnalyzerBase() // /// <summary> /// Initializes a new instance of the <see /// cref="TwitterNetworkAnalyzerBase" /> class. /// </summary> //************************************************************************* public TwitterNetworkAnalyzerBase() { m_oTwitterUtil = null; m_oTwitterStatusTextParser = new TwitterStatusTextParser(); AssertValid(); }
AppendRepliesToAndMentionsEdgeXmlNodes ( GraphMLXmlDocument graphmlXmlDocument, IEnumerable <TwitterUser> twitterUsers, HashSet <String> uniqueScreenNames ) { Debug.Assert(graphmlXmlDocument != null); Debug.Assert(twitterUsers != null); Debug.Assert(uniqueScreenNames != null); // This method uses only one instance of TwitterStatusTextParser to // avoid making it repeatedly recompile all of its regular expressions. TwitterStatusTextParser twitterStatusTextParser = new TwitterStatusTextParser(); foreach (TwitterUser twitterUser in twitterUsers) { foreach (TwitterStatus twitterStatus in twitterUser.Statuses) { AppendRepliesToAndMentionsEdgeXmlNodes( graphmlXmlDocument, twitterStatusTextParser, uniqueScreenNames, twitterUser.ScreenName, twitterStatus); } } }
GetMentionsAndRepliesToScreenNames ( Dictionary <String, TwitterUser> userIDDictionary ) { Debug.Assert(userIDDictionary != null); HashSet <String> uniqueScreenNamesWhoTweetedSearchTerm = TwitterGraphMLUtil.TwitterUsersToUniqueScreenNames( userIDDictionary.Values); HashSet <String> uniqueMentionsAndRepliesToScreenNames = new HashSet <String>(); TwitterStatusTextParser twitterStatusTextParser = new TwitterStatusTextParser(); foreach (TwitterUser twitterUser in userIDDictionary.Values) { foreach (TwitterStatus twitterStatus in twitterUser.Statuses) { String repliesToScreenName; String [] uniqueMentionsScreenNames; twitterStatusTextParser.GetScreenNames(twitterStatus.Text, out repliesToScreenName, out uniqueMentionsScreenNames); if ( repliesToScreenName != null && !uniqueScreenNamesWhoTweetedSearchTerm.Contains( repliesToScreenName)) { uniqueMentionsAndRepliesToScreenNames.Add( repliesToScreenName); } foreach (String uniqueMentionsScreenName in uniqueMentionsScreenNames) { if (!uniqueScreenNamesWhoTweetedSearchTerm.Contains( uniqueMentionsScreenName)) { uniqueMentionsAndRepliesToScreenNames.Add( uniqueMentionsScreenName); } } } } return(uniqueMentionsAndRepliesToScreenNames.ToArray()); }
SetUp() { m_oTwitterStatusTextParser = new TwitterStatusTextParser(); }
AppendRepliesToAndMentionsEdgeXmlNodes ( GraphMLXmlDocument graphMLXmlDocument, TwitterStatusTextParser twitterStatusTextParser, HashSet <String> uniqueScreenNames, String screenName, TwitterStatus twitterStatus ) { Debug.Assert(graphMLXmlDocument != null); Debug.Assert(twitterStatusTextParser != null); Debug.Assert(uniqueScreenNames != null); Debug.Assert(!String.IsNullOrEmpty(screenName)); Debug.Assert(twitterStatus != null); String statusText = twitterStatus.Text; Boolean isReplyTo = false; Boolean isMentions = false; Debug.Assert(!String.IsNullOrEmpty(statusText)); String repliedToScreenName; String [] uniqueMentionedScreenNames; twitterStatusTextParser.GetScreenNames(statusText, out repliedToScreenName, out uniqueMentionedScreenNames); if (repliedToScreenName != null) { if ( repliedToScreenName != screenName && uniqueScreenNames.Contains(repliedToScreenName) ) { isReplyTo = true; AppendRepliesToAndMentionsEdgeXmlNode( graphMLXmlDocument, screenName, repliedToScreenName, RepliesToRelationship, twitterStatus); } } foreach (String mentionedScreenName in uniqueMentionedScreenNames) { if ( mentionedScreenName != screenName && uniqueScreenNames.Contains(mentionedScreenName) ) { isMentions = true; AppendRepliesToAndMentionsEdgeXmlNode( graphMLXmlDocument, screenName, mentionedScreenName, MentionsRelationship, twitterStatus); } } if (!isReplyTo && !isMentions) { // Append a self-loop edge to represent the tweet. AppendRepliesToAndMentionsEdgeXmlNode( graphMLXmlDocument, screenName, screenName, NonRepliesToNonMentionsRelationship, twitterStatus); } }