public async static Task <(List <classes.Meaning>, classes.WordForm_Overload)> FetchWordDetails(string xmlWord) { List <classes.Meaning> lmOut = new List <classes.Meaning>(); string[] LangArray = { "LU", "DE", "FR", "EN", "PT" }; classes.WordForm_Overload wordForm = new classes.WordForm_Overload(); foreach (string currlang in LangArray) { EmptyClass em = new EmptyClass(); var responseTask = em.HttpRequest(currlang, xmlWord); string responseBody = await responseTask; //build wordForm wordForm = getWordForm(wordForm, responseBody, currlang); //getMeanings lmOut = getMeanings(lmOut, responseBody, currlang); } return(lmOut, wordForm); }
private static classes.WordForm_Overload getWordForm(classes.WordForm_Overload wf_ov, string responseBody, string currentLanguage) { HtmlAgilityPack.HtmlDocument LangDocument = new HtmlAgilityPack.HtmlDocument(); LangDocument.LoadHtml(responseBody); string wuertForm = null; if (LangDocument.DocumentNode.SelectNodes("//div[@class='uds_block']") != null) { if (LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass']").InnerText.Trim() != "♦") { wuertForm = LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass']").InnerText.Trim(); } else { wuertForm = LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass'][2]").InnerText.Trim(); } //Set Translated WordForms wf_ov.SetWordForm(currentLanguage, wuertForm); //Set Base Values (Pluriel(s), Hellefsverb, Adverb), ONLY WHEN LU if (currentLanguage == "LU") { /* Get <div class="artikel" ...... until <div class="uds_block" */ string trgrgrgr = LangDocument.DocumentNode.SelectSingleNode("//div[@class='artikel']").InnerHtml; HtmlDocument articleDoc = new HtmlAgilityPack.HtmlDocument(); articleDoc.LoadHtml(trgrgrgr); var divs = articleDoc.DocumentNode.SelectNodes("//div"); foreach (var tag in divs) { tag.Remove(); } //Gëtt schonn eischter agesaat var Basiswuert = articleDoc.DocumentNode.SelectNodes("//span[@class='adress mentioun_adress']/text()"); /*BasisWuert(/Wieder) : //span[@class='adress mentioun_adress']/text() */ var HV = articleDoc.DocumentNode.SelectSingleNode("//span[@class='text_gen']/span[@class='mentioun_adress']/text()"); if (HV != null) { wf_ov.WordFormHelperVerb = HV.InnerText.Trim(); } /*HV(en) : //span[@class='text_gen']/span[@class='mentioun_adress']/text() */ var PP = articleDoc.DocumentNode.SelectNodes("//span[contains(.,'Participe passé')]/following-sibling::span[@class='mentioun_adress']/text()"); if (PP != null) { int ppc = 0; foreach (var pp in PP) { if (ppc == 0) { wf_ov.pastParticiple += pp.InnerText.Trim() + " / "; ppc++; } else { wf_ov.pastParticiple += pp.InnerText.Trim(); } } } //wf_ov.pastParticiple = PP.InnerText.Trim(); /*PP : //div[@class='artikel']/span[@class='mentioun_adress']/text() */ var Pluriel = articleDoc.DocumentNode.SelectNodes("//span[@class='mentioun_adress popup']/text()|//span[@class='mentioun_adress']/span[@class='mentioun_adress']/text()"); if (Pluriel != null) { if (wf_ov.WordFormPlurals == null) { wf_ov.InitWordFormPlurals(); } foreach (var pluriel in Pluriel) { wf_ov.WordFormPlurals.Add(pluriel.InnerText.Trim()); } } /* Pluriel(en): //span[@class='mentioun_adress popup']/text()|//span[@class='mentioun_adress']/span[@class='mentioun_adress']/text() */ // substring-after(//span[@id='myPopup'][1]/text(),'ouni -n ') var EiffelerTmp = articleDoc.DocumentNode.SelectSingleNode("//span[@id='myPopup'][1]/text()[1]"); if (EiffelerTmp != null) { wf_ov.eiffelerForm = EiffelerTmp.InnerText.Replace("ouni -n: ", ""); } /* Eiffeler Reegel: substring-after(//span[@id='myPopup'][1]/text(),'ouni -n') */ var Variant = articleDoc.DocumentNode.SelectNodes("//span[@class='lu_link']"); if (Variant != null) { wf_ov.isVariant = true; } else { wf_ov.isVariant = false; } /* isVariant: //span[@class='lu_link'] */ Console.WriteLine(); } Console.WriteLine(); } else { //Variant possible var vi = LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass']"); if (vi != null) { if (vi.InnerText.Trim() != "♦") { wuertForm = LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass']").InnerText.Trim(); } else { wuertForm = LangDocument.DocumentNode.SelectSingleNode(".//span[@class='klass'][2]").InnerText.Trim(); } //Set Translated WordForms wf_ov.SetWordForm(currentLanguage, wuertForm); if (currentLanguage == "LU") { /* Get <div class="artikel" ...... until <div class="uds_block" */ string trgrgrgr = LangDocument.DocumentNode.SelectSingleNode("//div[@class='artikel']").InnerHtml; HtmlDocument articleDoc = new HtmlAgilityPack.HtmlDocument(); articleDoc.LoadHtml(trgrgrgr); var Variant = articleDoc.DocumentNode.SelectNodes("//span[@class='lu_link']"); if (Variant != null) { wf_ov.isVariant = true; } else { wf_ov.isVariant = false; } } } } return(wf_ov); }