コード例 #1
0
        public void ParseCategoryFile()
        {
            string filename = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "category.txt");
            string str;

            if (File.Exists(filename))
            {
                str = IJFile.ReadUTF8(filename);
            }
            else
            {
                throw new FileNotFoundException("category.txt が存在しません。nicorank.exe を起動して category.txt を作成してください。");
            }

            string[] lines = IJStringUtil.SplitWithCRLF(str);

            for (int i = 1; i < lines.Length; ++i)
            {
                string[]     ar   = lines[i].Split('\t');
                CategoryItem item = new CategoryItem();
                item.id         = ar[0];
                item.short_name = ar[1];
                item.name       = ar[2];
                int[] page = new int[5];
                for (int j = 0; j < page.Length; ++j)
                {
                    page[j] = int.Parse(ar[3 + j]);
                }
                item.page = page;
                category_item_dic_.Add(item.name, item);
            }
        }
コード例 #2
0
        /// <summary>
        /// 指定された検索チケットの検索条件を取得する。
        /// </summary>
        /// <param name="ticket_id">検索条件を取得する検索チケットのID。</param>
        /// <returns>指定された検索チケットの検索条件。</returns>
        public static SearchingTagOption GetOption(string ticket_id)
        {
            string ticket_option_file = GetTicketOptionFile(ticket_id);
            string option_text        = IJFile.ReadUTF8(ticket_option_file);

            return(DeserializeSearchingOption(ticket_id, option_text));
        }
コード例 #3
0
        private void MakeUserFile()
        {
            string str = IJStringUtil.EncryptString(textBoxUser.Text, "dailyvocaran") + "\t" +
                         IJStringUtil.EncryptString(textBoxPassword.Text, "dailyvocaran");

            IJFile.Write(userdat_filename, str);
        }
コード例 #4
0
        public static List <Video> ParseRanking(string dir_name, DateTime getting_dt, ParseRankingKind kind)
        {
            string[]     files      = System.IO.Directory.GetFiles(dir_name);
            List <Video> video_list = new List <Video>();
            Dictionary <string, Video> video_dic = new Dictionary <string, Video>();

            for (int i = 0; i < files.Length; ++i)
            {
                int    t    = System.Environment.TickCount;
                string html = IJFile.ReadUTF8(files[i]);
                if (html.StartsWith("<?xml"))
                {
                    ParsePointRss(html, getting_dt, video_list, kind == ParseRankingKind.TotalPoint, false);
                }
                else
                {
                    switch (kind)
                    {
                    case ParseRankingKind.TermPoint:
                        ParseRankingTermPointHtml(html, getting_dt, video_list, video_dic);
                        break;

                    case ParseRankingKind.TotalPoint:
                        throw new InvalidOperationException("ランキングHTMLは全ポイント解析できません。");
                    }
                }
                System.Diagnostics.Debug.Write((System.Environment.TickCount - t).ToString() + ", ");
            }

            return(video_list);
        }
コード例 #5
0
        private bool CheckFileWrite()
        {
            string filename  = "";
            string test_text = "testtest";

            try
            {
                filename = IJFile.GetTemporaryFileName(Directory.GetCurrentDirectory(), "txt");
                IJFile.Write(filename, test_text);
                string content = IJFile.Read(filename);
                return(content == test_text);
            }
            catch (Exception)
            {
                return(false);
            }
            finally
            {
                try
                {
                    if (filename != "")
                    {
                        File.Delete(filename);
                    }
                }
                catch (Exception) { }
            }
        }
コード例 #6
0
        public void GetDetailInfoTest1()
        {
            string temp_directory_path = TestUtility.TestData[TestUtility.KEY_TEMP_DIRECTORY];
            string video_id            = TestUtility.TestData[TestUtility.KEY_VIDEO_ID];
            string video_title         = TestUtility.TestData[TestUtility.KEY_VIDEO_TITLE];

            TestUtility.EnsureLogin(network_);

            DirectoryInfo temp_directory = new DirectoryInfo(temp_directory_path);

            Assert.That(TestUtility.InitDirectory(temp_directory), Is.True, "GetDetailInfoTest1-1");

            string rank_file_path = Path.Combine(temp_directory_path, "rank.txt");
            string rank_file_text = string.Format("{0}\r\n{1}\r\n", "sm9", video_id);

            IJFile.WriteVer2(rank_file_path, rank_file_text, IJFile.EncodingPriority.UTF8);

            RankFileCustomFormat custom_format = new RankFileCustomFormat();
            InputOutputOption    iooption      = new InputOutputOption(rank_file_path, rank_file_path, custom_format);

            RankingMethod ranking_method = new RankingMethod(HoseiKind.Nothing, SortKind.Nothing, 0);

            List <string> id_list = new List <string>(new string[] {
                video_id,
                "sm1097445"
            });

            network_manager_.GetDetailInfo(id_list, iooption, true, ranking_method, "1");

            RankFile     rank_file  = new RankFile(rank_file_path, custom_format);
            List <Video> video_list = rank_file.GetVideoList();

            Assert.That(video_list.Count, Is.EqualTo(3), "GetDetailInfoTest1-2");
            Assert.That(video_list[1].title, Is.EqualTo(video_title), "GetDetailInfoTest1-3");
        }
コード例 #7
0
        /// <summary>
        /// 「手順ファイル」から AviSynth 用のスクリプトを生成する。
        /// </summary>
        /// <param name="tejun_path">「手順ファイル」のファイル名</param>
        /// <param name="rank_file_path">「ランクファイル」のファイル名</param>
        /// <returns></returns>
        public string GenerateScriptWithPath(string tejun_path, string rank_file_path)
        {
            string tejun_str     = IJFile.Read(tejun_path);
            string rank_file_str = IJFile.Read(rank_file_path);

            return(GenerateScript(tejun_str, rank_file_str));
        }
コード例 #8
0
        private static string WriteAndReadText(string file_path, string original_text, Encoding file_encoding, IJFile.EncodingPriority read_encoding)
        {
            string text;

            using (Stream output = File.Open(file_path, FileMode.Create, FileAccess.Write, FileShare.None))
                using (TextWriter writer = new StreamWriter(output, file_encoding))
                {
                    writer.Write(original_text);
                }
            text = IJFile.ReadVer2(file_path, read_encoding);
            return(text);
        }
コード例 #9
0
        private void buttonLayoutSave_Click(object sender, EventArgs e)
        {
            DialogResult result = DialogResult.Yes;

            if (System.IO.File.Exists(selectFileBoxLayout.FileName))
            {
                result = MessageBox.Show(this, "レイアウトファイルを上書きしますか?", "確認", MessageBoxButtons.YesNo);
            }
            if (result == DialogResult.Yes)
            {
                IJFile.Write(selectFileBoxLayout.FileName, textBoxLayout.Text);
                is_changed = false;
            }
        }
コード例 #10
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);
                }
            }
        }
コード例 #11
0
 public virtual string GetRawText()
 {
     if (is_input_from_file_)
     {
         if (!File.Exists(input_path_))
         {
             throw new FileNotFoundException("入力ランクファイルが存在しません。");
         }
         return(IJFile.Read(input_path_));
     }
     else
     {
         return(input_text_);
     }
 }
コード例 #12
0
        public IFilterManager GetFilter()
        {
            IFilterManager filter;

            if (is_using_filter && filter_filename != "" && File.Exists(filter_filename))
            {
                try
                {
                    string first_line = IJFile.ReadFirstLineUTF8(filter_filename);

                    // フィルター書式のバージョンを調べる(ファイルの最初の行が「version=2」であるかどうか)
                    bool is_version2 = IJStringUtil.CompareString(first_line, RootFilter.version_indicator);

                    string str;

                    if (is_version2)
                    {
                        // 新フィルターはUTF-8で読み込む
                        string str_with_version = IJFile.ReadUTF8(filter_filename);

                        // 先頭の「version=2」を削除する
                        int start_index = str_with_version.IndexOfAny(new char[] { '\r', '\n' }, 0);
                        if (start_index + 1 <= str_with_version.Length - 1)
                        {
                            str = str_with_version.Substring(start_index + 1);
                        }
                        else
                        {
                            str = string.Empty;
                        }

                        filter = GetFilter2(str);
                    }
                    else
                    {
                        str    = IJFile.Read(filter_filename);
                        filter = GetFilter1(str);
                    }
                }
                catch (Exception)
                {
                    throw new FormatException("フィルターの書式が間違えています。");
                }
                return(filter);
            }
            return(new Filter(is_output_filtered_video));
        }
コード例 #13
0
        /// <summary>
        /// 新しい検索チケットを作成する。
        /// </summary>
        /// <param name="ticket_id">作成する検索チケットのID。</param>
        /// <param name="option">検索条件。</param>
        /// <returns>検索チケットを作成した場合はtrue、指定されたチケットIDを持つ検索チケットが既にある場合はfalse。</returns>
        public static bool CreateNewTicket(string ticket_id, SearchingTagOption option)
        {
            string ticket_directory = GetTicketDirectory(ticket_id);

            if (Directory.Exists(ticket_directory))
            {
                return(false);
            }

            string option_file = GetTicketOptionFile(ticket_id);

            Directory.CreateDirectory(ticket_directory);
            string option_text = SerializeSearchingOption(option);

            IJFile.WriteUTF8(option_file, option_text);

            return(true);
        }
コード例 #14
0
ファイル: FormBrowser.cs プロジェクト: tdenc/nicorank
        private void UpdateCutList(string video_id, string start_time_str, string end_time_str)
        {
            if (start_time_str == "")
            {
                MessageBox.Show("開始時間を設定してください。");
                return;
            }
            if (end_time_str == "")
            {
                MessageBox.Show("終了時間を設定してください。");
                return;
            }
            if (textBoxCutListPath.Text == "")
            {
                MessageBox.Show("カットリストのファイル名を設定してください。");
                return;
            }
            StringBuilder buff = new StringBuilder();

            if (File.Exists(textBoxCutListPath.Text))
            {
                string str   = IJFile.Read(textBoxCutListPath.Text);
                int    index = str.IndexOf(video_id);
                if (index >= 0)
                {
                    int end = str.IndexOf('\n', index) + 1;
                    buff.Append(str.Substring(0, index));
                    buff.Append(video_id + "\t" + start_time_str + "\t" + end_time_str + "\r\n");
                    buff.Append(str.Substring(end));
                }
                else
                {
                    buff.Append(str);
                    buff.Append(video_id + "\t" + start_time_str + "\t" + end_time_str + "\r\n");
                }
            }
            else
            {
                buff.Append(video_id + "\t" + start_time_str + "\t" + end_time_str + "\r\n");
            }
            IJFile.Write(textBoxCutListPath.Text, buff.ToString());
            labelInfo.Text = "書き込みました";
        }
コード例 #15
0
        public static List <Video> ParseRankingNicoChart(string dir_name, DateTime start_date, DateTime end_date)
        {
            if (dir_name[dir_name.Length - 1] != '\\')
            {
                dir_name += '\\';
            }
            List <Video> video_list = new List <Video>();

            for (DateTime dt = end_date; dt >= start_date; dt = dt.AddDays(-1.0))
            {
                string[] files = System.IO.Directory.GetFiles(dir_name + dt.ToString("yyyyMMdd"));
                for (int i = 0; i < files.Length; ++i)
                {
                    string html = IJFile.Read(files[i]);
                    ParseRankingNicoChartOnePage(html, video_list);
                }
            }
            return(video_list);
        }
コード例 #16
0
 private void buttonLayoutLoad_Click(object sender, EventArgs e)
 {
     if (System.IO.File.Exists(selectFileBoxLayout.FileName))
     {
         DialogResult result = DialogResult.Yes;
         if (textBoxLayout.Text != "")
         {
             result = MessageBox.Show(this, "レイアウトファイルを読み込みますか?", "確認", MessageBoxButtons.YesNo);
         }
         if (result == DialogResult.Yes)
         {
             textBoxLayout.Text = IJFile.Read(selectFileBoxLayout.FileName);
             is_changed         = false;
         }
     }
     else
     {
         MessageBox.Show(this, "レイアウトファイルが存在しません。", "確認");
     }
 }
コード例 #17
0
        public void LoadForSpecial(string rank_file_path)
        {
            string str = "";

            try
            {
                str = IJFile.Read(rank_file_path);
            }
            catch (System.IO.FileNotFoundException)
            {
                return;
            }
            string[] line = IJStringUtil.SplitWithCRLF(str);
            if (video_list_ == null)
            {
                video_list_ = new List <Video>();
            }

            for (int i = 0; i < line.Length; ++i)
            {
                string[] s_array = line[i].Split('\t');
                if (RankFile.SearchVideo(video_list_, s_array[0]) < 0) // 存在しないなら
                {
                    Video video = new Video();
                    video.video_id = s_array[0];
                    try
                    {
                        video.point.view   = IJStringUtil.ToIntFromCommaValue(s_array[3]);
                        video.point.res    = IJStringUtil.ToIntFromCommaValue(s_array[4]);
                        video.point.mylist = IJStringUtil.ToIntFromCommaValue(s_array[5]);
                        video.title        = s_array[6];
                        video.submit_date  = NicoUtil.StringToDate(s_array[7]);
                        video.tag_set.ParseBlank(s_array[14]);
                    }
                    catch (System.IndexOutOfRangeException) { }
                    video_list_.Add(video);
                }
            }
        }
コード例 #18
0
ファイル: Video.cs プロジェクト: tdenc/nicorank
        // タグリストから P名を推定する
        public static string GetPname(TagSet tag_set, out int index)
        {
            if (pname_list_ == null) // 初回にリストをロードする
            {
                if (File.Exists("pnamelist.txt"))
                {
                    pname_list_ = IJStringUtil.SplitWithCRLF(IJFile.Read("pnamelist.txt"));
                }
                else
                {
                    pname_list_ = new string[0];
                }
            }

            for (int i = 0; i < tag_set.tag_list_.Count; ++i)
            {
                for (int j = 0; j < pname_list_.Length; ++j)
                {
                    if (IJStringUtil.CompareString(tag_set.tag_list_[i].GetRawTag(), pname_list_[j]))
                    {
                        index = i;
                        return(pname_list_[j]);
                    }
                }
            }
            // リストから見つからない場合は後ろにPのついたタグを探す
            for (int i = 0; i < tag_set.tag_list_.Count; ++i)
            {
                if (tag_set.tag_list_[i].GetRawTag().EndsWith("P", StringComparison.InvariantCultureIgnoreCase) ||
                    tag_set.tag_list_[i].GetRawTag().EndsWith("P", StringComparison.InvariantCultureIgnoreCase))
                {
                    index = i;
                    return(tag_set.tag_list_[i].GetRawTag());
                }
            }
            index = -1;
            return(""); // それでも見つからないときは空文字を返す
        }
コード例 #19
0
 private void FormLayout_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (is_changed)
     {
         DialogResult result;
         if (System.IO.File.Exists(selectFileBoxLayout.FileName))
         {
             result = MessageBox.Show(this, "レイアウトファイルを上書き保存しますか?", "確認", MessageBoxButtons.YesNoCancel);
         }
         else
         {
             result = MessageBox.Show(this, "レイアウトファイルを保存しますか?", "確認", MessageBoxButtons.YesNoCancel);
         }
         if (result == DialogResult.Yes)
         {
             IJFile.Write(selectFileBoxLayout.FileName, textBoxLayout.Text);
         }
         else if (result == DialogResult.Cancel)
         {
             e.Cancel = true;
         }
     }
 }
コード例 #20
0
        /// <summary>
        /// 指定されたディレクトリに含まれているファイルがランキングHTML
        /// かどうかを判定する。
        /// </summary>
        /// <param name="ranking_dir_name">ダウンロードしたランキングファイルが含まれるディレクトリ</param>
        /// <returns>ダウンロードしたランキングがHTMLの場合はtrue、その他の場合はfalse。</returns>
        private bool IsRankingHtml(string ranking_dir_name)
        {
            bool is_html = false;

            if (Directory.Exists(ranking_dir_name))
            {
                foreach (string ranking_file in Directory.GetFiles(ranking_dir_name))
                {
                    string first_line = IJFile.ReadFirstLineUTF8(ranking_file);

                    if (!first_line.StartsWith("<?xml"))
                    {
                        is_html = true;
                        break;
                    }

                    // 最初の1ファイルだけで判断する
                    break;
                }
            }

            return(is_html);
        }
コード例 #21
0
ファイル: NicoListManagerTest.cs プロジェクト: tdenc/nicorank
        public void ParsePointRssTest2()
        {
            int wait_milliseconds = int.Parse(TestUtility.TestData[TestUtility.KEY_ACCESS_WAIT_MILLISECONDS]);
            DirectoryInfo temp_dir = new DirectoryInfo(TestUtility.TestData[TestUtility.KEY_TEMP_DIRECTORY]);
            string video_title = "【初音ミク】みくみくにしてあげる♪【してやんよ】";

            Assert.That(TestUtility.InitDirectory(temp_dir), Is.True, "parsePointRssTest2-1");

            TestUtility.EnsureLogin(network_);

            DownloadKind download_kind = new DownloadKind();
            download_kind.SetFormatRss();
            download_kind.SetTarget(true, false, false);
            download_kind.SetDuration(true, false, false, false, false);
            download_kind.CategoryList = new List<CategoryItem>();
            CategoryItem category_item = new CategoryItem();
            category_item.id = "music";
            category_item.name = "音楽";
            category_item.page = new int[] { 3, 1, 1, 0 };
            category_item.short_name = "mus";
            download_kind.CategoryList.Add(category_item);

            network_.DownloadRanking(temp_dir.FullName, download_kind, wait_milliseconds);
            FileInfo rss_file = Array.Find(temp_dir.GetFiles(), delegate(FileInfo fi) {
                return fi.Name.StartsWith("tot_mus_vie_1_");
            });

            Assert.That(rss_file, Is.Not.Null, "ParsePointRssTest2-2");

            string rss = IJFile.ReadVer2(rss_file.FullName, IJFile.EncodingPriority.Auto);
            List<Video> video_list = new List<Video>();
            NicoListManager.ParsePointRss(rss, DateTime.Now, video_list, true, false);

            Assert.That(video_list.Count, Is.GreaterThanOrEqualTo(1), "ParsePointRssTest2-3");
            Assert.That(video_list[0].title, Is.EqualTo(video_title), "ParsePointRssTest2-4");
        }
コード例 #22
0
ファイル: NicoUtil.cs プロジェクト: tdenc/nicorank
        public void PreviewMylistDescription(string text, string rank_file_path)
        {
            string[] line = IJStringUtil.SplitWithCRLF(IJFile.Read(rank_file_path));

            List <string> add_list         = new List <string>();
            List <string> description_list = new List <string>();

            for (int i = 0; i < line.Length; ++i)
            {
                string[] s_array = line[i].Split('\t');
                add_list.Add(s_array[0]);
                description_list.Add(NicoUtil.GetReplacedString(text, s_array));
            }
            StringBuilder buff = new StringBuilder();

            for (int i = 0; i < add_list.Count; ++i)
            {
                buff.Append(add_list[i]);
                buff.Append("\r\n---------\r\n");
                buff.Append(description_list[i]);
                buff.Append("\r\n--------------------------------------------------------\r\n");
            }
            msgout_.Write(buff.ToString());
        }
コード例 #23
0
        private TranslatingOption GetFFmpegOption()
        {
            if (form_trans_option_ != null)
            {
                trans_detail_option_ = form_trans_option_.GetAppOption();
            }
            TranslatingOption translating_option = new TranslatingOption();

            switch (comboBoxTransFileKind.SelectedIndex)
            {
            case 0:
                translating_option.trans_file_kind = TranslatingOption.TransFileKind.RankFile;
                break;

            case 1:
                translating_option.trans_file_kind = TranslatingOption.TransFileKind.Directory;
                break;

            case 2:
                translating_option.trans_file_kind = TranslatingOption.TransFileKind.File;
                break;
            }
            translating_option.is_flv_to_avi        = checkBoxIsFlvToAvi.Checked;
            translating_option.is_avi_include_audio = radioButtonIncludeAudio.Checked;
            translating_option.trans_avi_kind       = trans_detail_option_.trans_avi_kind;

            translating_option.is_flv_to_wav    = checkBoxIsFlvToWav.Checked;
            translating_option.is_flv_to_mp3    = checkBoxIsFlvToMp3.Checked;
            translating_option.is_flv_to_png    = checkBoxIsFlvToPng.Checked;
            translating_option.is_flv_to_detail = checkBoxIsFlvToDetail.Checked;

            translating_option.fadein       = (checkBoxTransIsFadeIn.Checked) ? IJStringUtil.ToDoubleWithDef(textBoxTransFadeIn.Text, -1.0) : -1.0;
            translating_option.fadeout      = (checkBoxTransIsFadeOut.Checked) ? IJStringUtil.ToDoubleWithDef(textBoxTransFadeOut.Text, -1.0) : -1.0;
            translating_option.is_normalize = checkBoxTransIsNormalize.Checked;

            int width  = trans_detail_option_.change_width;
            int height = trans_detail_option_.change_height;

            if (trans_detail_option_.is_change_size && width > 0 && height > 0)
            {
                translating_option.changing_width  = width;
                translating_option.changing_height = height;
                translating_option.is_fix_aspect   = trans_detail_option_.is_fix_aspect;
            }
            else
            {
                trans_detail_option_.change_width  = 0;
                trans_detail_option_.change_height = 0;
            }

            translating_option.is_framerate_change = trans_detail_option_.is_framerate_change;
            translating_option.frame_rate          = trans_detail_option_.frame_rate;

            translating_option.cut_start     = (checkBoxTransIsCut.Checked ? IJStringUtil.ToDoubleWithDef(textBoxTransCutStart.Text, -1.0) : -1.0);
            translating_option.cut_end       = (checkBoxTransIsCut.Checked ? IJStringUtil.ToDoubleWithDef(textBoxTransCutEnd.Text, -1.0) : -1.0);
            translating_option.cut_list_name = (checkBoxIsUsingCutList.Checked ? IJFile.GetAbsolutePath(textBoxCutListPath.Text) : "");

            translating_option.is_only_sm = trans_detail_option_.is_only_sm;
            translating_option.is_only_nm = trans_detail_option_.is_only_nm;

            translating_option.is_window_show = trans_detail_option_.is_show_window;
            translating_option.is_overwrite   = checkBoxIsOverwrite.Checked;

            //ffmpeg_option.trans_detail_option = textBoxTransDetailOption.Text;

            translating_option.trans_before_file_or_dir = textBoxTransBeforeFileOrDir.Text;
            translating_option.trans_after_file_or_dir  = textBoxTransAfterFileOrDir.Text;
            translating_option.app_path = new FFmpegAppPath(IJFile.GetAbsolutePath(textBoxFFmpegPath.Text), IJFile.GetAbsolutePath(textBoxWavfltPath.Text));
            translating_option.iooption = GetInputOutputOption();
            return(translating_option);
        }
コード例 #24
0
        private void LoadConfig(string filename)
        {
            if (System.IO.File.Exists(filename))
            {
                bool     is_old_rankfile      = false;
                string   is_old_rankfile_path = "";
                string   str     = IJFile.Read(filename);
                int      version = 0;
                string[] sArray  = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                if (!sArray[0].StartsWith("version"))
                {
                    throw new FormatException();
                }
                foreach (string s in sArray)
                {
                    if (s.StartsWith("TransDetailOption."))
                    {
                        trans_detail_option_.SetDataFromLine(s);
                        continue;
                    }
                    string[] sa = s.Split('\t');
                    if (sa[0] == "version")
                    {
                        version = int.Parse(sa[1]);
                        if (version <= 1560)
                        {
                            MessageBox.Show("動画変換のオプションの一部が変更になりました。\r\n" +
                                            "動画変換を行う場合は再設定してください。", "お知らせ");
                        }
                    }
                    if (sa[0] == "dlrank_category")
                    {
                        category_manager_.SetString(sa[1]);
                    }
                    if (sa.Length < 3 || sa[1] == "")
                    {
                        continue;
                    }

                    if (sa[1] == "textBoxBaseDir")
                    {
                        if (sa[2] != Application.StartupPath && sa[2] != Application.StartupPath + "\\" && sa[2] != "")
                        {
                            MessageBox.Show("「相対指定のときの基準ディレクトリ」は廃止になりました。\r\n" +
                                            "基準ディレクトリはプログラムの存在するディレクトリになります。", "お知らせ");
                        }
                    }
                    if (sa[1] == "textBoxRankFilePath" && sa[2] != "")
                    {
                        is_old_rankfile      = true;
                        is_old_rankfile_path = sa[2];
                    }
                    if (sa[1] == "textBoxMylistRate" && sa[2] != "")
                    {
                        try
                        {
                            numericUpDownMylistRate.Value = decimal.Parse(sa[2]);
                        }
                        catch (FormatException) { }
                    }
                    if (sa[1] == "textBoxConditionMylistNew" && sa[2] != "")
                    {
                        try
                        {
                            numericUpDownConditionMylistNew.Value = decimal.Parse(sa[2]);
                        }
                        catch (FormatException) { }
                    }
                    Control[] c = this.Controls.Find(sa[1], true);
                    if (c.Length > 0)
                    {
                        switch (sa[0])
                        {
                        case "text":
                            if (version <= 1640)     // 過去の互換性のため
                            {
                                if (((TextBox)c[0]).Multiline)
                                {
                                    sa[2] = sa[2].Replace("\\n", "\r\n").Replace("(doll-n-nicorank)", "\\n");
                                }
                                c[0].Text = sa[2];
                            }
                            else
                            {
                                c[0].Text = IJStringUtil.UnescapeForConfig(sa[2]);
                            }
                            break;

                        case "radio":
                            if (version <= 1930)     // 過去の互換性のため
                            {
                                if (sa[1] == "radioButtonBrowserIE6" || sa[1] == "radioButtonBrowserIE7")
                                {
                                    radioButtonBrowserIE.Checked = true;
                                }
                            }
                            ((RadioButton)c[0]).Checked = bool.Parse(sa[2]);
                            break;

                        case "checkBox":
                            ((CheckBox)c[0]).Checked = bool.Parse(sa[2]);
                            break;

                        case "listBox":
                            ((ListBox)c[0]).SelectedIndex = int.Parse(sa[2]);
                            break;

                        case "dateTimePicker":
                            ((DateTimePicker)c[0]).Value = NicoUtil.StringToDate(sa[2]);
                            break;

                        case "comboBox":
                            ((ComboBox)c[0]).SelectedIndex = int.Parse(sa[2]);
                            break;

                        case "numericUpDown":
                            ((NumericUpDown)c[0]).Value = decimal.Parse(sa[2]);
                            break;
                        }
                    }
                }
                if (is_old_rankfile)
                {
                    textBoxInputRankFilePath.Text = is_old_rankfile_path;
                    checkBoxIsSameToInput.Checked = true;
                }
            }
        }
コード例 #25
0
        private void SaveConfig(string filename)
        {
            StringBuilder  buff         = new StringBuilder();
            List <Control> control_list = new List <Control>();

            GetAllControl(this, ref control_list);

            buff.Append("version\t" + program_version_.ToString() + "\r\n");
            for (int i = 0; i < control_list.Count; ++i)
            {
                if (control_list[i] is TextBox)
                {
                    TextBox c = (TextBox)control_list[i];
                    if (c.Name == "textBoxUploadText" || c.Name == "textBoxUser" ||
                        c.Name == "textBoxPassword" || c.Name == "textBoxInfo" || c.Name == "textBoxEditRankFile" ||
                        c.Name == "textBoxEditExclusionList" || c.Name == "textBoxMencWatching"
                        )
                    {
                        continue;
                    }
                    if (c.Name == "")
                    {
                        continue;
                    }
                    buff.Append("text");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(IJStringUtil.EscapeForConfig(c.Text));
                    buff.Append("\r\n");
                }
                else if (control_list[i] is RadioButton)
                {
                    RadioButton c = (RadioButton)control_list[i];
                    buff.Append("radio");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(c.Checked.ToString());
                    buff.Append("\r\n");
                }
                else if (control_list[i] is CheckBox)
                {
                    CheckBox c = (CheckBox)control_list[i];
                    if (c.Name == "checkBoxTimer1" || c.Name == "checkBoxTimer2" || c.Name == "checkBoxDailyTimer" || c.Name == "checkBoxTimerNews")
                    {
                        continue;
                    }
                    buff.Append("checkBox");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(c.Checked.ToString());
                    buff.Append("\r\n");
                }
                else if (control_list[i] is ListBox && !(control_list[i] is CheckedListBox))
                {
                    ListBox c = (ListBox)control_list[i];
                    buff.Append("listBox");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(c.SelectedIndex.ToString());
                    buff.Append("\r\n");
                }
                else if (control_list[i] is DateTimePicker)
                {
                    DateTimePicker c = (DateTimePicker)control_list[i];
                    buff.Append("dateTimePicker");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(NicoUtil.DateToString(c.Value));
                    buff.Append("\r\n");
                }
                else if (control_list[i] is ComboBox)
                {
                    ComboBox c = (ComboBox)control_list[i];
                    buff.Append("comboBox");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(c.SelectedIndex.ToString());
                    buff.Append("\r\n");
                }
                else if (control_list[i] is NumericUpDown)
                {
                    NumericUpDown c = (NumericUpDown)control_list[i];
                    buff.Append("numericUpDown");
                    buff.Append('\t');
                    buff.Append(c.Name);
                    buff.Append('\t');
                    buff.Append(c.Value.ToString());
                    buff.Append("\r\n");
                }
            }
            if (form_trans_option_ != null)
            {
                trans_detail_option_ = form_trans_option_.GetAppOption();
            }
            buff.Append(trans_detail_option_.SaveData());

            buff.Append("dlrank_category\t").Append(category_manager_.GetSaveString()).Append("\r\n");

            IJFile.Write(filename, buff.ToString());
        }
コード例 #26
0
ファイル: Program.cs プロジェクト: tdenc/nicorank
        static void Main(string[] args)
        {
            try
            {
                if (args.Length <= 1)
                {
                    ShowUsage();
                    System.Environment.Exit(1);
                }

                Receiver           receiver      = new Receiver();
                CancelObject       cancel_object = new CancelObject();
                NicoNetwork        network       = new NicoNetwork();
                NicoNetworkManager network_mgr   = new NicoNetworkManager(network, receiver, cancel_object);
                NicoMylist         nico_mylist   = new NicoMylist(network, receiver, cancel_object);

                for (int i = 2; i < args.Length; ++i)
                {
                    switch (args[i])
                    {
                    case "-i":
                        if (i < args.Length - 1)
                        {
                            input_rank_file_ = Dequote(args[i + 1]);
                            if (!File.Exists(input_rank_file_))
                            {
                                System.Console.WriteLine("入力ランクファイルが存在しません。");
                                System.Environment.Exit(1);
                            }
                            ++i;
                        }
                        else
                        {
                            System.Console.WriteLine("入力ランクファイルを指定してください。");
                            System.Environment.Exit(1);
                        }
                        break;

                    case "-o":
                        if (i < args.Length - 1)
                        {
                            output_rank_file_ = Dequote(args[i + 1]);
                            ++i;
                        }
                        break;

                    case "-c":
                        if (i < args.Length - 1)
                        {
                            config_file_ = Dequote(args[i + 1]);
                            ++i;
                        }
                        break;
                    }
                }

                if (string.IsNullOrEmpty(config_file_)) // config ファイル指定なしの場合
                {
                    config_file_ = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "config.txt");
                    if (!File.Exists(config_file_))
                    {
                        System.Console.WriteLine("最初に nicorank.exe を起動してオプションを指定してください。");
                        System.Environment.Exit(1);
                    }
                }
                else
                {
                    if (!File.Exists(config_file_))
                    {
                        System.Console.WriteLine("config ファイルが見つかりません。");
                        System.Environment.Exit(1);
                    }
                }
                ParseConfig(IJFile.Read(config_file_));

                InputOutputOption iooption = new InputOutputOption(!string.IsNullOrEmpty(input_rank_file_), !string.IsNullOrEmpty(output_rank_file_));
                if (string.IsNullOrEmpty(input_rank_file_)) // 標準入力から
                {
                    iooption.SetInputFromStdin();
                }
                else
                {
                    iooption.SetInputPath(input_rank_file_);
                }
                if (string.IsNullOrEmpty(output_rank_file_)) // 標準出力へ
                {
                    iooption.SetOutputRankFileDelegate(delegate(string s)
                    {
                        System.Console.Write(s);
                    });
                }
                else
                {
                    iooption.SetOutputPath(output_rank_file_);
                }

                switch (args[0])
                {
                case "download":
                    switch (args[1])
                    {
                    case "ranking":
                        CategoryManager category_manager = new CategoryManager();
                        category_manager.SetString(option_["dlrank_category"]);
                        category_manager.ParseCategoryFile();
                        network_mgr.DownloadRanking(GetDownloadKind(category_manager), option_["textBoxRankDlDir"]);
                        break;

                    case "video":
                        LoadCookie(network);
                        network_mgr.DownloadFlv(iooption, option_["textBoxDlInterval"], MakeDirectoryPath(option_["textBoxFlvDlDir"]),
                                                bool.Parse(option_["checkBoxIsFixFlvDlExtension"]));
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                case "list":
                    switch (args[1])
                    {
                    case "searchtag":
                        network_mgr.MakeListAndWriteBySearchTag(iooption, MakeSearchingTagOption(), MakeRankingMethod());
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                case "mylist":
                    switch (args[1])
                    {
                    case "add":
                        LoadCookie(network);
                        nico_mylist.AddMylist(iooption, option_["textBoxMylistId"]);
                        break;

                    default:
                        ShowInvalidAndUsage(args[1]);
                        System.Environment.Exit(1);
                        break;
                    }
                    break;

                default:
                    ShowInvalidAndUsage(args[0]);
                    System.Environment.Exit(1);
                    break;
                }
            }
            catch (KeyNotFoundException e)
            {
                System.Console.WriteLine("エラーが発生しました。");
                System.Console.WriteLine("キーが存在しません: " + e.Data.ToString());
            }
            catch (Exception e)
            {
                System.Console.WriteLine("エラーが発生しました。");
                System.Console.WriteLine("エラー\r\n---メッセージ\r\n" +
                                         e.Message + "\r\n---ソース\r\n" + e.Source + "\r\n---スタックトレース\r\n" +
                                         e.StackTrace + "\r\n---ターゲット\r\n" + e.TargetSite + "\r\n---文字列\r\n" +
                                         e.ToString());
            }
        }
コード例 #27
0
        public void ParseCategoryFile2(Form form)
        {
            string filename = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "category.txt");
            string str;

            if (File.Exists(filename))
            {
                str = IJFile.ReadUTF8(filename);

                if (!str.StartsWith("version"))                  // 昔のバージョンの category.txt なら
                {
                    if (str != Properties.Resources.category204) // ユーザによって改変されているなら
                    {
                        File.Move(filename,
                                  Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),
                                               "category_old1.txt")); // 念のためバックアップを取る
                        if (form != null)
                        {
                            MessageBox.Show(form, "category.txt を category_old1.txt にリネームしました。",
                                            "ニコニコランキングメーカー", MessageBoxButtons.OK,
                                            MessageBoxIcon.Information);
                        }
                        else // for console
                        {
                            System.Console.WriteLine("category.txt を category_old1.txt にリネームしました。");
                        }
                    }
                    else
                    {
                        File.Delete(filename);
                    }
                    str = Properties.Resources.category;
                    IJFile.WriteUTF8(filename, str);
                }
            }
            else
            {
                str = Properties.Resources.category;
                IJFile.WriteUTF8(filename, str);
            }

            string[] lines = IJStringUtil.SplitWithCRLF(str);

            for (int i = 1; i < lines.Length; ++i)
            {
                string[]     ar   = lines[i].Split('\t');
                CategoryItem item = new CategoryItem();
                item.id         = ar[0];
                item.short_name = ar[1];
                item.name       = ar[2];
                int[] page = new int[5];
                for (int j = 0; j < page.Length; ++j)
                {
                    page[j] = int.Parse(ar[3 + j]);
                }
                item.page = page;
                category_item_dic_.Add(item.name, item);

                clistbox_.Items.Add(item.name, Array.IndexOf(category_config_, item.id) >= 0);
            }
        }
コード例 #28
0
        public void Load(string rank_file_path)
        {
            string str = IJFile.Read(rank_file_path);

            Parse(str);
        }