diff --git a/Src/A69WD/Net/cLink_A69.cs b/Src/A69WD/Net/cLink_A69.cs index 5549c2e..3d3a7a2 100644 --- a/Src/A69WD/Net/cLink_A69.cs +++ b/Src/A69WD/Net/cLink_A69.cs @@ -90,7 +90,7 @@ namespace A69WD.Net { public static bool InsertStartLink(Service_Crawler service) { //string url = LinkIdxBase.Replace("{Categoria}", "altro").Replace("{ID}", "1"); //LinkIdxBase.Replace("{Categoria}", "trio").Replace("{ID}", "1"); //string name = "_A69_altro_0001.html"; //"_A69_trio_0001.html"; - //service.EnqueueUrl(new cLink_A69(url, name)); + //serviceCrawler.EnqueueUrl(new cLink_A69(url, name)); //return true; int i = 1; try { diff --git a/Src/A69WD/Service/Service_Importer.cs b/Src/A69WD/Service/Service_Importer.cs index d219fed..3ba7d0b 100644 --- a/Src/A69WD/Service/Service_Importer.cs +++ b/Src/A69WD/Service/Service_Importer.cs @@ -1,9 +1,16 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; +using System.Windows.Forms; +using A69WD.Data; +using A69WD.Net; +using A69WD.Site; + + namespace A69WD.Service { @@ -12,6 +19,103 @@ namespace A69WD.Service { // Thread worker che consuma la coda private Thread _workerThread; + private readonly Label _lblInCorso; + private readonly ProgressBar _progressBar; + private string _path; + // Contatori + private int _totali = 0; + private int _completati = 0; + private int _errori = 0; + + public Service_Importer(Label lblInCorso, ProgressBar pbStatus) { + _lblInCorso = lblInCorso; + _progressBar = pbStatus; + } + + public void StartWorker(string path) { + _path = path; + _workerThread = new Thread(ProcessWorking) { IsBackground = true }; + _workerThread.Start(); + } + + public void StopWorker() { + ; + } + + + + private async void ProcessWorking() { + string[] files = System.IO.Directory.GetFiles(_path, "A69_*.html"); + _totali = files.Length; + _completati = 0; + _errori = 0; + UpdateCounters(); + + // foreach (string file in files) { + // Task.Run(async () => { + // Logger.Warning($"Start estrazione racconto: {file}"); + // cLink_A69 lk = new cLink_A69("url", file); + // cRac rac = await lk.EstraiRac(file); + // if (rac != null) { + // // Racconto estratto correttamente, lo salvo sul DB + // Logger.Warning($"Start estrazione racconto: {file}"); + // int res = App.DB.ImportRac(rac); + // if (res != 1) { + // // Errore nel salvataggio + // Interlocked.Increment(ref _errori); + // } else { + // // salvataggio corretto + // Interlocked.Increment(ref _completati); + // } + // } else { + // Interlocked.Increment(ref _errori); + // } + // UpdateCounters(); + // }); + // } + + foreach (string file in files) { + string name = System.IO.Path.GetFileName(file); + Logger.Warning($"Import - Start estrazione racconto: {name}"); + + cLink_A69 lk = new cLink_A69(file, name); + cRac rac = await lk.EstraiRac(file); + if (rac != null) { + // Racconto estratto correttamente, lo salvo sul DB + Logger.Warning($"Import - estrazione corretta: {name}"); + int res = App.DB.ImportRac(rac); + if (res != 1) { + // errore nel salvataggio + Logger.Warning($"Import - errore nel salvataggio: {name}"); + Interlocked.Increment(ref _errori); + } else { + // salvataggio ok + Logger.Warning($"Import - racconto salvato: {name}"); + Interlocked.Increment(ref _completati); + } + } else { + Logger.Warning($"Import - estrazione errata: {name}"); + Interlocked.Increment(ref _errori); + } + UpdateCounters(); + } + UpdateCounters(); + } + + + private void UpdateCounters() { + if (_lblInCorso.InvokeRequired) { + _lblInCorso.Invoke(new Action(UpdateCounters)); + return; + } + + int daFare = _totali - _completati - _errori; + + _lblInCorso.Text = $"Totali: {_totali} - Completati: {_completati} - Errori: {_errori} - Da fare: {daFare}"; + + _progressBar.Maximum = _totali > 0 ? _totali : 1; + _progressBar.Value = _completati + _errori; + } }//class Service_Importer diff --git a/Src/A69WD/UI/frmDownloader.cs b/Src/A69WD/UI/frmDownloader.cs index 7260fe3..2e8a854 100644 --- a/Src/A69WD/UI/frmDownloader.cs +++ b/Src/A69WD/UI/frmDownloader.cs @@ -98,18 +98,18 @@ namespace A69WD { // Preparo il servizio - service = new Service_Crawler(lblST, pbST); + serviceCrawler = new Service_Crawler(lblST, pbST); // Inserisco i link iniziali nella coda - if (!cLink_A69.InsertStartLink(service)) { + if (!cLink_A69.InsertStartLink(serviceCrawler)) { lblST.Text = "Inserimento A69 start link fault."; return; } // avvio il servizio - service.StartWorker(siteA69); + serviceCrawler.StartWorker(siteA69); } - private Service_Crawler service = null; + private Service_Crawler serviceCrawler = null; private void btnShowLog_Click(object sender, EventArgs e) { @@ -125,8 +125,9 @@ namespace A69WD { private void btnClose_Click(object sender, EventArgs e) { //if (engine.Stop()) this.Close(); - // fermo il servizio - if (service != null) service.StopWorker(); + // fermo i servizi + if (serviceCrawler != null) serviceCrawler.StopWorker(); + if (serviceImporter != null) serviceImporter.StopWorker(); this.Close(); } @@ -157,20 +158,30 @@ namespace A69WD { // #endregion - private async void btnImport_Click(object sender, EventArgs e) { - string fp = "C:\\Commesse\\_zPrivate\\A69WD\\Test\\Down\\__A69_altro_Collarini-e-fantasie_166756.html"; - cLink_A69 lk = new cLink_A69("Tmp", "tmp"); - cRac rac = await lk.EstraiRac(fp); - if (rac != null) { - //foreach (string tag in rac.Tags) { - for (int i = 0; i