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)); }
/// <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); }