From d09e9cbf39d43488d3d9a256a38c9ff7321017e0 Mon Sep 17 00:00:00 2001 From: CSiCoAlm Date: Thu, 1 Jan 2026 16:12:28 +0100 Subject: [PATCH] Update della UI dopo l'upgrade dello skraper e dell'importer --- Src/A69WD/A69WD.csproj | 2 - Src/A69WD/Properties/AssemblyInfo.cs | 22 +- Src/A69WD/Service/Service_Crawler.cs | 7 +- Src/A69WD/Service/Service_Importer.cs | 1 - Src/A69WD/Site/cSite_A69.cs | 383 -------------------------- Src/A69WD/Site/iSiteType.cs | 54 ---- Src/A69WD/UI/frmReader.Designer.cs | 74 +---- Src/A69WD/UI/frmReader.cs | 162 +---------- 8 files changed, 39 insertions(+), 666 deletions(-) delete mode 100644 Src/A69WD/Site/cSite_A69.cs delete mode 100644 Src/A69WD/Site/iSiteType.cs diff --git a/Src/A69WD/A69WD.csproj b/Src/A69WD/A69WD.csproj index e824ec6..3e8851e 100644 --- a/Src/A69WD/A69WD.csproj +++ b/Src/A69WD/A69WD.csproj @@ -68,13 +68,11 @@ - - Form diff --git a/Src/A69WD/Properties/AssemblyInfo.cs b/Src/A69WD/Properties/AssemblyInfo.cs index afdef1b..25d85c1 100644 --- a/Src/A69WD/Properties/AssemblyInfo.cs +++ b/Src/A69WD/Properties/AssemblyInfo.cs @@ -32,8 +32,26 @@ using System.Runtime.InteropServices; // È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build // usando l'asterisco '*' come illustrato di seguito: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.5.1.0")] -[assembly: AssemblyFileVersion("0.5.1.0")] +[assembly: AssemblyVersion("0.5.2.0")] +[assembly: AssemblyFileVersion("0.5.2.0")] + + +/* + * + * Vrs 0.5.2.0 + * + * Compilata da CSiCoAlm il 2026/01/01 + * Refactoring del downloader per poterlo utilizzare in ATDB: + * - imglobata la classe iSite nella iLink + * - impostato cartelle di destinazione dei file per distinguere la diagnostica del lavoro + * + * + * ToDo: + * - Aggiungere gestione parallela della FIFO secondo vecchi modello per aumentare il feedback alla UI + * - Inserire anche l'estrazione dei racconti + * - Inserire funzionalità avanzate sul lettore + * + */ /* diff --git a/Src/A69WD/Service/Service_Crawler.cs b/Src/A69WD/Service/Service_Crawler.cs index 73523fe..daaaf42 100644 --- a/Src/A69WD/Service/Service_Crawler.cs +++ b/Src/A69WD/Service/Service_Crawler.cs @@ -9,7 +9,6 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using A69WD.Net; -using A69WD.Site; @@ -30,9 +29,6 @@ namespace A69WD.Service { private int _completati = 0; private int _errori = 0; - // HttpClient autenticato (fornito da AuthService) - private iSiteType _site; - // Riferimenti ai controlli UI per aggiornare i contatori e la progress bar private readonly StatusStrip _sb; @@ -47,8 +43,7 @@ namespace A69WD.Service { /// /// Avvia il thread worker che consuma la coda di URL. /// - public void StartWorker(iSiteType site) { - _site = site; + public void StartWorker() { _workerThread = new Thread(ProcessQueue) { IsBackground = true }; _workerThread.Start(); } diff --git a/Src/A69WD/Service/Service_Importer.cs b/Src/A69WD/Service/Service_Importer.cs index bff0b7d..822ac18 100644 --- a/Src/A69WD/Service/Service_Importer.cs +++ b/Src/A69WD/Service/Service_Importer.cs @@ -8,7 +8,6 @@ using System.Threading.Tasks; using System.Windows.Forms; using A69WD.Data; using A69WD.Net; -using A69WD.Site; diff --git a/Src/A69WD/Site/cSite_A69.cs b/Src/A69WD/Site/cSite_A69.cs deleted file mode 100644 index ee5ae9a..0000000 --- a/Src/A69WD/Site/cSite_A69.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using A69WD.Data; -using A69WD.Net; -using HtmlAgilityPack; -using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrackBar; - -namespace A69WD.Site { - - - public class cSite_A69 : iSiteType { - - private readonly HttpClient client; - private readonly string nickname = @"Toky78"; - private readonly string password = @"p!fw05Q9Hc6j5"; - private bool logged = false; - - - public bool Logged => logged; - - /// - /// Esegue l'autenticazione al sito: - /// - Scarica la pagina di autenticazione - /// - analizza quanto scaricato per determinare i campi dinamici 'ts' e 'token' - /// - prepara la risposta al form di identificazione - /// - invia il POST di autenticazione - /// - analizza la risposta per virificare il corretto login - /// - public async Task Authenticate() { - try { - // 1) GET pagina di login - Console.WriteLine("A69 - Richiedo la pagina di login..."); - Logger.Information("A69 - Richiedo la pagina di login..."); - string loginPageHtml = await client.GetStringAsync(cLink_A69.LoginPageUrl); - - // 2) Parsing HTML per estrarre ts e token - var doc = new HtmlAgilityPack.HtmlDocument(); - doc.LoadHtml(loginPageHtml); - - string ts = doc.DocumentNode - .SelectSingleNode("//input[@name='ts']") - ?.GetAttributeValue("value", ""); - string token = doc.DocumentNode - .SelectSingleNode("//input[@name='token']") - ?.GetAttributeValue("value", ""); - - if (string.IsNullOrWhiteSpace(ts) || string.IsNullOrWhiteSpace(token)) { - Console.WriteLine("A69 - Impossibile estrarre 'ts' o 'token' dalla pagina di login."); - Logger.Information("A69 - Impossibile estrarre 'ts' o 'token' dalla pagina di login."); - return logged; - } - Console.WriteLine($"A69 - Parametri dinamici trovati: ts={ts}, token={token}"); - Logger.Information($"A69 - Parametri dinamici trovati: ts={ts}, token={token}"); - - // 3) POST login con valori dinamici - var loginData = new FormUrlEncodedContent(new[] - { - new KeyValuePair("nick", nickname), - new KeyValuePair("pwd", password), - new KeyValuePair("ricordami","1"), - new KeyValuePair("login", "Entra"), - new KeyValuePair("ts", ts), - new KeyValuePair("token", token) - }); - - Console.WriteLine("Invio credenziali di login..."); - var loginResponse = await client.PostAsync(cLink_A69.LoginPostUrl, loginData); - - if (!loginResponse.IsSuccessStatusCode) { - Console.WriteLine($"A69 - Login fallito. HTTP {(int)loginResponse.StatusCode} {loginResponse.ReasonPhrase}"); - Logger.Information($"A69 - Login fallito. HTTP {(int)loginResponse.StatusCode} {loginResponse.ReasonPhrase}"); - return logged; - } - - // Verifica semplice: sulla pagina di login effettuato, ricerco il nome dell'utente: - string loginResult = await loginResponse.Content.ReadAsStringAsync(); - if (loginResult.Contains(nickname)) { - Console.WriteLine("A69 - Login effettuato con successo! Sessione autenticata attiva."); - Logger.Information("A69 - Login effettuato con successo! Sessione autenticata attiva."); - logged = true; - } else { - Console.WriteLine("A69 - Login non riuscito: il server ha restituito un messaggio di errore."); - Logger.Information("A69 - Login non riuscito: il server ha restituito un messaggio di errore."); - logged = false; - } - - } catch (Exception ex) { - Console.WriteLine($"Errore generale: {ex.Message}"); - Logger.Information($"Errore generale: {ex.Message}"); - } - return logged; - } - - /// - /// Codice da eseguire per ciascun A69 link: - /// - scarico l'url indicato - /// - se richiesto lo salvo come file di testo - /// - analizzo il documento html ed estraggo tutti gli url ad altre pagine di link - /// - analizzo il documento html ed estraggo tutti gli url a racconti - /// - analizzo il documento html ed estraggo il testo del racconto - /// - /// - /// - public async Task> CrawlPageAsync(iLink lk) { - var newlinks = new List(); - - try { - Console.WriteLine($"A69 - Scarico: {lk.URL}"); - HtmlDocument tdoc = null; - string thtml = ""; - - #region ToConfirm - if (lk.Status == eLinkState.ToConfirm) { - // Eseguo la verifica se link da downloadare - lk.Status = eLinkState.ToDownload; - } - #endregion - - #region ToDownload - if (lk.Status == eLinkState.ToDownload) { - lk.Status = eLinkState.OnDownload; - } - #endregion - - #region OnDownload - if (lk.Status == eLinkState.OnDownload) { - // Scarico il file - var resp = await client.GetAsync(lk.URL); - if (!resp.IsSuccessStatusCode) { - Console.WriteLine($"A69 - Errore HTTP {(int)resp.StatusCode} {resp.ReasonPhrase} per {lk.URL}"); - lk.Status = eLinkState.Error; - //App.DB.LinkLog(lk); - return newlinks; - } - // Scarico la pagina - thtml = await client.GetStringAsync(lk.URL); - tdoc = new HtmlDocument(); - tdoc.LoadHtml(thtml); - // Salvo il file downloadato - //SaveToFile(thtml, lk.FilePath, lk.FileName); - - lk.Status = eLinkState.ToAnalize; - } - #endregion - - #region ToAnalize - { - if (lk.Status == eLinkState.ToAnalize) { - List tmpLk = new List(); - - #region Estraggo gli url ad indici: - { - /* - * Gli url delle pagine di indice sono del tipo: - * - * - * - */ - try { - // Estraggo i link alle altre pagine: - var tnodes = tdoc.DocumentNode.SelectNodes("//div[@id='pagination']//ul//li//a[@href]"); - if (tnodes != null) { - foreach (var link in tnodes) { - var href = link.GetAttributeValue("href", ""); - if (!string.IsNullOrEmpty(href) && href.StartsWith("/racconti-erotici/racconti_lista.php?genere=")) - tmpLk.Add(href); //tmpLk.Add(cLink_A69.PageBase + href); - } - } - // Rimuove duplicati e ordina alfabeticamente - tmpLk = tmpLk - .OrderBy(s => s) // ordina alfabeticamente - .Distinct() // elimina duplicati - .ToList(); - // Inserisco i link trovati - foreach (string ilk in tmpLk) { - string[] separator = new string[] { "&pagina=" }; - string[] txt = ilk.Split(separator, StringSplitOptions.RemoveEmptyEntries); - string url = cLink_A69.PageBase + ilk; - string name = txt[0].Replace("/racconti-erotici/racconti_lista.php?genere=", "_A69_") + "_" + int.Parse(txt[1]).ToString("0000") + ".html"; - newlinks.Add(new cLink_A69(url, name)); - } - } catch (Exception ex) { - Logger.Error("Errore analisi Idx link dal " + lk.FileName + " - " + ex.Message); - SaveToFile(thtml, Cfg.Settings.PathSrcErrOnExtract, lk.FileName); - } - } - #endregion - - #region Estraggo gli url a racconti: - { - /* - * - * I link ai racconti sono dei pulsanti così formati: - * - */ - try { - // Estraggo i link ai racconti: - tmpLk = new List(); - // Estraggo i link alle altre pagine: - var tnodes = tdoc.DocumentNode.SelectNodes("//div[@class='continua']//a[@href]"); - if (tnodes != null) { - foreach (var link in tnodes) { - var href = link.GetAttributeValue("href", ""); - if (!string.IsNullOrEmpty(href) && href.StartsWith("/racconti-erotici/") && (href.EndsWith(".html") || href.EndsWith(".htm"))) - tmpLk.Add(href); //tmpLk.Add(cLink_A69.PageBase + href); - } - } - // Rimuove duplicati e ordina alfabeticamente - tmpLk = tmpLk - .OrderBy(s => s) // ordina alfabeticamente - .Distinct() // elimina duplicati - .ToList(); - // Inserisco i link trovati - foreach (string ilk in tmpLk) { - string url = cLink_A69.PageBase + ilk; - string name = ilk.Replace("/racconti-erotici/", "A69_").Replace(@"/", "_"); - newlinks.Add(new cLink_A69(url, name)); - } - } catch (Exception ex) { - Logger.Error("Errore analisi Idx link dal " + lk.FileName + " - " + ex.Message); - SaveToFile(thtml, Cfg.Settings.PathSrcErrOnExtract, lk.FileName); - } - } - #endregion - - #region Estraggo il racconto dal file e lo inserisco nel DB - if (lk.FileName.StartsWith("A69_")) { - // Link ad un racconto - cRac rac = lk.EstraiRac(tdoc); - if (rac != null) { - // Racconto estratto correttamente, lo salvo sul DB - int res = App.DB.ImportRac(rac); - if (res>0) { - // Racconto salvato correttamente sul DB - SaveToFile(thtml, Cfg.Settings.PathSrcDone, lk.FileName); - } else { - // Errore nel salvataggio sul DB - SaveToFile(thtml, Cfg.Settings.PathSrcErrOnSave, lk.FileName); - } - } else { - // Estrazione del racconto fallita - SaveToFile(thtml, Cfg.Settings.PathSrcErrOnExtract, lk.FileName); - } - } else { - // Link ad un indice - SaveToFile(thtml, Cfg.Settings.PathIdxDone, lk.FileName); - } - #endregion - - lk.Status = eLinkState.End; - App.DB.LinkLog(lk); - } - } - #endregion - - #region End - if (lk.Status == eLinkState.End) { - } - #endregion - - #region Error - if (lk.Status == eLinkState.Error) { - } - #endregion - - #region Abort - if (lk.Status == eLinkState.Abort) { - } - #endregion - - #region Cancel - if (lk.Status == eLinkState.Cancel) { - } - #endregion - - Console.WriteLine("Link.Count=" + newlinks.Count.ToString("00")); - - } catch (Exception ex) { - Console.WriteLine($"Errore con {lk.URL}: {ex.Message}"); - lk.Status = eLinkState.Error; - App.DB.LinkLog(lk); - } - return newlinks; - } - private void SaveToFile(string txtHTML, string filePath, string fileName) { - System.IO.StreamWriter tsw = new System.IO.StreamWriter(System.IO.Path.Combine(filePath, fileName), false, Encoding.UTF8); - tsw.Write(txtHTML); - } - - public async Task> CrawlPageAsyncTest1(iLink lk) { - var newlinks = new List(); - try { - // Scarico il file - var resp = await client.GetAsync(lk.URL); - if (!resp.IsSuccessStatusCode) { - Console.WriteLine($"A69 - Errore HTTP {(int)resp.StatusCode} {resp.ReasonPhrase} per {lk.URL}"); - lk.Status = eLinkState.Error; - //App.DB.LinkLog(lk); - return newlinks; - } - // Scarico la pagina - var thtml = await client.GetStringAsync(lk.URL); - // Salvo il file downloadato - System.IO.StreamWriter tsw = new System.IO.StreamWriter(System.IO.Path.Combine(lk.FilePath, lk.FileName), false, Encoding.UTF8); - tsw.Write(thtml); - - Console.WriteLine("Link.Count=" + newlinks.Count.ToString("00")); - - } catch (Exception ex) { - Console.WriteLine($"Errore con {lk.URL}: {ex.Message}"); - lk.Status = eLinkState.Error; - //App.DB.LinkLog(lk); - } - return newlinks; - } - - public async Task> CrawlPageAsyncTest2(iLink lk) { - var newlinks = new List(); - try { - // Scarico il file - var resp = await client.GetAsync(lk.URL); - if (!resp.IsSuccessStatusCode) { - Console.WriteLine($"A69 - Errore HTTP {(int)resp.StatusCode} {resp.ReasonPhrase} per {lk.URL}"); - lk.Status = eLinkState.Error; - //App.DB.LinkLog(lk); - return newlinks; - } - // Scarico la pagina - HttpClient tmpClient = new HttpClient(_handler); - var thtml = await tmpClient.GetStringAsync(lk.URL); - // Salvo il file downloadato - System.IO.StreamWriter tsw = new System.IO.StreamWriter(System.IO.Path.Combine(lk.FilePath, lk.FileName), false, Encoding.UTF8); - tsw.Write(thtml); - - Console.WriteLine("Link.Count=" + newlinks.Count.ToString("00")); - - } catch (Exception ex) { - Console.WriteLine($"Errore con {lk.URL}: {ex.Message}"); - lk.Status = eLinkState.Error; - //App.DB.LinkLog(lk); - } - return newlinks; - } - - public cSite_A69() { - _handler = new HttpClientHandler { - CookieContainer = new CookieContainer(), - UseCookies = true, - AllowAutoRedirect = true, - AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate - }; - - client = new HttpClient(_handler); - client.Timeout = TimeSpan.FromSeconds(60); - client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); - client.DefaultRequestHeaders.Referrer = new Uri(cLink_A69.LoginPageUrl); - } - HttpClientHandler _handler = null; - - - - - }//class cSite_A69 - -}//namespace A69WD.Site diff --git a/Src/A69WD/Site/iSiteType.cs b/Src/A69WD/Site/iSiteType.cs deleted file mode 100644 index 737f06d..0000000 --- a/Src/A69WD/Site/iSiteType.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using A69WD.Net; - - -/* - * - * Interfaccia iSiteType - * --------------------- - * Questa interfaccia definisce il contratto per le diverse tipologie di siti gestiti dal crawler. - * Ogni sito deve implementare: - * - Authenticate(): eventuale autenticazione al sito (PUT, POST, ecc.) - * - ValidateLink(string href): regole di validazione dei link estratti - * - CrawlPageAsync(string url): scarica una pagina e la analizza - * - * In questo modo il programma principale può distinguere facilmente tra siti autenticati e pubblici, - * mantenendo il codice modulare ed estensibile. - * - */ - - - -namespace A69WD.Site { - - /// - /// Interfaccia per gestire le operazioni da fare su un sito - /// - public interface iSiteType { - - /// - /// Booleano per sapere se siamo autenticati al sito - /// (sempre true per i siti senza autenticazione) - /// - bool Logged { get; } - - /// - /// Esegue l'autenticazione al sito - /// - Task Authenticate(); - - /// - /// Elaborazione della pagina linkata: - /// Scarica il link e analizza quanto downloadato - /// - /// - /// - Task> CrawlPageAsync(iLink lk); - - }//interface iSiteType - -}//namespace A69WD.Site diff --git a/Src/A69WD/UI/frmReader.Designer.cs b/Src/A69WD/UI/frmReader.Designer.cs index e6d3a34..346d918 100644 --- a/Src/A69WD/UI/frmReader.Designer.cs +++ b/Src/A69WD/UI/frmReader.Designer.cs @@ -28,12 +28,8 @@ this.sbMessage = new System.Windows.Forms.ToolStripStatusLabel(); this.sbProgressBar = new System.Windows.Forms.ToolStripProgressBar(); this.sbStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.btnTest = new System.Windows.Forms.Button(); - this.btnTest2 = new System.Windows.Forms.Button(); - this.btnTest3 = new System.Windows.Forms.Button(); + this.btnTest1 = new System.Windows.Forms.Button(); this.pnlTop = new System.Windows.Forms.Panel(); - this.btn = new System.Windows.Forms.Button(); - this.btnTest5 = new System.Windows.Forms.Button(); this.sb.SuspendLayout(); this.pnlTop.SuspendLayout(); this.SuspendLayout(); @@ -97,69 +93,25 @@ this.sbStatusLabel.Tag = "Label"; this.sbStatusLabel.ToolTipText = "Stato di eventuali operazioni in background"; // - // btnTest + // btnTest1 // - this.btnTest.Location = new System.Drawing.Point(11, 5); - this.btnTest.Name = "btnTest"; - this.btnTest.Size = new System.Drawing.Size(62, 32); - this.btnTest.TabIndex = 4; - this.btnTest.Text = "Test"; - this.btnTest.UseVisualStyleBackColor = true; - this.btnTest.Click += new System.EventHandler(this.btnTest_Click); - // - // btnTest2 - // - this.btnTest2.Location = new System.Drawing.Point(79, 5); - this.btnTest2.Name = "btnTest2"; - this.btnTest2.Size = new System.Drawing.Size(62, 32); - this.btnTest2.TabIndex = 5; - this.btnTest2.Text = "Test 2"; - this.btnTest2.UseVisualStyleBackColor = true; - this.btnTest2.Click += new System.EventHandler(this.btnTest2_Click); - // - // btnTest3 - // - this.btnTest3.Location = new System.Drawing.Point(147, 5); - this.btnTest3.Name = "btnTest3"; - this.btnTest3.Size = new System.Drawing.Size(62, 32); - this.btnTest3.TabIndex = 6; - this.btnTest3.Text = "Test 3"; - this.btnTest3.UseVisualStyleBackColor = true; - this.btnTest3.Click += new System.EventHandler(this.btnTest3_Click); + this.btnTest1.Location = new System.Drawing.Point(11, 5); + this.btnTest1.Name = "btnTest1"; + this.btnTest1.Size = new System.Drawing.Size(62, 32); + this.btnTest1.TabIndex = 4; + this.btnTest1.Text = "Test"; + this.btnTest1.UseVisualStyleBackColor = true; + this.btnTest1.Click += new System.EventHandler(this.btnTest1_Click); // // pnlTop // - this.pnlTop.Controls.Add(this.btnTest5); - this.pnlTop.Controls.Add(this.btn); - this.pnlTop.Controls.Add(this.btnTest3); - this.pnlTop.Controls.Add(this.btnTest); - this.pnlTop.Controls.Add(this.btnTest2); + this.pnlTop.Controls.Add(this.btnTest1); this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; this.pnlTop.Location = new System.Drawing.Point(0, 0); this.pnlTop.Name = "pnlTop"; this.pnlTop.Size = new System.Drawing.Size(700, 42); this.pnlTop.TabIndex = 0; // - // btn - // - this.btn.Location = new System.Drawing.Point(215, 5); - this.btn.Name = "btn"; - this.btn.Size = new System.Drawing.Size(62, 32); - this.btn.TabIndex = 7; - this.btn.Text = "Test 4"; - this.btn.UseVisualStyleBackColor = true; - this.btn.Click += new System.EventHandler(this.btn_Click); - // - // btnTest5 - // - this.btnTest5.Location = new System.Drawing.Point(283, 5); - this.btnTest5.Name = "btnTest5"; - this.btnTest5.Size = new System.Drawing.Size(62, 32); - this.btnTest5.TabIndex = 8; - this.btnTest5.Text = "Test 5"; - this.btnTest5.UseVisualStyleBackColor = true; - this.btnTest5.Click += new System.EventHandler(this.btnTest5_Click); - // // frmReader // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -187,11 +139,7 @@ private System.Windows.Forms.ToolStripStatusLabel sbMessage; private System.Windows.Forms.ToolStripProgressBar sbProgressBar; private System.Windows.Forms.ToolStripStatusLabel sbStatusLabel; - private System.Windows.Forms.Button btnTest; - private System.Windows.Forms.Button btnTest2; - private System.Windows.Forms.Button btnTest3; + private System.Windows.Forms.Button btnTest1; private System.Windows.Forms.Panel pnlTop; - private System.Windows.Forms.Button btn; - private System.Windows.Forms.Button btnTest5; } } \ No newline at end of file diff --git a/Src/A69WD/UI/frmReader.cs b/Src/A69WD/UI/frmReader.cs index 01cbbd7..9014c2e 100644 --- a/Src/A69WD/UI/frmReader.cs +++ b/Src/A69WD/UI/frmReader.cs @@ -11,7 +11,6 @@ using System.Windows.Forms; using A69WD.Data; using A69WD.Net; using A69WD.Service; -using A69WD.Site; namespace A69WD.UI { public partial class frmReader : Form { @@ -23,7 +22,6 @@ namespace A69WD.UI { private Service_Crawler serviceCrawler = null; private Service_Importer ServiceImporter = null; - A69WD.Site.iSiteType siteA69 = null; public frmReader() { InitializeComponent(); @@ -63,6 +61,10 @@ namespace A69WD.UI { mImpStart.Enabled = true; mImpStop.Enabled = false; + // Update UI + pnlTop.Enabled = false; + pnlTop.Visible = false; + } /// @@ -676,20 +678,6 @@ namespace A69WD.UI { mImpStart.Enabled = false; mImpStop.Enabled = false; - // - Creo istanza del client per il sito con autenticazione: - sbStatusLabel.Text = "Login on A69"; - siteA69 = new cSite_A69(); - - // - Eseguo l'autenticazione - bool res = await siteA69.Authenticate(); - if (res) { - sbStatusLabel.Text = "A69 autenticated"; - Logger.Information("Sito A69 loggato: " + res.ToString()); - } else { - Logger.Information("Login Fault"); - return; - } - // - Verifico path per il download if (!System.IO.Directory.Exists(Cfg.Settings.PathDownloadWorking)) System.IO.Directory.CreateDirectory(Cfg.Settings.PathDownloadWorking); @@ -701,7 +689,7 @@ namespace A69WD.UI { return; } // avvio il servizio - serviceCrawler.StartWorker(siteA69); + serviceCrawler.StartWorker(); } void MenuItem_Skraping_Stop_Click(object sender, EventArgs e) { @@ -746,147 +734,11 @@ namespace A69WD.UI { cTools.ShowOnNotepad(Cfg.Settings.PathFileLogs); } - private async void btnTest_Click(object sender, EventArgs e) { + private void btnTest1_Click(object sender, EventArgs e) { // Test download multipli con sempre lo stesso client per condividere la sessione - - // - Creo istanza del client per il sito con autenticazione: - sbStatusLabel.Text = "Login on A69"; - cSite_A69 site = new cSite_A69(); - - // - Eseguo l'autenticazione - bool res = await site.Authenticate(); - if (res) { - sbStatusLabel.Text = "A69 autenticated"; - Logger.Information("Sito A69 loggato: " + res.ToString()); - } else { - Logger.Information("Login Fault"); - return; - } - - // - Verifico path per il download - if (!System.IO.Directory.Exists(Cfg.Settings.PathDownloadWorking)) System.IO.Directory.CreateDirectory(Cfg.Settings.PathDownloadWorking); - cLink_A69[] lks = new cLink_A69[26]; - for (int i = 1; i < lks.Length; i++) { - lks[i] = new cLink_A69($"https://www.annunci69.it/racconti-erotici/racconti_lista.php?genere=altro&pagina={i}", $"_A69_altro_{i.ToString("0000")}.html"); - } - - DateTime start = DateTime.Now; - // - Download dei link come finora fato (steso client per condividere la sessione): - for (int i = 1; i < lks.Length; i++) { - List urls = await site.CrawlPageAsyncTest1(lks[i]); - } - DateTime end = DateTime.Now; - - sbStatusLabel.Text = (start - end).ToString(); - + ; } - private async void btnTest2_Click(object sender, EventArgs e) { - - // Test download multipli con client diversi ma che condividono solo la sessione - - // - Creo istanza del client per il sito con autenticazione: - sbStatusLabel.Text = "Login on A69"; - cSite_A69 site = new cSite_A69(); - - // - Eseguo l'autenticazione - bool res = await site.Authenticate(); - if (res) { - sbStatusLabel.Text = "A69 autenticated"; - Logger.Information("Sito A69 loggato: " + res.ToString()); - } else { - Logger.Information("Login Fault"); - return; - } - - // - Verifico path per il download - if (!System.IO.Directory.Exists(Cfg.Settings.PathDownloadWorking)) System.IO.Directory.CreateDirectory(Cfg.Settings.PathDownloadWorking); - cLink_A69[] lks = new cLink_A69[26]; - for (int i = 1; i < lks.Length; i++) { - lks[i] = new cLink_A69($"https://www.annunci69.it/racconti-erotici/racconti_lista.php?genere=altro&pagina={i}", $"_A69_altro_{i.ToString("0000")}.html"); - } - - DateTime start = DateTime.Now; - // - Download dei link come finora fato (steso client per condividere la sessione): - for (int i = 1; i < lks.Length; i++) { - List urls = await site.CrawlPageAsyncTest1(lks[i]); - } - DateTime end = DateTime.Now; - - sbStatusLabel.Text = (start - end).ToString(); - - } - - private async void btnTest3_Click(object sender, EventArgs e) { - - // Test download multipli con client diversi ma che condividono solo la sessione e nuovo refactoring - - // - Eseguo l'autenticazione - bool res = await cLink_A69.Authenticate(); - if (res) { - sbStatusLabel.Text = "A69 autenticated"; - Logger.Information("Sito A69 loggato: " + res.ToString()); - } else { - sbStatusLabel.Text = "Fault Login"; - Logger.Information("Login Fault"); - return; - } - - // - Verifico path per il download - if (!System.IO.Directory.Exists(Cfg.Settings.PathDownloadWorking)) System.IO.Directory.CreateDirectory(Cfg.Settings.PathDownloadWorking); - cLink_A69[] lks = new cLink_A69[26]; - for (int i = 1; i < lks.Length; i++) { - lks[i] = new cLink_A69($"https://www.annunci69.it/racconti-erotici/racconti_lista.php?genere=altro&pagina={i}", $"_A69_altro_{i.ToString("0000")}.html"); - } - - DateTime start = DateTime.Now; - // - Download dei link come finora fato (steso client per condividere la sessione): - for (int i = 1; i < lks.Length; i++) { - List urls = await lks[i].CrawlPageAsync(); - } - DateTime end = DateTime.Now; - - sbStatusLabel.Text = (start - end).ToString(); - - } - - private async void btn_Click(object sender, EventArgs e) { - - // - Creo istanza del client per il sito con autenticazione: - sbStatusLabel.Text = "Login on A69"; - siteA69 = new cSite_A69(); - - // - Eseguo l'autenticazione - bool res = await siteA69.Authenticate(); - if (res) { - sbStatusLabel.Text = "A69 autenticated"; - Logger.Information("Sito A69 loggato: " + res.ToString()); - } else { - Logger.Information("Login Fault"); - return; - } - - // - Verifico path per il download - if (!System.IO.Directory.Exists(Cfg.Settings.PathDownloadWorking)) System.IO.Directory.CreateDirectory(Cfg.Settings.PathDownloadWorking); - - // Preparo il servizio - string url = "https://www.annunci69.it/racconti-erotici/racconti_lista.php?genere=altro&pagina=1"; - string name = "_A69_altro_0001.html"; - serviceCrawler = new Service_Crawler(sb); - // Inserisco i link iniziali nella coda - serviceCrawler.EnqueueUrl(new cLink_A69(url, name)); - // avvio il servizio - serviceCrawler.StartWorker(siteA69); - - } - - private void btnTest5_Click(object sender, EventArgs e) { - // Test download multipli con client diversi ma che condividono solo la sessione - // Nuovo refactoring eliminando il Site inglobandolo sul Link - - - - } } }