();
}
}
///
/// Esegue una formattazione del testo ricavato da un file html per scremarlo delle parti html
///
/// Testo da formattare
/// Abilitare l'eliminazione di tutti i generici tag
/// Testo formattato
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);
testo = Regex.Replace(testo, @"
", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"
", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"
", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"", "\r\n", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @"<<", "«", RegexOptions.IgnoreCase);
testo = Regex.Replace(testo, @">>", "»", RegexOptions.IgnoreCase);
// Se richiesto, elimino i tag html:
if (eliminaTagHtml) {
// Preparo la Regex:
string htmlPattern = @"\<[^\>]*\>";
Regex re = new Regex(htmlPattern, RegexOptions.IgnoreCase);
// Applico l'espressione regolare per togliere tutti i tag:
testo = re.Replace(testo, "");
}
// 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);
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);
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);
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);
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);
// 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("\r", "\n");
while (testo.Contains("\t")) { testo = testo.Replace("\t", " "); }
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(" \n")) { testo = testo.Replace(" \n", "\n"); }
while (testo.Contains("\n ")) { testo = testo.Replace("\n ", "\n"); }
while (testo.Contains("\n\n")) { testo = testo.Replace("\n\n", "\n"); }
return testo;
} catch (Exception ex) { return string.Format(" Errore: Errore durante la formattazione del testo:\n{0}\n\n", ex.Message); }
}
public static bool WriteStyleSheet(string FullFileName) {
try {
StringBuilder sb = new StringBuilder();
sb.Append("BODY{\n\tmargin-left : 5px;\n\tmargin-right : 5px;\n\tcolor : #000099;\n\tfont-family : Verdana,Arial,Helvetica;\n\tbackground-color : #F4F4F4;\n}\n.Title {\n\ttext-align : center; \n\tfont-family : \"Helvetica\";\n\tfont-size : x-large;\n}\n.SubTitle {\n\ttext-align : center; \n\ttext-indent : 16px;\n\tfont-family : \"Helvetica\";\n\tfont-size : large;\n\tfont-style : italic;\n}\n.Property {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.Origine {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.Autore {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.Data {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.Trama {\n\ttext-align : justify; \n\ttext-indent : 12px;\n\tcolor : #000000;\n}\n.Menu {\n\ttext-align : right; \n\ttext-indent : 12px;\n\tcolor : #000000;\n}\n.MsgTitle {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.MsgText {\n\ttext-align : justify; \n\ttext-indent : 12px;\n\tcolor : #000000;\n}\n.ReportTitle {\n\ttext-align : center; \n\tfont-family : \"Helvetica\";\n\tfont-size : x-large;\n}\n.ReportText {\n\ttext-align : justify; \n\ttext-indent : 25px;\n\tfont-style : italic;\n}\n.Menu_Row {\n\tfont-size:70%;\n\twhite-space:nowrap;\n}\n.Menu_sx {\n\ttext-align:left; width:50%; float: left;\n}\n.Menu_dx {\n\ttext-align:right; width:50%; float: right;\n}\n");
WriteTextFile(FullFileName, sb);
return true;
} catch (Exception ex) {
Logger.Log(new object[] { "Error Code: eBook000", "Errore in ATlib.Tools.WriteStyleS(FullFileName)", ex });
return false;
}
}
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
} // namespace A69WD