diff --git a/Src/A69WD/Net/cA69Engine2.cs b/Src/A69WD/Net/cA69Engine2.cs index ecab307..5f4c7c0 100644 --- a/Src/A69WD/Net/cA69Engine2.cs +++ b/Src/A69WD/Net/cA69Engine2.cs @@ -6,6 +6,8 @@ using System.Text; using System.Windows.Forms; using System.Security.Policy; using System.Net; +using static System.Windows.Forms.LinkLabel; +using System.ComponentModel; namespace A69WD { @@ -93,7 +95,10 @@ namespace A69WD { client.Headers.Add("Cookie", "euconsent-v2=CPG74goPG74goAKAeAENBcCsAP_AAH_AAAwIH3tf_X__bX9j-_59__t0eY1f9_7_v-wzjhfdt-8N2P_X_L0X42E7PF36pq4KuR4Eu3LBIQNlHOHUTUmw6okVrTPsak2Mr7NKJ7LEmnMZe2dYGHtfn91TuZKY7_78_9fz3_-v_v___9f3r-3_3__59X---_e_V399zLv9__3__9gfiASYal8AF2JY4Mk0aVQogQhWEh0AoAKKAYWiawgYXBTsrAI9QQMAEJqAjAiBBiCjFgEAAgEASERASAHggEQBEAgABACpAQgAImAQWAFgYBAAKAaFiBFAEIEhBkcFRymBARItFBPZWAJRd7GmEIZRYAUCj-iowEShBAsDISFg5gAA.YAAAAAAAAAAA"); client.Headers.Add("DNT", "1"); client.Headers.Add("TE", "Trailers"); - client.DownloadFile(new Uri(lk), fileName); + client.DownloadProgressChanged += Client_DownloadProgressChanged; + client.DownloadFileCompleted += Client_DownloadFileCompleted; + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); + client.DownloadFile(new Uri(lk), fn); } } @@ -333,6 +338,108 @@ namespace A69WD { return "Unk"; } + + + + + + + private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { + MessageBox.Show("Download complete !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); + + return; + object obj = new Object(); + lock (obj) { + + conteggioEvt++; + + StringBuilder sb; + if (state == EngineStatusEnum.Starting) state = EngineStatusEnum.Started; + + WebBrowser wb = sender as WebBrowser; + string link = wb.Url.ToString(); + + // Se link di logon, devo terminare i download + if (link == "https://www.annunci69.it/accedi.php?nop") { + // Finito download: + state = EngineStatusEnum.Stopping; + // salvo gli archivi: + SaveState(); + return; + } + + // Elimino ulteriori ripetizioni dell'evento: + if (downloaded.Contains(link)) return; + + // aggiorno UI + RaiseEvent_Updating(wb.Name + " - (Evt" + conteggioEvt.ToString("0000") + ") Donwloaded: " + link.Replace("https://www.annunci69.it/racconti-erotici/", "./")); + + // Se pagina รจ un racconto, lo salvo + if (IsRacLink(link)) { + sb = new StringBuilder(); + sb.Append(wb.Document.Body.InnerHtml); + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(link)); + //cTools.WriteTextFile(fn, sb, Encoding.GetEncoding(wb.Document.Encoding)); + cTools.WriteTextFile(fn, sb); + } + + // Registro che ho eseguito il download del link + downloaded.Add(link); + + // Ciclo su tutti i link estratti dalla pagina: + foreach (HtmlElement item in wb.Document.Links) { + link = item.GetAttribute("href"); + // Se link nuovo: + if (!allLinks.Contains(link)) { + // elimino il link di logon + if (link == "https://www.annunci69.it/accedi.php?nop") break; + // Link nuovo, mi comporto di conseguenza alla tipologia: + if (IsRacLink(link)) { + // Link ad un racconto + allLinks.Add(link); + if (downRac) { toDownload.Add(link); } + racLinks.Add(link); + } else { + if (IsIdxLink(link)) { + // Link ad un indice + allLinks.Add(link); + toDownload.Add(link); + } else { + // Link non riconosciuto, lo scarto + ; + } + } + } + } // fine ciclo sui link estratti + + // Se ho raggiunto il massimo numero di link, o non vi sono link da downloadare, mi fermo: + if ((toDownload.Count > 0) && (state == EngineStatusEnum.Started)) { + // proseguo con il download: + string lk = toDownload.First(); + toDownload.Remove(lk); + wb.Navigate(lk); + } else { + // Finito download: + state = EngineStatusEnum.Stopping; + // salvo gli archivi: + SaveState(); + } + + }//lock + + } + + private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { + ////Update progress bar & label + //Invoke(new MethodInvoker(delegate () { + // progressBar.Minimum = 0; + // double receive = double.Parse(e.BytesReceived.ToString()); + // double total = double.Parse(e.TotalBytesToReceive.ToString()); + // double percentage = receive / total * 100; + // lblStatus.Text = $"Downloaded {string.Format("{0:0.##}", percentage)}%"; + // progressBar.Value = int.Parse(Math.Truncate(percentage).ToString()); + //})); + } }//class cA69Engine2 diff --git a/Src/A69WD/Net/frmDownloader.cs b/Src/A69WD/Net/frmDownloader.cs index 17d4a81..cc9318c 100644 --- a/Src/A69WD/Net/frmDownloader.cs +++ b/Src/A69WD/Net/frmDownloader.cs @@ -23,9 +23,12 @@ namespace A69WD { this.Text = String.Format("A69WD - Dowloader Testi Vrs {0}", cTools.AssemblyVersion); engine = new cA69Engine(this.wb1); engine.Updating += Engine_Updating; + engine2 = new cA69Engine2(); + engine2.Updating += Engine_Updating; } cA69Engine engine = null; + cA69Engine2 engine2 = null; /// @@ -180,7 +183,7 @@ namespace A69WD { #region Test ENGINE2 private void button1_Click(object sender, EventArgs e) { - + engine2.Start(true); }