// 指定した日時とその前日の両方にデータがある場合のみ、 // 当日マイナス前日のデータを取得。それ以外の場合は 0 ポイントとなる。 public RankPoint GetRankPointOfOneDay(DateTime date) { DateTime prev_one_day = date.AddDays(-1.0); RankPoint today = new RankPoint(); RankPoint yesterday = new RankPoint(); today.view = -1; yesterday.view = -1; for (int i = 0; i < val_list_.Count; ++i) { if (val_list_[i].getting_date.Date == date.Date) { today = val_list_[i]; } else if (val_list_[i].getting_date.Date == prev_one_day.Date) { yesterday = val_list_[i]; } } RankPoint point = new RankPoint(); if (today.view == -1 || yesterday.view == -1) { point.view = 0; point.res = 0; point.mylist = 0; } else { point.view = today.view - yesterday.view; point.res = today.res - yesterday.res; point.mylist = today.mylist - yesterday.mylist; } return(point); }
// 1時間の集計 public RankPoint GetRankValWithOneHourEval() { RankPoint rank_value = new RankPoint(); rank_value.view = 0; rank_value.res = 0; rank_value.mylist = 0; if (val_list_.Count >= 2) { RankPoint prev1 = val_list_[val_list_.Count - 1]; RankPoint prev2 = val_list_[val_list_.Count - 2]; rank_value.view = prev1.view - prev2.view; rank_value.res = prev1.res - prev2.res; rank_value.mylist = prev1.mylist - prev2.mylist; } else if (val_list_[0].getting_date.Hour == 19) { RankPoint prev1 = val_list_[val_list_.Count - 1]; if (prev1.view < 80000) { rank_value.view = prev1.view; rank_value.res = prev1.res; rank_value.mylist = prev1.mylist; } } return(rank_value); }
public static RankPoint operator -(RankPoint lhs, RankPoint rhs) { RankPoint point = new RankPoint(); point.view = lhs.view - rhs.view; point.res = lhs.res - rhs.res; point.mylist = lhs.mylist - rhs.mylist; return(point); }
public void AddRankVal(RankPoint point) { for (int i = 0; i < val_list_.Count; ++i) { if (point.getting_date.Equals(val_list_[i].getting_date)) { return; } } val_list_.Add(point); }
public void CalculateSum(InputOutputOption iooption, RankingMethod ranking_method) { RankFile rank_file = iooption.GetRankFile(); msgout_.Write("------------------------------------------\r\n"); msgout_.Write("内訳: 再生数, コメント数, マイリスト数, ポイント\r\n"); RankPoint point = new RankPoint(); point.view = point.res = point.mylist = 0; List <Video> video_list = rank_file.GetVideoList(); List <int> view_list = new List <int>(); List <int> res_list = new List <int>(); List <int> mylist_list = new List <int>(); List <int> point_list = new List <int>(); for (int i = 0; i < video_list.Count; ++i) { point += video_list[i].point; view_list.Add(video_list[i].point.view); res_list.Add(video_list[i].point.res); mylist_list.Add(video_list[i].point.mylist); point_list.Add(video_list[i].point.CalcScore(ranking_method)); } msgout_.Write("合計: " + point.view + ", " + point.res + ", " + point.mylist + ", " + point.CalcScore(ranking_method) + "\r\n"); if (video_list.Count > 0) { msgout_.Write("平均: " + ((double)point.view / video_list.Count).ToString("0.00") + ", " + ((double)point.res / video_list.Count).ToString("0.00") + ", " + ((double)point.mylist / video_list.Count).ToString("0.00") + ", " + ((double)point.CalcScore(ranking_method) / video_list.Count).ToString("0.00") + "\r\n"); msgout_.Write("中央値: " + CalculateMedian(view_list) + ", " + CalculateMedian(res_list) + ", " + CalculateMedian(mylist_list) + ", " + CalculateMedian(point_list) + "\r\n"); msgout_.Write("最大値: " + view_list[view_list.Count - 1] + ", " + res_list[res_list.Count - 1] + ", " + mylist_list[mylist_list.Count - 1] + ", " + point_list[point_list.Count - 1] + "\r\n"); msgout_.Write("最小値: " + view_list[0] + ", " + res_list[0] + ", " + mylist_list[0] + ", " + point_list[0] + "\r\n"); } }
// is_one_day : 評価期間が1日かどうか(false なら投稿日から現在) public RankPoint GetNewEvalRankVal(bool is_one_day, DateTime current) { RankPoint rank_value = new RankPoint(); rank_value.view = 0; rank_value.res = 0; rank_value.mylist = 0; if (is_one_day) { if (val_list_.Count >= 2) { RankPoint prev1 = val_list_[val_list_.Count - 1]; RankPoint prev2 = val_list_[val_list_.Count - 2]; DateTime dt2 = prev2.getting_date.AddDays(1.0); if (IsEqualsDate(prev1.getting_date, current) && IsEqualsDate(dt2, current)) { rank_value.view = prev1.view - prev2.view; rank_value.res = prev1.res - prev2.res; rank_value.mylist = prev1.mylist - prev2.mylist; } } } else { if (val_list_.Count >= 1) { RankPoint prev1 = val_list_[val_list_.Count - 1]; if (IsEqualsDate(prev1.getting_date, current)) { rank_value.view = prev1.view; rank_value.res = prev1.res; rank_value.mylist = prev1.mylist; } } } return(rank_value); }
public void ParseVideo(string str) { string[] splitter1 = { delimiter1_ }; string[] splitter2 = { delimiter2_ }; string[] sArray = str.Split(splitter1, StringSplitOptions.None); video_id = sArray[0]; title = sArray[1]; submit_date = NicoUtil.StringToDate(sArray[2]); string[] rankArray; tag_set.Parse(sArray[3]); rankArray = sArray[4].Split(splitter2, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < rankArray.Length; ++i) { RankPoint point = new RankPoint(); point.Parse(rankArray[i]); val_list_.Add(point); } if (sArray.Length >= 6) { length = sArray[5]; } }