Exemple #1
0
        // 指定した日時とその前日の両方にデータがある場合のみ、
        // 当日マイナス前日のデータを取得。それ以外の場合は 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);
        }
Exemple #2
0
        // 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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 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);
 }
Exemple #5
0
        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");
            }
        }
Exemple #6
0
        // 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);
        }
Exemple #7
0
        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];
            }
        }