diff --git a/Src/A69WD/General/cTools.cs b/Src/A69WD/General/cTools.cs
index 230de02..5a7155f 100644
--- a/Src/A69WD/General/cTools.cs
+++ b/Src/A69WD/General/cTools.cs
@@ -1,13 +1,14 @@
using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;
+using System.Linq;
using System.IO;
using System.Reflection;
using System.Text.RegularExpressions;
-
namespace A69WD {
public class cTools {
@@ -476,7 +477,7 @@ namespace A69WD {
/// Testo da formattare
/// Abilitare l'eliminazione di tutti i generici tag
/// Testo formattato
- public static string FormattaTesto(string txt, bool eliminaTagHtml) {
+ public static string FormattaTesto(string txt, bool eliminaTagHtml = true) {
try {
// Analisi dei tag prima di levarli:
string testo = Regex.Replace(txt, @"
", "\r\n", RegexOptions.IgnoreCase);
@@ -503,6 +504,20 @@ namespace A69WD {
}
// Special Entities dal sito https://www.htmlhelp.com/reference/html40/entities/special.html
+ // More can be added, see http://hotwired.lycos.com/webmonkey/reference/special_characters/
+ // Correggo risultato togliendo doppie linee e caratteri html:
+ testo = Regex.Replace(testo, @" ", " ", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"•", " * ", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"…", "…", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"™", "(tm)", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"©", "(c)", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"®", "(r)", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"⁄", "/", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"à", "à", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"è", "è", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"ì", "ì", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"ò", "ò", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"ù", "ù", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @""", "\"", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"&", "&", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"<", "<", RegexOptions.IgnoreCase);
@@ -527,8 +542,13 @@ namespace A69WD {
testo = Regex.Replace(testo, @"€", "€", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @""", "\"", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"&", "&", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"'", "'", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"<", "<", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @">", ">", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"Č", "Č", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"č", "č", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"Ě", "Ě", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"ě", "ě", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"œ", "œ", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"š", "š", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"Ÿ", "Ÿ", RegexOptions.IgnoreCase);
@@ -543,10 +563,13 @@ namespace A69WD {
testo = Regex.Replace(testo, @"”", "”", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"„", "„", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"†", "†", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"…", "…", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"
", " ", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"‰", "‰", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"‹", "‹", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"›", "›", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"€", "€", RegexOptions.IgnoreCase);
+ testo = Regex.Replace(testo, @"", " ", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @""", "\"", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"&", "&", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"<", "<", RegexOptions.IgnoreCase);
@@ -570,58 +593,17 @@ namespace A69WD {
testo = Regex.Replace(testo, @"›", "›", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"€", "€", RegexOptions.IgnoreCase);
-
-
- // Correggo risultato togliendo doppie linee e caratteri html:
- testo = Regex.Replace(testo, @" ", " ", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"•", " * ", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"<", "<", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"›", " > ", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @">", ">", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"™", "(tm)", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"©", "(c)", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"®", "(r)", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"⁄", "/", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"à", "à", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"è", "è", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"ì", "ì", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"ò", "ò", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"ù", "ù", RegexOptions.IgnoreCase);
-
-
- testo = Regex.Replace(testo, @"–", "–", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"—", "—", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"‘", "‘", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"’", "’", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"“", "“", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"”", "”", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"…", "…", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"Č", "Č", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"č", "č", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"Ě", "Ě", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"ě", "ě", RegexOptions.IgnoreCase);
-
- testo = Regex.Replace(testo, @"
", " ", RegexOptions.IgnoreCase);
- testo = Regex.Replace(testo, @"", " ", RegexOptions.IgnoreCase);
-
- // // Remove all others. More can be added, see
- // // http://hotwired.lycos.com/webmonkey/reference/special_characters/
- // testo = Regex.Replace(testo, @"&(.{2,6});", string.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
-
- //// Correggo accenti per formati sbagliati:
- //while (testo.Contains("Ã ")) { testo = testo.Replace("Ã ", "à"); }
- //while (testo.Contains("è")) { testo = testo.Replace("è", "è"); }
- //while (testo.Contains("é")) { testo = testo.Replace("é", "é"); }
- //while (testo.Contains("ì")) { testo = testo.Replace("ì", "ì"); }
- //while (testo.Contains("ò")) { testo = testo.Replace("ò", "ò"); }
- //while (testo.Contains("ù")) { testo = testo.Replace("ù", "ù"); }
- //while (testo.Contains("’")) { testo = testo.Replace("’", "'"); }
+ // Correggo accenti per formati sbagliati:
+ while (testo.Contains("Ã ")) { testo = testo.Replace("Ã ", "à"); }
+ while (testo.Contains("è")) { testo = testo.Replace("è", "è"); }
+ while (testo.Contains("é")) { testo = testo.Replace("é", "é"); }
+ while (testo.Contains("ì")) { testo = testo.Replace("ì", "ì"); }
+ while (testo.Contains("ò")) { testo = testo.Replace("ò", "ò"); }
+ while (testo.Contains("ù")) { testo = testo.Replace("ù", "ù"); }
+ while (testo.Contains("’")) { testo = testo.Replace("’", "'"); }
// Correggo scritto:
- testo = testo.Replace("è", "è");
- testo = testo.Replace("&", "&");
- testo = testo.Replace("…", "…");
- testo = testo.Replace("\r", "");
+ testo = testo.Replace("\r", "\n");
while (testo.Contains("\t")) { testo = testo.Replace("\t", " "); }
while (testo.Contains("...")) { testo = testo.Replace("...", "…"); }
while (testo.Contains("….")) { testo = testo.Replace("….", "…"); }
@@ -637,8 +619,6 @@ namespace A69WD {
-
-
public static bool WriteStyleSheet(string FullFileName) {
try {
StringBuilder sb = new StringBuilder();
@@ -653,6 +633,102 @@ namespace A69WD {
+ public static void Insert_Format_Tags(ref List dst, List items) {
+ try {
+ // // Rimuove duplicati e ordina alfabeticamente
+ // items = items
+ // .OrderBy(s => s) // ordina alfabeticamente
+ // .Distinct() // elimina duplicati
+ // .ToList();
+ if (dst is null) { dst = new List(); }
+ // Ordino ed elimino duplicati
+ items.Sort();
+ string tmp = "";
+ foreach (string item in items) {
+ string it = item.Trim().ToLower();
+ if (tmp != it) {
+ #region switch per formattare il testo
+ switch (it) {
+ case "altro": // Src: Old_Milu
+ dst.Add("Altro");
+ break;
+ case "autoerotismo": // Src: Old_Milu
+ dst.Add("Masturbazione");
+ break;
+ case "bdsm": // Src: A69
+ dst.Add("BDSM");
+ break;
+ case "cuckold": // Src: Old_Milu
+ dst.Add("Cuckold");
+ break;
+ case "dominazione": // Src: Old_Milu
+ dst.Add("Dominazione");
+ break;
+ case "gay": // Src: Old_Milu
+ dst.Add("Gay");
+ break;
+ case "gay & bisex": // Src: A69
+ dst.Add("Bisex");
+ dst.Add("Gay");
+ break;
+ case "incesto": // Src: A69, Old_Milu
+ dst.Add("Incesto");
+ break;
+ case "lesbo": // Src: A69
+ case "saffico": // Src: Old_Milu
+ dst.Add("Lesbo");
+ break;
+ case "lirica": // Src: Old_Milu
+ dst.Add("Lirica");
+ break;
+ case "lui & lei": // Src: A69
+ case "etero": // Src: Old_Milu
+ dst.Add("Etero");
+ break;
+ case "orge": // Src: A69
+ case "orgia": // Src: Old_Milu
+ dst.Add("Orge");
+ break;
+ case "poesia": // Src: Old_Milu
+ dst.Add("Poesia");
+ break;
+ case "prime esperienze": // Src: A69
+ dst.Add("Prime Esperienze");
+ break;
+ case "scambio di coppia": // Src: A69
+ dst.Add("Scambismo");
+ break;
+ case "sensazioni": // Src: Old_Milu
+ dst.Add("Sensazioni");
+ break;
+ case "tradimenti": // Src: A69
+ dst.Add("Tradimenti");
+ break;
+ case "trans": // Src: A69, Old_Milu
+ dst.Add("Trans");
+ break;
+ case "trio": // Src: A69, Old_Milu
+ dst.Add("trio");
+ break;
+ //case "":
+ // dst.Add("");
+ // break;
+ default:
+ dst.Add(item);
+ break;
+ }
+ #endregion
+ tmp = it;
+ }//if
+ }//foreach
+ } catch (Exception ex) {
+ Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00040", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
+ } finally {
+ if (dst.Count == 0) dst.Add("_None_");
+ }
+ }//function
+
+
} // class Tools
diff --git a/Src/A69WD/Net/cLink_A69.cs b/Src/A69WD/Net/cLink_A69.cs
index 45afd91..0477488 100644
--- a/Src/A69WD/Net/cLink_A69.cs
+++ b/Src/A69WD/Net/cLink_A69.cs
@@ -250,7 +250,9 @@ namespace A69WD.Net {
.OrderBy(s => s) // ordina alfabeticamente
.Distinct() // elimina duplicati
.ToList();
- Format_Insert_Tags(rac, items); // rac.Tags = items;
+ List tmpTags = new List();
+ cTools.Insert_Format_Tags(ref tmpTags, items);
+ rac.Tags = tmpTags;
} catch (Exception ex) { Logger.Warning(string.Format("Fallita estrazione Tags dal file {0}\r\n{1}", FileName, ex.Message)); return null; }
#endregion
@@ -425,7 +427,10 @@ namespace A69WD.Net {
.OrderBy(s => s) // ordina alfabeticamente
.Distinct() // elimina duplicati
.ToList();
- Format_Insert_Tags(rac, items); // rac.Tags = items;
+ //Format_Insert_Tags(rac, items); // rac.Tags = items;
+ List tmpTags = new List();
+ cTools.Insert_Format_Tags(ref tmpTags, items);
+ rac.Tags = tmpTags;
} catch (Exception ex) { Logger.Warning(string.Format("Fallita estrazione Tags dal file {0}\r\n{1}", FileName, ex.Message)); return null; }
#endregion
@@ -464,276 +469,6 @@ namespace A69WD.Net {
return rac;
}
- protected virtual void Format_Insert_Tags(Data.cRac rac, List items) {
- // Per ora riporto tutti i tag rilevati, mentre in futuro dovrò:
- // - parsare la lista e formattare correttamente i tag
- // - ordinare la lista dei tag formattati ed eliminare i duplicati
- // - se non sono rimasti tag, inserisco il tag generale per indicare che non vi sono tag
- // - altrimenti inserisco tutti i tag rimasti.
- rac.Tags = new List();
- try {
- items.Sort();
- string tmp = "";
- foreach (string item in items) {
- string it = item.Trim().ToLower();
- if (tmp != it) {
- #region switch per formattare il testo
- switch (it) {
- //case "racconti 69":
- // rac.Tags.Add("69");
- // break;
- //case "abusi":
- // rac.Tags.Add("Abusi");
- // break;
- //case "camgirl":
- //case "chat e siti di incontri…":
- //case "fiche":
- // rac.Tags.Add("Altro");
- // break;
- //case "amatoriali":
- // rac.Tags.Add("Amatoriali");
- // break;
- //case "anale":
- // rac.Tags.Add("Anale");
- // break;
- //case "audio libri erotici":
- //case "audio racconti erotici":
- // rac.Tags.Add("Audio");
- // break;
- //case "bdsm":
- // rac.Tags.Add("BDMS");
- // break;
- //case "bisex":
- //case "bisex ♀":
- //case "bisex ♂":
- // rac.Tags.Add("Bisex");
- // break;
- //case "bondage":
- // rac.Tags.Add("Bondage");
- // break;
- //case "bondage e sadomaso":
- // rac.Tags.Add("Bondage");
- // rac.Tags.Add("Sadomaso");
- // break;
- //case "bukkake":
- // rac.Tags.Add("Bukkake");
- // break;
- //case "comici":
- //case "comunità":
- // rac.Tags.Add("Comico");
- // break;
- //case "concorso estate 2019":
- //case "concorso natale 2018":
- //case "decameron 2020":
- // rac.Tags.Add("Concorso");
- // break;
- //case "confessioni":
- // rac.Tags.Add("Confessioni");
- // break;
- //case "coppie":
- //case "scambio di coppia":
- //case "scambio di coppie":
- // rac.Tags.Add("Coppie");
- // break;
- //case "cuckold":
- //case "racconti cuckold":
- // rac.Tags.Add("Cuckold");
- // break;
- //case "curiosità":
- //case "curiosità sul sesso":
- // rac.Tags.Add("Curiosità");
- // break;
- //case "dominazione":
- //case "racconti di dominazione":
- //case "schiavi&padroni":
- // rac.Tags.Add("Dominazione");
- // break;
- //case "doppia penetrazione":
- // rac.Tags.Add("Doppia Penetrazione");
- // break;
- //case "esibizionismo":
- // rac.Tags.Add("Esibizionismo");
- // break;
- //case "etero":
- //case "lui & lei":
- //case "racconti erotici etero":
- // rac.Tags.Add("Etero");
- // break;
- //case "feticismo":
- // rac.Tags.Add("Feticismo");
- // break;
- //case "fisting":
- // rac.Tags.Add("Fisting");
- // break;
- //case "gang bang":
- // rac.Tags.Add("Gang Bang");
- // break;
- //case "gay":
- //case "racconti gay":
- // rac.Tags.Add("Gay");
- // break;
- //case "gay & bisex":
- //case "gay e bisex":
- // rac.Tags.Add("Gay");
- // rac.Tags.Add("Bisex");
- // break;
- //case "gay - travestiti":
- // rac.Tags.Add("Gay");
- // rac.Tags.Add("Trans");
- // break;
- //case "incesti":
- //case "incesto":
- //case "racconti erotici sull'incesto":
- // rac.Tags.Add("Incesto");
- // break;
- //case "interviste":
- //case "interviste erotiche":
- // rac.Tags.Add("Intervista");
- // break;
- //case "lesbo":
- //case "racconti erotici lesbo":
- //case "saffico":
- // rac.Tags.Add("Lesbo");
- // break;
- //case "autoerotismo":
- //case "masturbazione":
- //case "masturbazioni":
- //case "racconti sull'autoerotismo":
- // rac.Tags.Add("Masturbazione");
- // break;
- //case "milf":
- // rac.Tags.Add("MILF");
- // break;
- //case "nudismo":
- // rac.Tags.Add("Nudismo");
- // break;
- //case "orge":
- //case "orgia":
- //case "sesso di gruppo":
- // rac.Tags.Add("Orge");
- // break;
- //case "pissing":
- // rac.Tags.Add("Pissing");
- // break;
- //case "lirica erotica":
- //case "poesia erotica":
- //case "poesie":
- //case "poesie erotiche":
- // rac.Tags.Add("Poesia");
- // break;
- //case "pompini":
- // rac.Tags.Add("Pompini");
- // break;
- //case "giochi erotici":
- //case "prime esperienze":
- //case "prime volte":
- // rac.Tags.Add("Prime Esperienze");
- // break;
- //case "pulp":
- // rac.Tags.Add("Pulp");
- // break;
- //case "sadomaso":
- // rac.Tags.Add("Sadomaso");
- // break;
- //case "sensazioni":
- //case "sentimentali":
- // rac.Tags.Add("Sentimentali");
- // break;
- //case "cornuti":
- //case "tradimenti":
- //case "tradimento":
- // rac.Tags.Add("Tradimento");
- // break;
- //case "racconti con trans":
- //case "racconti trans":
- //case "trans":
- //case "trans e travestiti":
- // rac.Tags.Add("Trans");
- // break;
- //case "trasgressivo":
- // rac.Tags.Add("Trasgressivo");
- // break;
- //case "trio":
- // rac.Tags.Add("Trio");
- // break;
- //case "uncategorized":
- // rac.Tags.Add("Uncategorized");
- // break;
- //case "voyeur":
- //case "voyeurismo":
- // rac.Tags.Add("Voyeur");
- // break;
- //case "animali":
- //case "zoofilia":
- // rac.Tags.Add("Zoofilia");
- // break;
-
- //case "Gay":
- // rac.Tags.Add("Gay");
- // break;
- //case "Racconti bisex":
- // rac.Tags.Add("Bisex");
- // break;
- //case "Racconti etero":
- // rac.Tags.Add("Etero");
- // break;
- //case "Racconti fetish":
- // rac.Tags.Add("Feticismo");
- // break;
- //case "Racconti incesto":
- // rac.Tags.Add("Incesto");
- // break;
- //case "Racconti lesbo":
- // rac.Tags.Add("Lesbo");
- // break;
- //case "Racconti masturbazione":
- // rac.Tags.Add("Masturbazione");
- // break;
- //case "Racconti mature":
- // rac.Tags.Add("Mature");
- // break;
- //case "Racconti orge":
- // rac.Tags.Add("Orge");
- // break;
- //case "Racconti prima volta":
- // rac.Tags.Add("Prime Esperienze");
- // break;
- //case "Racconti ricatto":
- // rac.Tags.Add("Ricatto");
- // break;
- //case "Racconti scambio di coppia":
- // rac.Tags.Add("Coppie");
- // break;
- //case "Racconti sottomissione":
- // rac.Tags.Add("Dominazione");
- // break;
- //case "Racconti tradimenti":
- // rac.Tags.Add("Tradimento");
- // break;
- //case "Racconti trav":
- //case "Trans":
- // rac.Tags.Add("Trans");
- // break;
-
- default:
- rac.Tags.Add(item);
- break;
- }
- #endregion
- tmp = it;
-
- }//if
-
- }//foreach
-
- } catch (Exception ex) {
- Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00040", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
- } finally {
- if (rac.Tags.Count == 0) rac.Tags.Add("_None_");
- }
- }//function
-
-
#region Gestione Sito A69
diff --git a/Src/A69WD/Net/cLink_eRac.cs b/Src/A69WD/Net/cLink_eRac.cs
index 91a8298..0c89054 100644
--- a/Src/A69WD/Net/cLink_eRac.cs
+++ b/Src/A69WD/Net/cLink_eRac.cs
@@ -275,7 +275,10 @@ namespace A69WD.Net {
.OrderBy(s => s) // ordina alfabeticamente
.Distinct() // elimina duplicati
.ToList();
- Format_Insert_Tags(rac, items); // rac.Tags = items;
+ //Format_Insert_Tags(rac, items); // rac.Tags = items;
+ List tmpTags = new List();
+ cTools.Insert_Format_Tags(ref tmpTags, items);
+ rac.Tags = tmpTags;
} catch (Exception ex) { Logger.Warning(string.Format("Fallita estrazione Tags dal file {0}\r\n{1}", FileName, ex.Message)); return null; }
#endregion
@@ -317,74 +320,6 @@ namespace A69WD.Net {
- protected virtual void Format_Insert_Tags(Data.cRac rac, List items) {
- // Per ora riporto tutti i tag rilevati, mentre in futuro dovrò:
- // - parsare la lista e formattare correttamente i tag
- // - ordinare la lista dei tag formattati ed eliminare i duplicati
- // - se non sono rimasti tag, inserisco il tag generale per indicare che non vi sono tag
- // - altrimenti inserisco tutti i tag rimasti.
- rac.Tags = new List();
- try {
- items.Sort();
- string tmp = "";
- foreach (string item in items) {
- string it = item.Trim().ToLower();
- if (tmp != it) {
- #region switch per formattare il testo
- switch (it) {
- //case "Gay & Bisex":
- // rac.Tags.Add("Bisex");
- // rac.Tags.Add("Gay");
- // break;
- //case "tradimenti":
- // rac.Tags.Add("Tradimenti");
- // break;
- //case "Lui & Lei":
- // rac.Tags.Add("Lui & Lei");
- // break;
- //case "trans":
- // rac.Tags.Add("Trans");
- // break;
- //case "Prime Esperienze":
- // rac.Tags.Add("Prime Esperienze");
- // break;
- //case "trio":
- // rac.Tags.Add("Trio");
- // break;
- //case "incesto":
- // rac.Tags.Add("Incesto");
- // break;
- //case "orge":
- // rac.Tags.Add("Orge");
- // break;
- //case "bdsm":
- // rac.Tags.Add("BDSM");
- // break;
- //case "lesbo":
- // rac.Tags.Add("Lesbo");
- // break;
- //case "Scambio di Coppia":
- // rac.Tags.Add("Scambio di Coppia");
- // break;
- default:
- rac.Tags.Add(item);
- break;
- }
- #endregion
- tmp = it;
-
- }//if
-
- }//foreach
-
- } catch (Exception ex) {
- Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00040", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
- } finally {
- if (rac.Tags.Count == 0) rac.Tags.Add("_None_");
- }
- }//function
-
-
#region Gestione Sito eRac
private static HttpClient client = null;
diff --git a/Src/A69WD/Properties/AssemblyInfo.cs b/Src/A69WD/Properties/AssemblyInfo.cs
index c808a66..4a94120 100644
--- a/Src/A69WD/Properties/AssemblyInfo.cs
+++ b/Src/A69WD/Properties/AssemblyInfo.cs
@@ -32,8 +32,25 @@ 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.3.1")]
-[assembly: AssemblyFileVersion("0.5.3.1")]
+[assembly: AssemblyVersion("0.5.3.2")]
+[assembly: AssemblyFileVersion("0.5.3.2")]
+
+
+/*
+ *
+ * Vrs 0.5.3.2
+ *
+ * Compilata da CSiCoAlm il 2026/01/05
+ * - Update formattazione testi per eliminare problemi con accenti e caratteri html
+ * - Update formattazione tags per uniformare quelli di A69 e di Old_Milu
+ *
+ *
+ * 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_Import_Milu.cs b/Src/A69WD/Service/Service_Import_Milu.cs
index 865d6b6..9816fcf 100644
--- a/Src/A69WD/Service/Service_Import_Milu.cs
+++ b/Src/A69WD/Service/Service_Import_Milu.cs
@@ -225,9 +225,21 @@ namespace A69WD.Service {
List origini = null;
List tags = null;
+ List notes = null;
string titolo = string.Empty;
string autore = string.Empty;
DateTime creato = DateTime.Now;
+ string infoCategories = string.Empty;
+ string infoPublished = string.Empty;
+ string infoCharacters = string.Empty;
+ string infoGenres = string.Empty;
+ string infoWarnings = string.Empty;
+ string infoChallenges = string.Empty;
+ string infoSeries = string.Empty;
+ string infoChapters = string.Empty;
+ string infoCompleted = string.Empty;
+ string infoWordCount = string.Empty;
+ string infoRead = string.Empty;
#region Info comuni a tutti i capitoli del racconto:
#region Origine
@@ -271,12 +283,11 @@ namespace A69WD.Service {
items.Add(cTools.FormattaTesto(nd.InnerText.Replace("genere", "").Trim(), false));
}
}
- //items.Sort();
- items = items
- .OrderBy(s => s) // ordina alfabeticamente
- .Distinct() // elimina duplicati
- .ToList();
- tags = items;
+ //items = items
+ // .OrderBy(s => s) // ordina alfabeticamente
+ // .Distinct() // elimina duplicati
+ // .ToList();
+ cTools.Insert_Format_Tags(ref tags, items);
if (tags.Count<1) {
Logger.Error($"Old Milu - Import - No Tags - {filePathName}");
return null;
@@ -284,25 +295,54 @@ namespace A69WD.Service {
} catch (Exception ex) { Logger.Warning(string.Format("Fallita estrazione Tags dal file {0}\r\n{1}", filePathName, ex.Message)); return null; }
#endregion
- #region Creato
+ #region Creato & Notes
+ // Estraggo le informazioni generali
// Data estreatta dal testo del nodo < div class="content"> fra "Published{Published}Updated:
try {
- nodes = root.SelectNodes("//div[@class='infobox']//div[@class='content']");
- foreach (HtmlNode nd in nodes) {
- string txt = nd.InnerText.Trim().Replace(" ", "");
- int start = txt.LastIndexOf(" Published: ");
- int stop = txt.LastIndexOf(" Updated: ");
- string strData = txt.Substring(start + 11, stop - start - 11);
- CultureInfo culture = CultureInfo.CreateSpecificCulture("it-IT");
- DateTimeStyles styles = DateTimeStyles.None;
- DateTime tmpDT = DateTime.Now;
- if (!DateTime.TryParse(strData.Trim(), culture, styles, out creato)) {
- Logger.Error($"Old Milu - Import - No data - {filePathName}");
- }
+ HtmlNode nd = root.SelectSingleNode("//div[@class='infobox']//div[@class='content']");
+ string txt = nd.InnerText.Trim().Replace(" ", "");
+ infoPublished = TxtExtract(txt, "Published: ", "Updated: ");
+ infoCategories = TxtExtract(txt, "Categories:", "Characters:");
+ infoCharacters = TxtExtract(txt, "Characters:", "Genres:");
+ infoGenres = TxtExtract(txt, "Genres:", "Warnings:");
+ infoWarnings = TxtExtract(txt, "Warnings:", "Challenges:");
+ infoChallenges = TxtExtract(txt, "Challenges:", "Series:");
+ infoSeries = TxtExtract(txt, "Series:", "Chapters");
+ infoChapters = TxtExtract(txt, "Chapters:", "Completed");
+ infoCompleted = TxtExtract(txt, "Completed:", "Word count:");
+ infoWordCount = TxtExtract(txt, "Word count:", "Read:");
+ infoRead = TxtExtract(txt, "Read:", "Published:");
+ } catch (Exception ex) { Logger.Warning(string.Format("Informazioni generali non riconosciute nel file {0}\r\n{1}", filePathName, ex.Message)); return null; }
+ // Data del racconto
+ try {
+ CultureInfo culture = CultureInfo.CreateSpecificCulture("it-IT");
+ DateTimeStyles styles = DateTimeStyles.None;
+ if (!DateTime.TryParse(infoPublished.Trim(), culture, styles, out creato)) {
+ Logger.Error($"Old Milu - Import - No data - {filePathName}");
}
} catch (Exception ex) { Logger.Warning(string.Format("Data non riconosciuta nel file {0}\r\n{1}", filePathName, ex.Message)); return null; }
+
+ // Notes (comuni fra tutti i racconti):
+ try {
+ notes = new List
();
+ notes.Add(new Data.cNota("SrcFile", System.IO.Path.GetFileName(filePathName)));
+ notes.Add(new Data.cNota("infoCategories", infoCategories));
+ notes.Add(new Data.cNota("infoCharacters", infoCharacters));
+ notes.Add(new Data.cNota("infoGenres", infoGenres));
+ notes.Add(new Data.cNota("infoWarnings", infoWarnings));
+ notes.Add(new Data.cNota("infoChallenges", infoChallenges));
+ notes.Add(new Data.cNota("infoSeries", infoSeries));
+ notes.Add(new Data.cNota("infoChapters", infoChapters));
+ notes.Add(new Data.cNota("infoCompleted", infoCompleted));
+ notes.Add(new Data.cNota("infoWordCount", infoWordCount));
+ notes.Add(new Data.cNota("infoRead", infoRead));
+ notes.Add(new Data.cNota("infoPublished", infoPublished));
+ } catch (Exception ex) { Logger.Warning(string.Format("Notes non riconosciute nel file {0}\r\n{1}", filePathName, ex.Message)); return null; }
#endregion
+ #endregion
+
+
// I vari capitoli dei racconti sono descritti dai nodi e
in successione.
try {
HtmlNodeCollection capTitles = root.SelectNodes("//div[@class='chaptertitle']");
@@ -313,7 +353,7 @@ namespace A69WD.Service {
// Creo i racconti:
rac = new cRac();
rac.Title = titolo;
- rac.SubTitle = capTitles[i].InnerText.Trim().Replace($"by {autore}","").Trim();
+ rac.SubTitle = cTools.FormattaTesto(capTitles[i].InnerText.Trim().Replace($"by {autore}","").Trim(),true);
rac.Creato = creato;
rac.Updated = DateTime.Now;
//rac.Trama = cTools.FormattaTesto(capText[i].InnerHtml.Trim(), false);
@@ -323,8 +363,7 @@ namespace A69WD.Service {
rac.Autori.Add(autore);
rac.Tags = tags;
rac.Origini = origini;
- rac.Notes = new List();
- rac.Notes.Add(new Data.cNota("SrcFile", System.IO.Path.GetFileName(filePathName)));
+ rac.Notes = notes;
// Inserisco il racconto nella collezione
if (rac.Validate()) { racs.Add(rac); }
}
@@ -334,7 +373,6 @@ namespace A69WD.Service {
return null;
}
} catch (Exception ex) { Logger.Warning(string.Format("Fallita estrazione capitolo {0}\r\n{1}", filePathName, ex.Message)); return null; }
- #endregion
Logger.Information($"Terminato estrazione racconti dal file: {filePathName}");
@@ -347,274 +385,12 @@ namespace A69WD.Service {
}
- protected virtual void Format_Insert_Tags(Data.cRac rac, List items) {
- // Per ora riporto tutti i tag rilevati, mentre in futuro dovrò:
- // - parsare la lista e formattare correttamente i tag
- // - ordinare la lista dei tag formattati ed eliminare i duplicati
- // - se non sono rimasti tag, inserisco il tag generale per indicare che non vi sono tag
- // - altrimenti inserisco tutti i tag rimasti.
- rac.Tags = new List();
- try {
- items.Sort();
- string tmp = "";
- foreach (string item in items) {
- string it = item.Trim().ToLower();
- if (tmp != it) {
- #region switch per formattare il testo
- switch (it) {
- //case "racconti 69":
- // rac.Tags.Add("69");
- // break;
- //case "abusi":
- // rac.Tags.Add("Abusi");
- // break;
- //case "camgirl":
- //case "chat e siti di incontri…":
- //case "fiche":
- // rac.Tags.Add("Altro");
- // break;
- //case "amatoriali":
- // rac.Tags.Add("Amatoriali");
- // break;
- //case "anale":
- // rac.Tags.Add("Anale");
- // break;
- //case "audio libri erotici":
- //case "audio racconti erotici":
- // rac.Tags.Add("Audio");
- // break;
- //case "bdsm":
- // rac.Tags.Add("BDMS");
- // break;
- //case "bisex":
- //case "bisex ♀":
- //case "bisex ♂":
- // rac.Tags.Add("Bisex");
- // break;
- //case "bondage":
- // rac.Tags.Add("Bondage");
- // break;
- //case "bondage e sadomaso":
- // rac.Tags.Add("Bondage");
- // rac.Tags.Add("Sadomaso");
- // break;
- //case "bukkake":
- // rac.Tags.Add("Bukkake");
- // break;
- //case "comici":
- //case "comunità":
- // rac.Tags.Add("Comico");
- // break;
- //case "concorso estate 2019":
- //case "concorso natale 2018":
- //case "decameron 2020":
- // rac.Tags.Add("Concorso");
- // break;
- //case "confessioni":
- // rac.Tags.Add("Confessioni");
- // break;
- //case "coppie":
- //case "scambio di coppia":
- //case "scambio di coppie":
- // rac.Tags.Add("Coppie");
- // break;
- //case "cuckold":
- //case "racconti cuckold":
- // rac.Tags.Add("Cuckold");
- // break;
- //case "curiosità":
- //case "curiosità sul sesso":
- // rac.Tags.Add("Curiosità");
- // break;
- //case "dominazione":
- //case "racconti di dominazione":
- //case "schiavi&padroni":
- // rac.Tags.Add("Dominazione");
- // break;
- //case "doppia penetrazione":
- // rac.Tags.Add("Doppia Penetrazione");
- // break;
- //case "esibizionismo":
- // rac.Tags.Add("Esibizionismo");
- // break;
- //case "etero":
- //case "lui & lei":
- //case "racconti erotici etero":
- // rac.Tags.Add("Etero");
- // break;
- //case "feticismo":
- // rac.Tags.Add("Feticismo");
- // break;
- //case "fisting":
- // rac.Tags.Add("Fisting");
- // break;
- //case "gang bang":
- // rac.Tags.Add("Gang Bang");
- // break;
- //case "gay":
- //case "racconti gay":
- // rac.Tags.Add("Gay");
- // break;
- //case "gay & bisex":
- //case "gay e bisex":
- // rac.Tags.Add("Gay");
- // rac.Tags.Add("Bisex");
- // break;
- //case "gay - travestiti":
- // rac.Tags.Add("Gay");
- // rac.Tags.Add("Trans");
- // break;
- //case "incesti":
- //case "incesto":
- //case "racconti erotici sull'incesto":
- // rac.Tags.Add("Incesto");
- // break;
- //case "interviste":
- //case "interviste erotiche":
- // rac.Tags.Add("Intervista");
- // break;
- //case "lesbo":
- //case "racconti erotici lesbo":
- //case "saffico":
- // rac.Tags.Add("Lesbo");
- // break;
- //case "autoerotismo":
- //case "masturbazione":
- //case "masturbazioni":
- //case "racconti sull'autoerotismo":
- // rac.Tags.Add("Masturbazione");
- // break;
- //case "milf":
- // rac.Tags.Add("MILF");
- // break;
- //case "nudismo":
- // rac.Tags.Add("Nudismo");
- // break;
- //case "orge":
- //case "orgia":
- //case "sesso di gruppo":
- // rac.Tags.Add("Orge");
- // break;
- //case "pissing":
- // rac.Tags.Add("Pissing");
- // break;
- //case "lirica erotica":
- //case "poesia erotica":
- //case "poesie":
- //case "poesie erotiche":
- // rac.Tags.Add("Poesia");
- // break;
- //case "pompini":
- // rac.Tags.Add("Pompini");
- // break;
- //case "giochi erotici":
- //case "prime esperienze":
- //case "prime volte":
- // rac.Tags.Add("Prime Esperienze");
- // break;
- //case "pulp":
- // rac.Tags.Add("Pulp");
- // break;
- //case "sadomaso":
- // rac.Tags.Add("Sadomaso");
- // break;
- //case "sensazioni":
- //case "sentimentali":
- // rac.Tags.Add("Sentimentali");
- // break;
- //case "cornuti":
- //case "tradimenti":
- //case "tradimento":
- // rac.Tags.Add("Tradimento");
- // break;
- //case "racconti con trans":
- //case "racconti trans":
- //case "trans":
- //case "trans e travestiti":
- // rac.Tags.Add("Trans");
- // break;
- //case "trasgressivo":
- // rac.Tags.Add("Trasgressivo");
- // break;
- //case "trio":
- // rac.Tags.Add("Trio");
- // break;
- //case "uncategorized":
- // rac.Tags.Add("Uncategorized");
- // break;
- //case "voyeur":
- //case "voyeurismo":
- // rac.Tags.Add("Voyeur");
- // break;
- //case "animali":
- //case "zoofilia":
- // rac.Tags.Add("Zoofilia");
- // break;
-
- //case "Gay":
- // rac.Tags.Add("Gay");
- // break;
- //case "Racconti bisex":
- // rac.Tags.Add("Bisex");
- // break;
- //case "Racconti etero":
- // rac.Tags.Add("Etero");
- // break;
- //case "Racconti fetish":
- // rac.Tags.Add("Feticismo");
- // break;
- //case "Racconti incesto":
- // rac.Tags.Add("Incesto");
- // break;
- //case "Racconti lesbo":
- // rac.Tags.Add("Lesbo");
- // break;
- //case "Racconti masturbazione":
- // rac.Tags.Add("Masturbazione");
- // break;
- //case "Racconti mature":
- // rac.Tags.Add("Mature");
- // break;
- //case "Racconti orge":
- // rac.Tags.Add("Orge");
- // break;
- //case "Racconti prima volta":
- // rac.Tags.Add("Prime Esperienze");
- // break;
- //case "Racconti ricatto":
- // rac.Tags.Add("Ricatto");
- // break;
- //case "Racconti scambio di coppia":
- // rac.Tags.Add("Coppie");
- // break;
- //case "Racconti sottomissione":
- // rac.Tags.Add("Dominazione");
- // break;
- //case "Racconti tradimenti":
- // rac.Tags.Add("Tradimento");
- // break;
- //case "Racconti trav":
- //case "Trans":
- // rac.Tags.Add("Trans");
- // break;
-
- default:
- rac.Tags.Add(item);
- break;
- }
- #endregion
- tmp = it;
-
- }//if
-
- }//foreach
-
- } catch (Exception ex) {
- Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00040", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
- } finally {
- if (rac.Tags.Count == 0) rac.Tags.Add("_None_");
- }
- }//function
+ protected string TxtExtract(string src, string start, string end) {
+ int nstart = src.LastIndexOf(start);
+ int nstop = src.LastIndexOf(end);
+ int offset = start.Length;
+ return src.Substring(nstart + offset, nstop - nstart - offset).Trim();
+ }
}//class Service_Import_Milu