//表示するメッセージ内容の作成処理 private StringBuilder createDispMsg(PrepareState ps, int flowSpeed) { StringBuilder sb = new StringBuilder(); sb.Append("\""); sb.Append(ps.getKeyword()); sb.Append("\"の流速が閾値を超過。\n流速: "); sb.Append(flowSpeed); sb.Append(" tweet/hour\n"); sb.Append("取得率: "); sb.Append(ps.getPercentage()); sb.Append("%"); return(sb); }
//流速を求める処理 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); }