Exemplo n.º 1
0
            //流速を求める処理
            private int getFlowSpeed(PrepareState ps)
            {
                //初期化
                SearchResult   result       = null;
                DateTimeOffset oldTimeStamp = new DateTimeOffset();

                try
                {
                    //検索実行
                    result = ps.getTokens().Search.Tweets(count => (int)ps.getTweetNum(), q => ps.getKeyword());

                    //末尾ツイートの時刻を取得
                    oldTimeStamp = getTimeStamp(result, ps);
                }
                catch (Exception)
                {
                    //取得件数が0件の場合は-1を返す
                    return(-1);
                }

                //末尾ツイートのUNIXタイムを取得
                long unixTimeEnd = getUnixTimeEnd(oldTimeStamp);

                //現在のUNIXタイムを取得
                long unixTimeNow = getUnixTimeNow();

                //現在時刻と古いツイートの時刻の差分を求める
                long sec = unixTimeNow - unixTimeEnd;

                //流速計算(30分または1時間あたり)
                double flow = (ps.getTweetNum() / (double)sec) * ps.getPeriod();

                //流速を返す
                return((int)flow);
            }
Exemplo n.º 2
0
            DateTimeOffset getTimeStamp(SearchResult result, PrepareState ps)
            {
                //謎の初期化
                DateTimeOffset oldTweetTimeStamp = new DateTimeOffset();
                int            tweetCnt          = 0;

                //ツイートだけ時刻を取得(取得漏れを考慮して最後尾は取得しない)
                foreach (var tweet in result)
                {
                    oldTweetTimeStamp = tweet.CreatedAt;
                    tweetCnt++;
                }

                //ツイート取得率算出のため、ツイート数をインスタンスへセット
                ps.calcPercentage(tweetCnt, (int)ps.getTweetNum());

                //1件もツイートが取得できなかった場合、Exceptionを投げる
                if (tweetCnt == 0)
                {
                    throw new Exception();
                }

                return(oldTweetTimeStamp);
            }