//*************************************************************************
        //  Constructor: TwitterNetworkAnalyzerBase()
        //
        /// <summary>
        /// Initializes a new instance of the <see
        /// cref="TwitterNetworkAnalyzerBase" /> class.
        /// </summary>
        //*************************************************************************

        public TwitterNetworkAnalyzerBase()
        {
            m_oTwitterUtil             = null;
            m_oTwitterStatusTextParser = new TwitterStatusTextParser();

            AssertValid();
        }
Beispiel #2
0
        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();
 }
Beispiel #5
0
        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);
            }
        }