From e2dd13631a4f1777ce1cd2dc64013f63c03edb2d Mon Sep 17 00:00:00 2001 From: CSiCoAlm Date: Thu, 22 Sep 2022 10:48:33 +0200 Subject: [PATCH] - Autocommit - 2022/09/22 10:48:33 --- Src/A69WD/A69WD.csproj | 1 + Src/A69WD/Net/cA69Engine2.cs | 88 +++- Src/A69WD/Net/cA69Engine3.cs | 519 ++++++++++++++++++++++++ Src/A69WD/Net/frmDownloader.Designer.cs | 19 +- Src/A69WD/Net/frmDownloader.cs | 9 + 5 files changed, 625 insertions(+), 11 deletions(-) create mode 100644 Src/A69WD/Net/cA69Engine3.cs diff --git a/Src/A69WD/A69WD.csproj b/Src/A69WD/A69WD.csproj index 55f93d6..b1a8a36 100644 --- a/Src/A69WD/A69WD.csproj +++ b/Src/A69WD/A69WD.csproj @@ -63,6 +63,7 @@ + diff --git a/Src/A69WD/Net/cA69Engine2.cs b/Src/A69WD/Net/cA69Engine2.cs index abc97d3..efb2ebf 100644 --- a/Src/A69WD/Net/cA69Engine2.cs +++ b/Src/A69WD/Net/cA69Engine2.cs @@ -13,7 +13,7 @@ using System.Collections; namespace A69WD { - public class cA69Engine2 { + public class cA69Engine3 { #region Property: State, NumDownload, Tipologie, BASE_URL, BASE_LINK_IDX, BASE_LINK_RAC @@ -50,7 +50,7 @@ namespace A69WD { #region Costruttore e distruttore - public cA69Engine2() { + public cA69Engine3() { try { // Inizializzo gli archivi (dai file in memoria) allLinks = new List(); @@ -90,9 +90,9 @@ namespace A69WD { // proseguo con il download: string lk = toDownload.First(); toDownload.Remove(lk); - using (WebClient client = new WebClient()) { - string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); - client.Encoding = Encoding.Unicode; + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); + using (MyWebClient client = new MyWebClient(lk, fn)) { + //client.Encoding = Encoding.ASCII; client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"); client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 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"); @@ -102,15 +102,16 @@ namespace A69WD { client.DownloadProgressChanged += Client_DownloadProgressChanged; client.DownloadFileCompleted += Client_DownloadFileCompleted; client.DownloadDataCompleted += Client_DownloadDataCompleted; + client.DownloadStringCompleted += Client_DownloadStringCompleted; //client.DownloadFileAsync(new Uri(lk), fn); - client.DownloadDataAsync(new Uri(lk)); + //client.DownloadDataAsync(new Uri(lk)); + client.DownloadStringAsync(new Uri(lk)); } } return true; } - public bool Stop() { switch (state) { case EngineStatusEnum.NotReady: @@ -333,7 +334,13 @@ namespace A69WD { } - private string GetFileName(string url) { return url.Replace("https://www.annunci69.it/racconti-erotici/", "A69_").Replace("/", "_").Replace(":", "_").Replace(@"\", "_"); } + private string GetFileName(string url) { + if (IsRacLink(url)) { + return url.Replace("https://www.annunci69.it/racconti-erotici/", "A69_").Replace("/", "_").Replace(":", "_").Replace(@"\", "_"); + } else { + return url.Replace("https://www.annunci69.it/racconti-erotici/", "_A69_").Replace("/", "_").Replace(":", "_").Replace(@"\", "_"); + } + } static private bool IsIdxLink(string link) { return link.StartsWith(BASE_LINK_IDX); } static private bool IsRacLink(string link) { foreach (string tip in Tipologie) { if (link.StartsWith(BASE_LINK_RAC + tip + "/")) return true; } return false; } @@ -460,6 +467,60 @@ namespace A69WD { } } + private void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { + object obj = new Object(); + lock (obj) { + + conteggioEvt++; + + MyWebClient mwb = sender as MyWebClient; + + // aggiorno UI + RaiseEvent_Updating("(Evt" + conteggioEvt.ToString("0000") + ") Donwloaded: " + mwb.URL.Replace("https://www.annunci69.it/racconti-erotici/", "./")); + + // Salvo il testo downloadato + if (!e.Cancelled && e.Error == null) { + string textData = e.Result; + string FullFileName = mwb.FileName; + System.IO.StreamWriter sw = new System.IO.StreamWriter(FullFileName,false, Encoding.UTF8); + sw.Write(textData); + sw.Flush(); + sw.Close(); + } + + // 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); + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); + using (MyWebClient client = new MyWebClient(lk, fn)) { + //client.Encoding = Encoding.ASCII; + client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"); + client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + 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), fn); + client.DownloadProgressChanged += Client_DownloadProgressChanged; + client.DownloadFileCompleted += Client_DownloadFileCompleted; + client.DownloadDataCompleted += Client_DownloadDataCompleted; + client.DownloadStringCompleted += Client_DownloadStringCompleted; + //client.DownloadFileAsync(new Uri(lk), fn); + //client.DownloadDataAsync(new Uri(lk)); + client.DownloadStringAsync(new Uri(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 () { @@ -473,5 +534,16 @@ namespace A69WD { } }//class cA69Engine2 + public class MyWebClient : WebClient { + + public string URL; + public string FileName; + public MyWebClient(string url, string fileName) { + this.URL = url; + this.FileName = fileName; + } + + + } }//namespace A69WD diff --git a/Src/A69WD/Net/cA69Engine3.cs b/Src/A69WD/Net/cA69Engine3.cs new file mode 100644 index 0000000..ec2195a --- /dev/null +++ b/Src/A69WD/Net/cA69Engine3.cs @@ -0,0 +1,519 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Security.Policy; +using System.Net; +using static System.Windows.Forms.LinkLabel; +using System.ComponentModel; +using static System.Net.Mime.MediaTypeNames; +using System.Collections; + +namespace A69WD { + + public class cA69Engine2 { + + + #region Property: State, NumDownload, Tipologie, BASE_URL, BASE_LINK_IDX, BASE_LINK_RAC + + public EngineStatusEnum State { get { return state; } } + + public int NumDownload { get { return downloaded.Count; } } + + static string[] Tipologie = { "altro", "bdsm", "gay", "incesto", "lesbo", "orge", "prime", "scambio", "tradimenti", "trans", "trio" }; + + const string BASE_URL = "https://www.annunci69.it/racconti-erotici/{Tip}.html"; + const string BASE_LINK_IDX = "https://www.annunci69.it/racconti-erotici/racconti_lista.php"; + const string BASE_LINK_RAC = "https://www.annunci69.it/racconti-erotici/"; + + #endregion + + + #region Fields: allLinks, toDownload, downloaded, racLinks, dtStartTime, downRac, state + + List allLinks = null; + List toDownload = null; + List downloaded = null; + List racLinks = null; + + DateTime dtStartTime; + + bool downRac = false; + + EngineStatusEnum state = EngineStatusEnum.NotReady; + + + #endregion + + + #region Costruttore e distruttore + + public cA69Engine2() { + try { + // Inizializzo gli archivi (dai file in memoria) + allLinks = new List(); + toDownload = new List(); + downloaded = new List(); + racLinks = new List(); + int res = App.DB.LoadData(allLinks, toDownload, downloaded, racLinks); + RaiseEvent_Updating("Ricaricati " + res.ToString("000") + " link di racconti da scaricare"); + // Per ora non serializzo gli archivi e quindi carico le pagine iniziali delle 11 tipologie: + foreach (string tipologia in Tipologie) { + toDownload.Add(BASE_URL.Replace("{Tip}", tipologia)); + allLinks.Add(BASE_URL.Replace("{Tip}", tipologia)); + } + } catch (Exception ex) { + Logger.Log(new object[] { "Error Code: ER02220", "Errore in cA69Engine()", ex }); + throw ex; + } + state = EngineStatusEnum.StandBy; + } + + #endregion + + + #region Method: + + public bool Start(bool DownRac) { + if (state != EngineStatusEnum.StandBy) return false; + + dtStartTime = DateTime.Now; + downRac = DownRac; + + RaiseEvent_Updating("Inizio lo scrap dei link dei racconti"); + + state = EngineStatusEnum.Starting; + + if (toDownload.Count > 0) { + // proseguo con il download: + string lk = toDownload.First(); + toDownload.Remove(lk); + using (WebClient client = new WebClient()) { + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); + //client.Encoding = Encoding.ASCII; + client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"); + client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + 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), fn); + client.DownloadProgressChanged += Client_DownloadProgressChanged; + client.DownloadFileCompleted += Client_DownloadFileCompleted; + client.DownloadDataCompleted += Client_DownloadDataCompleted; + client.DownloadStringCompleted += Client_DownloadStringCompleted; + //client.DownloadFileAsync(new Uri(lk), fn); + //client.DownloadDataAsync(new Uri(lk)); + client.DownloadStringAsync(new Uri(lk)); + } + } + + return true; + } + + public bool Stop() { + switch (state) { + case EngineStatusEnum.NotReady: + case EngineStatusEnum.StandBy: + SaveState(); + state = EngineStatusEnum.Stopped; + return true; + case EngineStatusEnum.Starting: + case EngineStatusEnum.Started: + case EngineStatusEnum.Stopping: + state = EngineStatusEnum.Stopping; + return false; + case EngineStatusEnum.Stopped: + return true; + } + return true; + } + + public int ImportLinkFromFile(string SrcFilePath) { + int res = 0; + try { + if (File.Exists(SrcFilePath)) { + StreamReader sr = new StreamReader(SrcFilePath, Encoding.UTF8); + string row = sr.ReadLine().Trim(); + while (row != null) { + // verifico che non sia un commento: + if (!(row.StartsWith("#") || row.StartsWith("//"))) { + // Se link nuovo: + if (!allLinks.Contains(row)) { + // Link nuovo, mi comporto di conseguenza alla tipologia: + if (IsRacLink(row)) { + // Link ad un racconto + allLinks.Add(row); + toDownload.Add(row); + racLinks.Add(row); + res++; + } else { + if (IsIdxLink(row)) { + // Link ad un indice + allLinks.Add(row); + toDownload.Add(row); + res++; + } else { + // Link non riconosciuto, lo scarto + ; + } + } + } + } + //Read the next line + row = sr.ReadLine(); + } + } + + } catch (Exception ex) { + Logger.Log(new object[] { "Error Code: DB07403", "Errore in ImportLinkFromFile()", ex }); + if (res > 0) res = -1 * res; + } + return res; + } + + + #endregion + + + #region Eventi: + + /// + /// Evento che indica un cambiamento di stato nell'AnalizeManager + /// + public event EventHandler Updating; + + + #region Generazione degli eventi dell'engine verso le classi chiamanti: + + /// + /// Attiva l'evento che segnala un cambiamento di stato nel engine (per esempio, terminato il download di un singolo file) + /// + void RaiseEvent_Updating(string msg, int tot, int toDown, int down) { + EventHandler tmp = Updating; + if (null != tmp) tmp(this, new EngineEventArgs(msg, tot, toDown, down)); + } + + /// + /// Attiva l'evento che segnala un cambiamento di stato nel engine (per esempio, terminato il download di un singolo file) + /// + void RaiseEvent_Updating(string msg) { + EventHandler tmp = Updating; + if (null != tmp) tmp(this, new EngineEventArgs(msg, allLinks.Count, toDownload.Count, downloaded.Count)); + } + + #endregion + + + #endregion + + + int conteggioEvt = 0; + + + private void Wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { + 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 SaveState() { + int res = App.DB.SaveData(allLinks, toDownload, downloaded, racLinks); + + StringBuilder sb; + + // Finito download, salvo gli archivi: + string dt = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"); + + // Salvo archivio: AllLinks + sb = new StringBuilder(); + allLinks.Sort(); + foreach (string lnk in allLinks) { sb.AppendLine(lnk); } + cTools.WriteTextFile(Path.Combine(Cfg.Settings.PathAnalizadedIndexFile, string.Format("_A69_AllLinks_{0}.tes", dt)), sb); + + // Salvo archivio: toDownload + sb = new StringBuilder(); + toDownload.Sort(); + foreach (string lnk in toDownload) { sb.AppendLine(lnk); } + cTools.WriteTextFile(Path.Combine(Cfg.Settings.PathAnalizadedIndexFile, string.Format("_A69_toDownload_{0}.tes", dt)), sb); + + // Salvo archivio: Downloaded + sb = new StringBuilder(); + downloaded.Sort(); + foreach (string lnk in downloaded) { sb.AppendLine(lnk); } + cTools.WriteTextFile(Path.Combine(Cfg.Settings.PathAnalizadedIndexFile, string.Format("_A69_Downloaded_{0}.tes", dt)), sb); + + // Salvo archivio: RacLinks + sb = new StringBuilder(); + racLinks.Sort(); + foreach (string lnk in racLinks) { sb.AppendLine(lnk); } + cTools.WriteTextFile(Path.Combine(Cfg.Settings.PathAnalizadedIndexFile, string.Format("_A69_RacLinks_{0}.tes", dt)), sb); + + // avviso utente: + RaiseEvent_Updating(string.Format("Finito il download in {0}", DateTime.Now - dtStartTime)); + + state = EngineStatusEnum.Stopped; + + } + + + private string GetFileName(string url) { return url.Replace("https://www.annunci69.it/racconti-erotici/", "A69_").Replace("/", "_").Replace(":", "_").Replace(@"\", "_"); } + static private bool IsIdxLink(string link) { return link.StartsWith(BASE_LINK_IDX); } + static private bool IsRacLink(string link) { foreach (string tip in Tipologie) { if (link.StartsWith(BASE_LINK_RAC + tip + "/")) return true; } return false; } + + static public string LinkType(string link) { + if (IsIdxLink(link)) return "Idx"; + if (IsRacLink(link)) return "Rac"; + //return "Unknown"; + return "Unk"; + } + + + + + + + + private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { + object obj = new Object(); + lock (obj) { + + conteggioEvt++; + + StringBuilder sb; + if (state == EngineStatusEnum.Starting) state = EngineStatusEnum.Started; + + WebClient wb = sender as WebClient; + string link = wb.BaseAddress; + + return; + /* + // 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_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) { + //System.Threading.AutoResetEvent waiter = (System.Threading.AutoResetEvent)e.UserState; + + try { + // If the request was not canceled and did not throw + // an exception, display the resource. + if (!e.Cancelled && e.Error == null) { + byte[] data = (byte[])e.Result; + string textData = System.Text.Encoding.Unicode.GetString(data); + string FullFileName = @"C:\VMS\Prj\C#\A69WD\Test\Txt\Src\2022-09-22\A69_altroz.html"; + + //System.IO.StreamWriter sw = new System.IO.StreamWriter(FullFileName, false, Encoding.Unicode); + //sw.Write(textData); + //sw.Flush(); + //sw.Close(); + + using (var fs = new FileStream(FullFileName, FileMode.Create, FileAccess.Write)) { + fs.Write(data, 0, data.Length); + } + } + } finally { + // Let the main application thread resume. + //waiter.Set(); + } + } + + private void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { + object obj = new Object(); + lock (obj) { + + conteggioEvt++; + + if (!e.Cancelled && e.Error == null) { + string textData = e.Result; + string FullFileName = @"C:\VMS\Prj\C#\A69WD\Test\Txt\Src\2022-09-22\A69_altroZZ.html"; + //System.IO.StreamWriter sw = new System.IO.StreamWriter(FullFileName, false, Encoding.Unicode); + System.IO.StreamWriter sw = new System.IO.StreamWriter(FullFileName,false, Encoding.UTF8); + sw.Write(textData); + sw.Flush(); + sw.Close(); + + string lk = toDownload.First(); + toDownload.Remove(lk); + using (WebClient client = new WebClient()) { + string fn = Path.Combine(Cfg.Settings.PathAnalizadedRaccFile, GetFileName(lk)); + //client.Encoding = Encoding.ASCII; + client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"); + client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); + 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), fn); + client.DownloadProgressChanged += Client_DownloadProgressChanged; + client.DownloadFileCompleted += Client_DownloadFileCompleted; + client.DownloadDataCompleted += Client_DownloadDataCompleted; + client.DownloadStringCompleted += Client_DownloadStringCompleted; + client.DownloadFileAsync(new Uri(lk), fn); + //client.DownloadDataAsync(new Uri(lk)); + //client.DownloadStringAsync(new Uri(fn)); + } + + } + + }//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 + + +}//namespace A69WD diff --git a/Src/A69WD/Net/frmDownloader.Designer.cs b/Src/A69WD/Net/frmDownloader.Designer.cs index 23ecede..892972d 100644 --- a/Src/A69WD/Net/frmDownloader.Designer.cs +++ b/Src/A69WD/Net/frmDownloader.Designer.cs @@ -34,6 +34,7 @@ this.btnDownloadAll2 = new System.Windows.Forms.Button(); this.btnTest = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // btnClose @@ -116,7 +117,7 @@ // // btnDownloadAll2 // - this.btnDownloadAll2.Location = new System.Drawing.Point(69, 1); + this.btnDownloadAll2.Location = new System.Drawing.Point(45, 1); this.btnDownloadAll2.Name = "btnDownloadAll2"; this.btnDownloadAll2.Size = new System.Drawing.Size(97, 33); this.btnDownloadAll2.TabIndex = 18; @@ -126,7 +127,7 @@ // // btnTest // - this.btnTest.Location = new System.Drawing.Point(187, 1); + this.btnTest.Location = new System.Drawing.Point(148, 1); this.btnTest.Name = "btnTest"; this.btnTest.Size = new System.Drawing.Size(97, 33); this.btnTest.TabIndex = 19; @@ -136,7 +137,7 @@ // // button1 // - this.button1.Location = new System.Drawing.Point(290, 1); + this.button1.Location = new System.Drawing.Point(251, 1); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(97, 33); this.button1.TabIndex = 20; @@ -144,11 +145,22 @@ this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // + // button2 + // + this.button2.Location = new System.Drawing.Point(354, 1); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(97, 33); + this.button2.TabIndex = 21; + this.button2.Text = "Test Engine3"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // // frmDownloader // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(524, 74); + this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Controls.Add(this.btnTest); this.Controls.Add(this.btnDownloadAll2); @@ -178,5 +190,6 @@ private System.Windows.Forms.Button btnDownloadAll2; private System.Windows.Forms.Button btnTest; private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; } } \ No newline at end of file diff --git a/Src/A69WD/Net/frmDownloader.cs b/Src/A69WD/Net/frmDownloader.cs index cc9318c..82006e9 100644 --- a/Src/A69WD/Net/frmDownloader.cs +++ b/Src/A69WD/Net/frmDownloader.cs @@ -25,10 +25,13 @@ namespace A69WD { engine.Updating += Engine_Updating; engine2 = new cA69Engine2(); engine2.Updating += Engine_Updating; + engine3 = new cA69Engine3(); + engine3.Updating += Engine_Updating; } cA69Engine engine = null; cA69Engine2 engine2 = null; + cA69Engine3 engine3 = null; /// @@ -187,8 +190,14 @@ namespace A69WD { } + + #endregion + private void button2_Click(object sender, EventArgs e) { + engine3.Start(true); + } + }//class frmDownloader