Example #1
0
        private bool GetNode(string address)
        {
            try
            {
                string[] str   = address.Split('/');
                string   value = Config.KeyValue(str[2]);
                if (value == null)
                {
                    return(false);
                }

                if (string.IsNullOrEmpty(value))
                {
                    MessageBox.Show("Phần mềm không hỗ trợ trang web này", "Thông báo",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(false);
                }
                else
                {
                    string[] a = value.Split('|');
                    chapListNode = a[0];
                    if (a[1] == "auto")
                    {
                        if (address.EndsWith(".html"))
                        {
                            int index = address.LastIndexOf('/');
                            address = address.Remove(index + 1);
                        }
                        chapAddressNode = address;
                    }
                    else
                    {
                        chapAddressNode = a[1];
                    }
                    startNode   = int.Parse(a[2]);
                    endNode     = int.Parse(a[3]);
                    titleNode   = a[4];
                    contentNode = a[5];
                    if (a[6] == "true")
                    {
                        isEncodeGB2312 = true;
                    }
                    if (a[7] == "true")
                    {
                        isReverse = true;
                    }
                    if (a[8] == "true")
                    {
                        isRightToLeft = true;
                    }

                    return(true);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }
        }
Example #2
0
        private void tabSetting_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tabSetting.SelectedTab == tabSetting.TabPages["tpGeneral"])
            {
                Invoke(new MethodInvoker(delegate { btnNew.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnDelete.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnTestRule.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnSave.Visible = false; }));

                Invoke(new MethodInvoker(delegate { txtSaveFilePath.Text = Config.KeyValue("SavePath"); }));
            }
            else if (tabSetting.SelectedTab == tabSetting.TabPages["tpDeletePhrase"])
            {
                Invoke(new MethodInvoker(delegate { btnNew.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnDelete.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnTestRule.Visible = true; }));
                Invoke(new MethodInvoker(delegate { btnSave.Visible = true; }));

                LoadDeletePhraseNames();
            }
            else if (tabSetting.SelectedTab == tabSetting.TabPages["tpRuleWeb"])
            {
                Invoke(new MethodInvoker(delegate { btnNew.Visible = true; }));
                Invoke(new MethodInvoker(delegate { btnDelete.Visible = true; }));
                Invoke(new MethodInvoker(delegate { btnTestRule.Visible = false; }));
                Invoke(new MethodInvoker(delegate { btnSave.Visible = true; }));
                lvRuleWebList.Items.Clear();
                EnableControl(false);
                ShowRuleList();
            }
        }
Example #3
0
 public void ShowRuleList()
 {
     string[] str = Config.KeyValue("Website").Split('|');
     for (int i = 0; i < str.Length; i++)
     {
         ListViewItem item = new ListViewItem(i + 1 + "");
         item.SubItems.Add(str[i]);
         lvRuleWebList.Items.Add(item);
     }
 }
        private bool GetNode(string address)
        {
            try
            {
                string addressPattern = @"^(https?)(:\/\/www)(\.\w+\.\w+\/)(\w+\/(\w+\/|\w+\.html|\w+\.shtml)*)$";
                if (string.IsNullOrEmpty(address))
                {
                    MessageBox.Show("Không được để trống địa chỉ", "Thông báo",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(false);
                }
                else if (!Regex.IsMatch(address, addressPattern))
                {
                    MessageBox.Show("Địa chỉ không đúng định dạng", "Thông báo",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(false);
                }
                else
                {
                    string[] str   = address.Split('/');
                    string   value = Config.KeyValue(str[2]);
                    if (value == null)
                    {
                        return(false);
                    }

                    if (string.IsNullOrEmpty(value))
                    {
                        MessageBox.Show("Phần mềm không hỗ trợ trang web này", "Thông báo",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return(false);
                    }
                    else
                    {
                        string[] a = value.Split('|');
                        if (a[6] == "true")
                        {
                            isEncodeGB2312 = true;
                        }

                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
        }
        private bool LoadDeletePhraseNames()
        {
            string websiteKeyValue = Config.KeyValue("Website");

            if (websiteKeyValue != null)
            {
                List <string> deletePhraseNames = websiteKeyValue.Split('|').ToList();
                deletePhraseNames.Insert(0, "Chung");
                cbDeletePhraseName.DataSource = deletePhraseNames;
                return(true);
            }

            return(false);
        }
Example #6
0
 public void LoadDataFromListviewToTextbox()
 {
     //Kiểm tra xem người dùng có nhấp vào đối tượng trên listview không
     if (lvRuleWebList.SelectedItems.Count > 0)
     {
         string   web = lvRuleWebList.SelectedItems[0].SubItems[1].Text;
         string[] arr = Config.KeyValue(web).Split('|');
         txtRuleName.Text    = web;
         txtChapList.Text    = arr[0];
         txtChapAddress.Text = arr[1];
         txtStart.Text       = arr[2];
         txtEnd.Text         = arr[3];
         txtTitle.Text       = arr[4];
         txtContent.Text     = arr[5];
         if (arr[6] == "true")
         {
             chkIsEncodeGB2312.Checked = true;
         }
         else
         {
             chkIsEncodeGB2312.Checked = false;
         }
         if (arr[7] == "true")
         {
             chkIsReverse.Checked = true;
         }
         else
         {
             chkIsReverse.Checked = false;
         }
         if (arr[8] == "true")
         {
             chkIsRightToLeft.Checked = true;
         }
         else
         {
             chkIsRightToLeft.Checked = false;
         }
         txtRuleName.Enabled = false;
     }
 }
Example #7
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (lvRuleWebList.SelectedItems.Count > 0)
            {
                DialogResult dr = MessageBox.Show("Bạn có chắc chắn muốn xóa rules này không?",
                                                  "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dr == DialogResult.Yes)
                {
                    string web       = lvRuleWebList.SelectedItems[0].SubItems[1].Text;
                    string webString = Config.KeyValue("Website");

                    //Xóa key web khỏi app.config
                    Config.RemoveKey(web);

                    //Xóa chuỗi web khỏi key Website trong app.config
                    if (webString.Contains("|" + web))
                    {
                        webString = webString.Replace("|" + web, "");
                    }
                    else if (webString.Contains(web + "|"))
                    {
                        webString = webString.Replace(web + "|", "");
                    }
                    else
                    {
                        webString = webString.Replace(web, "");
                    }
                    Config.EditKey("Website", webString);
                    lvRuleWebList.Items.Clear();
                    ClearControl();
                    EnableControl(false);
                    ShowRuleList();
                }
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một rule trong danh sách để xóa", "Thông báo",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Example #8
0
        public bool Get(Main main, List <Info> chapAddresses)
        {
            if (!GetNode(main.AddressButton.Text.Trim()))
            {
                return(false);
            }
            int chapNumber = chapAddresses.Count;

            string[] novel = new string[chapNumber];
            int      count = 0;

            Parallel.For(0, chapNumber, i =>
            {
                try
                {
                    using (WebClient client = new WebClient())
                    {
                        if (isEncodeGB2312)
                        {
                            client.Encoding = Encoding.GetEncoding("gb2312");
                        }
                        else
                        {
                            client.Encoding = Encoding.UTF8;
                        }
                        client.Headers.Add("user-agent",
                                           "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0");
                        novel[i]         = client.DownloadString(chapAddresses[i].Address);
                        count           += 1;
                        main.Status.Text = "Tiến trình: " + ((float)(count * 100) / (chapNumber - 1)).ToString("0.00") + "%";
                    }
                }
                catch
                {
                }
            });

            main.Status.Text = "Tiến trình: Xử lý text rác...";
            string[] str = main.AddressButton.Text.Trim().Split('/');

            Parallel.For(0, chapNumber, i =>
            {
                var doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(novel[i]);
                string content = null;
                if (contentNode != "auto")
                {
                    content = doc.DocumentNode.SelectSingleNode(contentNode).InnerHtml;
                }
                content  = novel[i];
                novel[i] = chapAddresses[i].Title + "_newline2_" + content + "_newline2_";
                novel[i] = RemoveHTMLTag(novel[i], str[2]);
            });

            if (ChapList.fileTypeIndex == 0)
            {
                File.WriteAllLines(Config.KeyValue("SavePath") + "\\" + ChapList.novelName + ".txt", novel);
            }
            else
            {
                string folderPath = Config.KeyValue("SavePath");
                Directory.CreateDirectory(folderPath + "\\" + ChapList.novelName);
                Parallel.For(0, novel.Count(), i =>
                {
                    string saveFilePath = folderPath + "\\" + ChapList.novelName +
                                          "\\" + i + ".txt";
                    File.WriteAllText(saveFilePath, novel[i]);
                });
            }
            main.Status.Text = "Tải hoàn thành";
            return(true);
        }
Example #9
0
 private void Setting_Load(object sender, EventArgs e)
 {
     Invoke(new MethodInvoker(delegate { txtSaveFilePath.Text = Config.KeyValue("SavePath"); }));
 }
Example #10
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     if (tabSetting.SelectedTab == tabSetting.TabPages["tpDeletePhrase"])
     {
         try
         {
             List <string> lines = File.ReadLines(deletePhraseFile).ToList();
             lines.RemoveAll(item => item.StartsWith(selectedItem));
             if (txtDeletePhrasePattern.Lines.Length != 0)
             {
                 for (int i = 0; i < txtDeletePhrasePattern.Lines.Length; i++)
                 {
                     string deletePhrasePattern = txtDeletePhrasePattern.Lines[i];
                     if (Regex.IsMatch(deletePhrasePattern, @"^(.+)==(.*)$"))
                     {
                         lines.Add(selectedItem + "==" + deletePhrasePattern);
                         lines.Sort();
                         Config.WriteFile(deletePhraseFile, lines);
                         Invoke(new MethodInvoker(delegate { lblInfo.Text = "Đã lưu"; }));
                     }
                 }
             }
             else
             {
                 Config.WriteFile(deletePhraseFile, lines);
                 Invoke(new MethodInvoker(delegate { lblInfo.Text = "Đã lưu"; }));
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Lỗi", MessageBoxButtons.OK,
                             MessageBoxIcon.Error);
         }
     }
     else if (tabSetting.SelectedTab == tabSetting.TabPages["tpRuleWeb"])
     {
         try
         {
             if (string.IsNullOrEmpty(txtRuleName.Text.Trim()) ||
                 string.IsNullOrEmpty(txtChapList.Text.Trim()) ||
                 string.IsNullOrEmpty(txtTitle.Text.Trim()) ||
                 string.IsNullOrEmpty(txtContent.Text.Trim()) ||
                 string.IsNullOrEmpty(txtStart.Text.Trim()) ||
                 string.IsNullOrEmpty(txtEnd.Text.Trim()))
             {
                 MessageBox.Show("Các ô không được để trống", "Thông báo",
                                 MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 LoadDataFromListviewToTextbox();
             }
             else
             {
                 string value = txtChapList.Text.Trim() + "|" + txtChapAddress.Text.Trim() + "|"
                                + txtStart.Text.Trim() + "|" + txtEnd.Text.Trim() + "|"
                                + txtTitle.Text.Trim() + "|" + txtContent.Text.Trim() + "|"
                                + ((chkIsEncodeGB2312.Checked) ? "true" : "false") + "|"
                                + ((chkIsReverse.Checked) ? "true" : "false") + "|"
                                + ((chkIsRightToLeft.Checked) ? "true" : "false");
                 if (lvRuleWebList.SelectedItems.Count > 0)
                 {
                     Config.EditKey(lvRuleWebList.SelectedItems[0].SubItems[1].Text, value);
                 }
                 else
                 {
                     string webString = Config.KeyValue("Website");
                     //Kiểm tra rule mới có trùng hay không
                     if (!Regex.IsMatch(txtRuleName.Text.Trim(), @"^(www\.).+(\.\w{2,3})"))
                     {
                         MessageBox.Show("Rule " + "\"" + txtRuleName.Text.Trim() + "\"" + " của bạn không đúng định dạng",
                                         "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                     else if (webString.Contains(txtRuleName.Text.Trim()))
                     {
                         MessageBox.Show("Rule " + "\"" + txtRuleName.Text.Trim() + "\"" + " của bạn đã có trong dữ liệu",
                                         "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                     else
                     {
                         Config.AddKey(txtRuleName.Text.Trim(), value);
                         Config.EditKey("Website", webString + "|" + txtRuleName.Text.Trim());
                         lvRuleWebList.Items.Clear();
                         ClearControl();
                         ShowRuleList();
                         ActiveControl = txtRuleName;
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }