예제 #1
0
        /// <summary>
        /// 書き込み履歴を書き込みます
        /// </summary>
        /// <param name="r">書き込むレス</param>
        /// <param name="td">書き込むスレッドの情報</param>
        /// <param name="ss">設定データを表します</param>
        public void Write(Chron.ThreadOrResData.Res r, Chron.ThreadOrResData.ThreadData td, Setting.SettingSerial ss)
        {
            if (!ss.IsSaveWriteRecord)
            {
                return;
            }
            VIPBrowserLibrary.Common.BBSType bt;
            VIPBrowserLibrary.Common.Type    t;
            VIPBrowserLibrary.Common.TypeJudgment.AllJudg(td.ThreadAddress, out bt, out t);
            string readUrl = String.Empty;

            if (t == VIPBrowserLibrary.Common.Type.thread)
            {
                readUrl = VIPBrowserLibrary.Common.URLParse.DatToReadcgi(td.ThreadAddress, bt);
            }
            else
            {
                readUrl = td.ThreadAddress;
            }
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("--------------------------------------------");
            sb.Append("Date\t:").AppendLine(DateTime.Now.ToString("yy/MM/dd HH:mm:ss"));
            sb.Append("Subject\t:").AppendLine(td.ThreadName);
            sb.Append("URL\t:").AppendLine(readUrl);
            sb.Append("FROM\t:").AppendLine(r.Name);
            sb.Append("MAIL\t:").AppendLine(r.Mail);
            sb.AppendLine();
            sb.AppendLine(r.Sentence).AppendLine().AppendLine();


            Utility.TextUtility.Write(gs.CurrentDirectory + "\\kakikomi.txt", sb.ToString(), true);
        }
예제 #2
0
        /// <summary>
        /// Dictionary形式のレスデータをRes構造体に変換します
        /// </summary>
        /// <param name="data">変換するデータ</param>
        /// <param name="bt">変換元の板の帰属元</param>
        /// <returns>変換したRes構造体</returns>
        public Chron.ThreadOrResData.Res ParseDictionaryToRes(Dictionary <string, string> data, VIPBrowserLibrary.Common.BBSType bt)
        {
            Chron.ThreadOrResData.Res r;
            switch (bt)
            {
            case VIPBrowserLibrary.Common.BBSType._2ch:
            {
                r = new Chron.ThreadOrResData.Res(1, data["FROM"], data["mail"], data["MESSAGE"], "SampleID", "2013/11/16 21:47:59.02", "BE", true);
            }
            break;

            case VIPBrowserLibrary.Common.BBSType.jbbs:
            {
                r = new Chron.ThreadOrResData.Res(1, data["NAME"], data["MAIL"], data["MESSAGE"], "SampleKey", "2013/11/16 21:47:59.02", "BE", true);
            }
            break;

            case VIPBrowserLibrary.Common.BBSType.machibbs:
            {
                throw new NotSupportedException();
                //r = new Chron.ThreadOrResData.Res(0, data[""], data[""], data[""], data[""], data[""], data[""], true);
            }

            default:
                throw new ArgumentException();
            }
            return(r);
        }
        private string GetResponses(Regex re)
        {
            resCount++;
            Console.WriteLine("Start Response Analysis");
            if (Url == null)
            {
                throw new ArgumentNullException("取得先のURLが指定されていません");
            }
            if (Url == String.Empty)
            {
                throw new ArgumentException("取得先のURLは無効です");
            }

            //strb.Clear();
            id.Clear();
            VIPBrowserLibrary.BBS.Common.HttpClient hc = new Common.HttpClient(Url);

            string getData = GetData = hc.GetStringSync();

            if (!System.IO.Directory.Exists(gs.DatFilePath + "\\" + DatFolder))
            {
                System.IO.Directory.CreateDirectory(gs.DatFilePath + "\\" + DatFolder);
            }
            Utility.TextUtility.Write(gs.DatFilePath + "\\" + DatFolder + "\\" + DatKey + ".dat", getData, false);
            //Utility.TextUtility.Write(gs.DatFilePath + "\\" + datFolder + "\\" + datKey + ".idx", getData, false);

            getData = Regex.Replace(getData, @"[<]a href.{1,100}\starget=""_blank""[>]", "", RegexOptions.Compiled).Replace("</a>", "");


            MatchCollection mc = re.Matches(getData);
            StringBuilder   sb = new StringBuilder("<html><head></head><body><font face=\"MS Pゴシック\">\n<dl>\n");



            foreach (Match ids in mc)
            {
                string idData = ids.Groups["ID"].Value;
                if (id[idData] == null)
                {
                    id.Add(idData, new int[] { 0, 1 });
                }
                else
                {
                    ((int[])id[idData])[1] = ((int[])id[idData])[1] + 1;
                }
            }
            threadName = mc[0].Groups["threadName"].Value;
            r          = new Chron.ThreadOrResData.Res[mc.Count];
            foreach (Match m in mc)
            {
                string idData = m.Groups["ID"].Value;



                ((int[])id[idData])[0] = ((int[])id[idData])[0] + 1;
                string idString;
                string data = ((int[])id[idData])[0] + "/" + ((int[])id[idData])[1];
                if (((int[])id[idData])[1] > 1)
                {
                    //idString = "<span style='color:#00F; text-decoration:underline;'>" + idData + "</span>" + " [" + ((int[])id[idData])[0] + "/" + ((int[])id[idData])[1] + "]";
                    idString = String.Format(@"<a href=""method:Extract($3,{0})"" style=""color:black;"" target=""_blank"">{0}</a>({1})", idData, data);
                }
                else if (((int[])id[idData])[1] > 3)
                {
                    // idString = "<span style='color:#F00; text-decoration:underline;'>" + idData + "</span>" + " [" + ((int[])id[idData])[0] + "/" + ((int[])id[idData])[1] + "]";
                    idString = String.Format(@"<a href=""method:Extract($3,{0})"" style=""color:black;"" target=""_blank"">{0}</a>({1})", idData, data);
                }
                else if (((int[])id[idData])[1] == 1)
                {
                    //   idString = "<span style='color:#000; text-decoration:underline;'>" + idData + "</span>" + " [" + ((int[])id[idData])[0] + "/" + ((int[])id[idData])[1] + "]";
                    idString = String.Format(@"<a href=""method:Extract($3,{0})"" style=""color:black;"" target=""_blank"">{0}</a>({1})", idData, data);
                }
                else
                {
                    idString = "<span style='color:#000; text-decoration:underline;'>" + idData + "</span>";
                }
                //if (idData.Length <= 8)
                //{
                //    idString = "<span style='color:#000; text-decoration:underline;'>" + idData + "</span>";
                //}
                string mail;
                Match  mmm = new Regex(@"(?<date>.*)", RegexOptions.Compiled).Match(m.Groups["mail"].Value);
                if (mmm.Success)
                {
                    mail = mmm.Groups["date"].Value;
                    mail = mail.Replace("sage", "↓");
                }
                else
                {
                    mail = m.Groups["mail"].Value;
                }

                string sentenceData = m.Groups["sentence"].Value;

                sentenceData = Regex.Replace(sentenceData, @"&gt;&gt;(?<res>\d+)",
                                             (d) =>
                {
                    return("<a href=\"#\">&gt;&gt;" + d.Groups["res"].Value + "</a>");
                });
                r[resCount - 1] = new Chron.ThreadOrResData.Res(resCount, m.Groups["name"].Value, m.Groups["mail"].Value, m.Groups["sentence"].Value, m.Groups["ID"].Value.Replace("ID:", "").Replace("発信元", ""), m.Groups["date"].Value, String.Empty, true);


                sb.Append("<dt id=\"s").Append(resCount).Append("\" class=\"\">");
                sb.Append("<indices id=\"").Append(resCount).Append("\"></indices>");
                sb.AppendFormat(@"<b><a href=""menu:{0}"" name=""{0}"" target=""_blank"">{0}</a></b>", resCount);
                sb.AppendFormat(@" 名前:<font color=""green""><b>{0}</b></font>", m.Groups["name"].Value);
                sb.AppendFormat(@" [{0}] ", mail);
                sb.AppendFormat(@"投稿日:{0} ", m.Groups["date"].Value);
                sb.Append(/*@"<a href=""method:Extract($3,{0})"" style=""color:black;"" target=""_blank"">{1}</a>", idData, */ idString);
                sb.AppendFormat(@"  <a href=""method:Extract($5,)"" style=""color:black;"" target=""_blank""></a> </dt><dd>{0}<br><br></dd>", sentenceData);
                sb.AppendLine();
                resCount++;
            }
            sb.Append("</html>");

            resCount = 0;
            string datFile = sb.ToString();

            sb.Clear();
            Console.WriteLine("End the Res Analysis");
            return(datFile);
        }