コード例 #1
0
        private RankingMethod GetRankingMethod()
        {
            HoseiKind hosei_kind = HoseiKind.Nothing;

            if (radioButtonHoseiVocaran.Checked)
            {
                hosei_kind = HoseiKind.Vocaran;
            }
            else if (radioButtonHoseiNicoran.Checked)
            {
                hosei_kind = HoseiKind.Nicoran;
            }
            SortKind sort_kind = SortKind.Nothing;

            if (radioButtonSortMylist.Checked)
            {
                sort_kind = SortKind.Mylist;
            }
            else if (radioButtonSortPoint.Checked)
            {
                sort_kind = SortKind.Point;
            }
            if (checkBoxFilter.Checked)
            {
                return(new RankingMethod(hosei_kind, sort_kind,
                                         (int)numericUpDownMylistRate.Value,
                                         true, nicorank_mgr_.GetPathMgr().GetFullPath(textBoxFilterPath.Text), checkBoxIsOutputFilteredVideo.Checked));
            }
            else
            {
                return(new RankingMethod(hosei_kind, sort_kind, (int)numericUpDownMylistRate.Value));
            }
        }
コード例 #2
0
 public RankingMethod(HoseiKind hosei_kind_a, SortKind sort_kind_a, int mylist_rate_a)
 {
     hosei_kind      = hosei_kind_a;
     sort_kind       = sort_kind_a;
     mylist_rate     = mylist_rate_a;
     is_using_filter = false;
     filter_filename = "";
 }
コード例 #3
0
 public RankingMethod(HoseiKind hosei_kind_a, SortKind sort_kind_a, int mylist_rate_a, bool is_using_filter_a,
                      string filter_filename_a, bool is_output_filtered_video_a)
 {
     hosei_kind               = hosei_kind_a;
     sort_kind                = sort_kind_a;
     mylist_rate              = mylist_rate_a;
     is_using_filter          = is_using_filter_a;
     filter_filename          = filter_filename_a;
     is_output_filtered_video = is_output_filtered_video_a;
 }
コード例 #4
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
        // 補正値を文字列にしたもの(小数第2位まで)を取得
        public string GetHoseiString(HoseiKind hosei_kind, int mylist_rate, int ketasuu, bool is_ceil)
        {
            double hosei = GetHosei(hosei_kind, mylist_rate);

            hosei = (double)((int)(hosei * Math.Pow(10, ketasuu) + (is_ceil ? 0.999999 : 0))) / Math.Pow(10, ketasuu);
            string format = "{0:0.";

            for (int i = 0; i < ketasuu; ++i)
            {
                format += "0";
            }
            format += "}";
            return(String.Format(format, hosei));
        }
コード例 #5
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
        // 補正値を取得
        public double GetHosei(HoseiKind hosei_kind, int mylist_rate)
        {
            switch (hosei_kind)
            {
            case HoseiKind.Vocaran:
                if (view + mylist == 0)
                {
                    return(0.01);
                }
                else if (view + res + mylist == 0)
                {
                    return(0.00);
                }
                else
                {
                    return((double)(view + mylist) / (view + res + mylist));
                }

            case HoseiKind.Nicoran:
                if (view + mylist == 0)
                {
                    return(0.1);
                }
                else if (view >= res)
                {
                    return(1.0);
                }
                else if (view + res + mylist * mylist_rate == 0)
                {
                    return(0.0);
                }
                else
                {
                    double value = (double)(view + view + mylist * mylist_rate) / (view + res + mylist * mylist_rate);
                    if (value < 0.1)
                    {
                        return(0.1);
                    }
                    else
                    {
                        return(value);
                    }
                }

            case HoseiKind.DailyVocaran:
            case HoseiKind.Nothing:
                return(1.0);
            }
            return(0.0);
        }
コード例 #6
0
        public void Save(string rank_filename, HoseiKind hosei_kind, int mylist_rate, IFilterManager filter)
        {
            StringBuilder buff_notfiltered = new StringBuilder();
            StringBuilder buff_filtered    = new StringBuilder();
            int           rank_notfiltered = 1;
            int           rank_filtered    = 1;

            for (int i = 0; i < video_list_.Count; ++i)
            {
                filter.DoEffect(video_list_[i]);
                if (filter.IsThrough(video_list_[i]))
                {
                    if (custom_format_.IsUsingCustomFormat())
                    {
                        buff_notfiltered.Append(custom_format_.VideoToString(video_list_[i], rank_notfiltered));
                    }
                    else
                    {
                        buff_notfiltered.Append(video_list_[i].ToStringWithRank(rank_notfiltered, hosei_kind, mylist_rate));
                    }
                    ++rank_notfiltered;
                    buff_notfiltered.Append("\r\n");
                }
                else
                {
                    if (custom_format_.IsUsingCustomFormat())
                    {
                        buff_filtered.Append(custom_format_.VideoToString(video_list_[i], rank_filtered));
                    }
                    else
                    {
                        buff_filtered.Append(video_list_[i].ToStringWithRank(rank_filtered, hosei_kind, mylist_rate));
                    }
                    ++rank_filtered;
                    buff_filtered.Append("\r\n");
                }
            }
            IJFile.Write(rank_filename, buff_notfiltered.ToString());

            if (filter.IsOutputFilteredVideo())
            {
                string rank_str = buff_filtered.ToString();
                if (rank_str != "")
                {
                    IJFile.Write(Path.GetDirectoryName(rank_filename) + "\\" + Path.GetFileNameWithoutExtension(rank_filename) +
                                 "_filter" + Path.GetExtension(rank_filename), rank_str);
                }
            }
        }
コード例 #7
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
 public string ToStringWithRank(int rank, HoseiKind hosei_kind, int mylist_rate)
 {
     if (status_ == Status.DELETED)
     {
         return(video_id + "\tDELETED");
     }
     else if (status_ == Status.NOT_FOUND)
     {
         return(video_id + "\tDELETED");
     }
     else if (status_ == Status.OTHER)
     {
         return(video_id + "");
     }
     else
     {
         StringBuilder buff = new StringBuilder();
         buff.Append(video_id);
         buff.Append("\t");
         buff.Append(rank.ToString());
         buff.Append("\t");
         buff.Append(IJStringUtil.ToStringWithComma(point.view));
         buff.Append("\t");
         buff.Append(IJStringUtil.ToStringWithComma(point.res));
         buff.Append("\t");
         buff.Append(IJStringUtil.ToStringWithComma(point.mylist));
         buff.Append("\t");
         buff.Append(point.GetHoseiString(hosei_kind, mylist_rate, 2, hosei_kind == HoseiKind.Nicoran));
         buff.Append("\t");
         buff.Append(point.GetMylistRateString());
         buff.Append("\t");
         buff.Append(IJStringUtil.ToStringWithComma(point.CalcScore(hosei_kind, mylist_rate)));
         buff.Append("\t");
         buff.Append(title);
         buff.Append("\t");
         buff.Append(NicoUtil.DateToString(submit_date));
         buff.Append("\t");
         buff.Append(video_id + ".png");
         buff.Append("\t");
         buff.Append(pname);
         buff.Append("\t");
         buff.Append(tag_set.ToString());
         return(buff.ToString());
     }
 }
コード例 #8
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
        // 総ポイント数を取得
        public int CalcScore(HoseiKind hosei_kind, int mylist_rate)
        {
            switch (hosei_kind)
            {
            case HoseiKind.Vocaran:
                // 補正値は小数第3位切り捨て
                return(view + res * (int)(GetHosei(hosei_kind, mylist_rate) * 100.0) / 100 + mylist * mylist_rate);

            case HoseiKind.Nicoran:
                // 補正値は小数第3位切り上げ
                return(view + res * (int)(GetHosei(hosei_kind, mylist_rate) * 100.0 + 0.999999) / 100 + mylist * mylist_rate);

            //// 補正値は小数第7位切り捨て(過去)
            //return view + (int)((long)res * (long)(GetHosei(hosei_kind, mylist_rate) * 1000000.0) / 1000000) + mylist * mylist_rate;
            case HoseiKind.DailyVocaran:     // 場当たり的対応。将来的には計算式をユーザがカスタマイズできるようにする
                return(view + Math.Min(res * 3, view) + mylist * mylist_rate);

            case HoseiKind.Nothing:
                return(view + res + mylist * mylist_rate);
            }
            return(-1);
        }
コード例 #9
0
        public string ToString(HoseiKind hosei_kind, int mylist_rate, IFilterManager filter)
        {
            StringBuilder buff_notfiltered = new StringBuilder();
            int           rank_notfiltered = 1;

            for (int i = 0; i < video_list_.Count; ++i)
            {
                filter.DoEffect(video_list_[i]);
                if (filter.IsThrough(video_list_[i]))
                {
                    if (custom_format_.IsUsingCustomFormat())
                    {
                        buff_notfiltered.Append(custom_format_.VideoToString(video_list_[i], rank_notfiltered));
                    }
                    else
                    {
                        buff_notfiltered.Append(video_list_[i].ToStringWithRank(rank_notfiltered, hosei_kind, mylist_rate));
                    }
                    ++rank_notfiltered;
                    buff_notfiltered.Append("\r\n");
                }
            }
            return(buff_notfiltered.ToString());
        }
コード例 #10
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
 public VideoScoreComparer(HoseiKind hosei_kind, int mylist_rate)
 {
     hosei_kind_  = hosei_kind;
     mylist_rate_ = mylist_rate;
 }