//------------------------------------------------------------- // 概要:スレッド一覧解析 // 詳細:subject.txtからスレッド一覧情報を作成する //------------------------------------------------------------- protected override List<ThreadInfo> AnalyzeSubjectText(string[] lines) { Logger.Instance.DebugFormat("AnalyzeSubjectText(lines:{0})", lines); List<ThreadInfo> threadList = new List<ThreadInfo>(); foreach (string line in lines) { // 行末はスルー if (String.IsNullOrEmpty(line)) continue; Regex regex = new Regex(@"(?<threadNo>[0-9]+)\.dat<>(?<threadTitle>.+)\((?<resCount>[0-9]+)\)"); Match match = regex.Match(line); // 正規表現がヒットしなければスルー if (match.Success == false) { continue; } // データ抽出 string threadNo = match.Groups["threadNo"].Value; string resCount = match.Groups["resCount"].Value; double days = BbsUtil.GetThreadSince(threadNo); ThreadInfo threadInfo = new ThreadInfo(BbsInfo) { ThreadNo = threadNo, ThreadTitle = match.Groups["threadTitle"].Value.Trim(), ResCount = int.Parse(resCount), ThreadSpeed = BbsUtil.GetThreadSpeed(days, resCount), ThreadSince = days }; threadList.Add(threadInfo); } // 1002レス以上のスレッドがあれば最大レス数を10000として扱う BbsInfo.ThreadStop = threadList.Any(x => x.ResCount >= 1002) ? 10000 : 1000; return threadList; }
//------------------------------------------------------------- // 概要:スレッド一覧解析 // 詳細:subject.txtからスレッド一覧情報を作成する //------------------------------------------------------------- protected override List<ThreadInfo> AnalyzeSubjectText(string[] lines) { Logger.Instance.DebugFormat("AnalyzeSubjectText(lines:{0})", lines); List<ThreadInfo> threadList = new List<ThreadInfo>(); foreach (string line in lines) { // 行末はスルー if (String.IsNullOrEmpty(line)) continue; Regex regex = new Regex(@"(?<threadNo>[0-9]+)\.cgi,(?<threadTitle>.+)\((?<resCount>[0-9]+)\)"); Match match = regex.Match(line); // 正規表現がヒットしなければスルー if (match.Success == false) { continue; } // データ抽出 string threadNo = match.Groups["threadNo"].Value; string resCount = match.Groups["resCount"].Value; double days = BbsUtil.GetThreadSince(threadNo); ThreadInfo threadInfo = new ThreadInfo { ThreadNo = threadNo, ThreadTitle = match.Groups["threadTitle"].Value.Trim(), ResCount = int.Parse(resCount), ThreadSpeed = BbsUtil.GetThreadSpeed(days, resCount), ThreadSince = days }; threadList.Add(threadInfo); } // 末尾を削除(不要なデータ) if (threadList.Count > 0) { threadList.RemoveAt(threadList.Count - 1); } return threadList; }