public GuessResult Guess(string phrase, NetworkSetting networkSetting) { RegisterState(null); GuessResult result = GuessResultsCache.GetCachedGuessResult(this, phrase); lock(result) { if(result.IsHasData()) return result; long start = DateTime.Now.Ticks; try { string error; if(CheckPhrase(phrase, out error)) DoGuess(phrase, result, networkSetting); else result.Error = new TranslationException(error); } catch(System.Exception e) { result.Error = e; } result.QueryTicks = DateTime.Now.Ticks - start; } return result; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://openthes-es.berlios.de/multimatch.php?word={0}&search=1"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<li>No matches</li>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } OpenthesaurusDeDictionary.SetResult(result, responseFromServer); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://openthesaurus.caixamagica.pt/suggestions.php?word={0}&search=1"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); string[] translations = StringParser.ParseItemsList("<li>", "</li>", responseFromServer); if(translations.Length == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string subtranslation; foreach(string translation in translations) { subtranslation = StringParser.RemoveAll("<", ">", translation); result.Translations.Add(subtranslation); } }
protected virtual void Dispose(bool disposing) { if (disposing) { if (postData != null) { postData.Close(); postData = null; } if (postXmlData != null) { postXmlData.Close(); postXmlData = null; } if (postStream != null) { postStream.Dispose(); postStream = null; } result = null; url = null; networkSetting = null; } }
public static void DoProcess() { if (state != UpdateState.None) { return; } state = UpdateState.CheckVersion; WebClient client = new WebClient(); NetworkSetting networkSetting = TranslateOptions.Instance.NetworkOptions.GetNetworkSetting(null); client.Proxy = networkSetting.Proxy; if (!MonoHelper.IsMono) { client.UseDefaultCredentials = true; } if (!MonoHelper.IsMono) { client.CachePolicy = new RequestCachePolicy(RequestCacheLevel.Reload); } client.DownloadProgressChanged += DownloadProgressChanged; client.DownloadStringCompleted += DownloadVersionsCompleted; client.DownloadStringAsync(new Uri(Constants.VersionsTxtUrls[versionUrlToCheck])); }
public WebRequestHelper(IServiceItemResult result, Uri url, NetworkSetting networkSetting, WebRequestContentType contentType) { this.result = result; this.url = url; this.networkSetting = networkSetting; this.contentType = contentType; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string responseFromServer = UlifHelper.GetSynonymsPage(phrase, networkSetting); if(string.IsNullOrEmpty(responseFromServer)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } responseFromServer = StringParser.Parse("<div class=\"p_cl\">", "</div>", responseFromServer); responseFromServer = StringParser.RemoveAll("<A ondblclick", ">", responseFromServer); responseFromServer = responseFromServer.Replace("</A>", ""); responseFromServer = responseFromServer.Replace("<B>", ""); responseFromServer = responseFromServer.Replace("</B>", ""); responseFromServer = responseFromServer.Replace("<I>", ""); responseFromServer = responseFromServer.Replace("</I>", ""); StringParser parser = new StringParser(responseFromServer); string[] translations = parser.ReadItemsList("<P>", "</P>", "3495783-4572385"); if(translations.Length == 1) { result.Translations.Add(translations[0]); } else { foreach(string subtranslation in translations) { Result subres = CreateNewResult("", languagesPair, subject); result.Childs.Add(subres); subres.Translations.Add(subtranslation); } } }
public GuessResult Guess(string phrase, NetworkSetting networkSetting) { RegisterState(null); GuessResult result = GuessResultsCache.GetCachedGuessResult(this, phrase); lock (result) { if (result.IsHasData()) { return(result); } long start = DateTime.Now.Ticks; try { string error; if (CheckPhrase(phrase, out error)) { DoGuess(phrase, result, networkSetting); } else { result.Error = new TranslationException(error); } } catch (System.Exception e) { result.Error = e; } result.QueryTicks = DateTime.Now.Ticks - start; } return(result); }
public static GuessResult Guess(string phrase, NetworkSetting networkSetting, EventHandler <GuessCompletedEventArgs> guessCompletedHandler) { AsyncGuessState state = null; bool done = false; EventHandler <GuessCompletedEventArgs> myHandler = delegate(object sender, GuessCompletedEventArgs e) { try { FreeCL.Forms.Application.EndGuiLockingTask(); if (guessCompletedHandler != null) { guessCompletedHandler.Invoke(state, e); } } finally { done = true; } }; FreeCL.Forms.Application.StartGuiLockingTask(LangPack.TranslateString("Language detection")); state = GuessAsync(phrase, networkSetting, myHandler); while (!done) { System.Windows.Forms.Application.DoEvents(); Thread.Sleep(50); } return(state.Result); }
string DoInternalTranslate(string query, Result result, NetworkSetting networkSetting) { WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, true); helper.Referer = "http://translate-net.appspot.com/"; string responseFromServer = helper.GetResponse(); if (responseFromServer.Contains(", \"responseStatus\": 200}")) { string translation = StringParser.Parse("\"translatedText\":\"", "\"", responseFromServer); translation = HttpUtilityEx.HtmlDecode(translation); return(translation); } else { string error = StringParser.Parse("\"responseDetails\": \"", "\"", responseFromServer); string code = StringParser.Parse("\"responseStatus\":", "}", responseFromServer); throw new TranslationException(error + ", error code : " + code); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock(cookieContainer) { if(coockieTime < DateTime.Now.AddHours(-1)) { coockieTime = DateTime.Now; WebRequestHelper helper_cookie = new WebRequestHelper(result, new Uri("http://multiwordnet.itc.it/online/multiwordnet-head.php"), networkSetting, WebRequestContentType.UrlEncodedGet); helper_cookie.CookieContainer = cookieContainer; helper_cookie.GetResponse(); } } string query = "http://multiwordnet.itc.it/online/mwn-main.php?language={0}&field=word&word={1}&wntype=Overview&pos="; query = string.Format(query, ConvertLanguage(languagesPair.From), HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.CookieContainer = cookieContainer; string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<b> No data found </b>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string table = StringParser.Parse("<table border=1 WIDTH=100% CELLPADDING=1 class=bgpos>", "</table>", responseFromServer); string[] nodes = StringParser.ParseItemsList("<tr>", "</tr>", table); string nodename, nodeval; Result child = result; foreach(string node in nodes) { if(node.Contains("<td class=bg_posbody COLSPAN=2 >")) { nodename = StringParser.RemoveAll("<", ">", node); child = new Result(result.ServiceItem, nodename, result.LanguagePair, result.Subject); result.Childs.Add(child); } else { nodeval = StringParser.RemoveAll("<", ">", node); child.Translations.Add(nodeval); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { List<string> words = StringParser.SplitToWords(phrase); foreach(string word in words) { TranslateWord(word, languagesPair, subject, result, networkSetting); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { Encoding encoding = Encoding.GetEncoding("iso-8859-1"); string query = "http://wordnetweb.princeton.edu/perl/webwn?s=" + HttpUtility.UrlEncode(phrase, encoding); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<h3>Your search did not return any results.</h3>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } if(responseFromServer.Contains("<h3>Sorry(?) your search can only contain letters(?)")) { throw new TranslationException("Query contains extraneous symbols"); } result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string[] nodes = StringParser.ParseItemsList("<h3>", "</ul>", responseFromServer); bool first = true; string nodename; Result child = result; string[] subnodes; string translation; foreach(string node in nodes) { nodename = StringParser.ExtractLeft("</h3>", node); if(first && nodes.Length == 1) { child.Abbreviation = nodename; } else { child = new Result(result.ServiceItem, nodename, result.LanguagePair, result.Subject); result.Childs.Add(child); } first = false; subnodes = StringParser.ParseItemsList("<li>", "</li>", node); foreach(string subnode in subnodes) { translation = StringParser.RemoveAll("<", ">", subnode); translation = StringParser.ExtractRight(")", translation); child.Translations.Add(translation); } } }
static ulif.dictlib GetService(NetworkSetting networkSetting) { ulif.dictlib service = new ulif.dictlib(); service.Proxy = networkSetting.Proxy; service.Timeout = networkSetting.Timeout; service.EnableDecompression = true; service.Credentials = CredentialCache.DefaultCredentials; service.UserAgent = "Mozilla/5.0, Translate.Net"; return(service); }
public AsyncGuessState( string phrase, NetworkSetting networkSetting, AsyncOperation asyncOperation, EventHandler<GuessCompletedEventArgs> guessCompletedHandler) { this.asyncOperation = asyncOperation; this.phrase = phrase; this.networkSetting = networkSetting; GuessCompleted += guessCompletedHandler; }
public AsyncGuessState( string phrase, NetworkSetting networkSetting, AsyncOperation asyncOperation, EventHandler <GuessCompletedEventArgs> guessCompletedHandler) { this.asyncOperation = asyncOperation; this.phrase = phrase; this.networkSetting = networkSetting; GuessCompleted += guessCompletedHandler; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncodedGet, Encoding.GetEncoding(1251)); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServertop); } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncoded, Encoding.GetEncoding(1251)); //query string langDirection = "RU"; if(languagesPair.From == Language.Ukrainian) langDirection = "UR"; //templ=%CD%E5%F2+%EF%E5%F0%E5%E2%EE%E4%E0& //__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1} //&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8& //_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=& //_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3} string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1}&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8&_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=&_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3}"; query = string.Format(query, HttpUtility.UrlEncode(viewState, helper.Encoding), HttpUtility.UrlEncode(phrase, helper.Encoding), langDirection, HttpUtility.UrlEncode(eventValidation, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("onclickk=\"shword();\">", "</DIV>", responseFromServer); translation = translation.Replace("<font color=red>", ""); translation = translation.Replace("</font>", ""); result.Translations.Add(translation); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServer); }
public static AsyncGuessState GuessAsync(string phrase, NetworkSetting networkSetting, EventHandler <GuessCompletedEventArgs> guessCompletedHandler) { AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(DateTime.Now.Ticks); AsyncGuessState state = new AsyncGuessState(phrase, networkSetting, asyncOp, guessCompletedHandler); WorkerEventHandler workerDelegate = new WorkerEventHandler(GuessWorker); workerDelegate.BeginInvoke( state, null, null); return(state); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock(viewState) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServertop); } } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncoded); //query lock(viewState) { //string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24ucTextTranslator%24tbFromAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbToAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbCCAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbSubject=&ctl00%24SiteContent%24ucTextTranslator%24tbBody=&ctl00%24SiteContent%24ucTextTranslator%24templates={1}&ctl00%24SiteContent%24ucTextTranslator%24checkShowVariants=on&ctl00%24SiteContent%24ucTextTranslator%24dlTemplates=General&ctl00%24SiteContent%24ucTextTranslator%24sourceText={2}&resultText=&ctl00%24SiteContent%24ucTextTranslator%24dlDirections={3}&ctl00%24SiteContent%24ucTextTranslator%24bTranslate=Translate&ctl00%24tbEmail=&ctl00%24tbName=&ctl00%24tbComment=&ctl00%24pollDiv%24tbSiteLang=en"; string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24MA_trasnlform%24selected_tab=text&chLangs=true&ctl00%24SiteContent%24MA_trasnlform%24rblTemplates=General&ctl00%24SiteContent%24MA_trasnlform%24otherTemplatesInput={1}&ctl00%24SiteContent%24MA_trasnlform%24sourceText={2}&ctl00%24SiteContent%24MA_trasnlform%24sLang={3}&ctl00%24SiteContent%24MA_trasnlform%24rLang={4}&ctl00%24SiteContent%24MA_trasnlform%24bTranslate=Translate&ctl00%24SiteContent%24MA_trasnlform%24changedFieldToAddr=&ctl00%24SiteContent%24MA_trasnlform%24hiddenDir=&ctl00%24SiteContent%24MA_trasnlform%24hiddenTranid=&ctl00%24changedField=&__PREVIOUSPAGE={5}"; query = string.Format(query, HttpUtility.UrlEncode(viewState), PromtUtils.GetSubject(subject), HttpUtility.UrlEncode(phrase), PromtUtils.ConvertLanguage(languagesPair.From), PromtUtils.ConvertLanguage(languagesPair.To), prevPage); helper.AddPostData(query); } string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("class=\"send_win\">", "</textarea>", responseFromServer); result.Translations.Add(translation); lock(viewState) { viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServer); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://pere.org.ua/cgi-bin/pere.cgi"), networkSetting, WebRequestContentType.Multipart); helper.AddPostKey("lng", "uk-ua"); helper.AddPostKey("han", "text"); helper.AddPostKey("wht", "text"); helper.AddPostKey("cod", ConvertLangsPair(languagesPair)); helper.AddPostKey("par", "1"); helper.AddPostKey("txt", phrase); helper.AddPostKey("don", "Відправити запит"); string responseFromServer = helper.GetResponse(); result.Translations.Add(StringParser.Parse("<nopere><TEXTAREA ROWS=20 COLS=80>", "</TEXTAREA></nopere>", responseFromServer)); }
public static string[] GetPhrasesPages(string word, NetworkSetting networkSetting) { List <string> result = new List <string>(); ulif.dictlib service = GetService(networkSetting); CheckVersion(service); bool found; bool SearchWordResultSpecified; bool rSpecified; int word_idx; service.SearchWord(word, gldescdic.PHRAS_DIC, true, true, true, out word_idx, out SearchWordResultSpecified, out found, out rSpecified); if (!found) { return(result.ToArray()); } int word_uid; service.ReestrGetID(word_idx, true, gldescdic.PHRAS_DIC, true, true, true, out word_uid, out rSpecified); phrasdictphraseology[] phraseologies; byte[] first_res = service.phrasPrepare(word_uid, true, out phraseologies); List <KeyValuePair <int, sbyte> > used_aid = new List <KeyValuePair <int, sbyte> >(); for (int i = 0; i < phraseologies.Length; i++) { KeyValuePair <int, sbyte> kvp = new KeyValuePair <int, sbyte>(phraseologies[i].aid, phraseologies[i].l); if (!used_aid.Contains(kvp)) { result.Add(service.getpharticle2(phraseologies[i].aid, true, phraseologies[i].l, true, "style2_2.css", true, true)); used_aid.Add(kvp); } } return(result.ToArray()); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://193.2.66.133:85/overview.php?search=1&word={0}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); OpenthesaurusDeDictionary.SetResult(result, responseFromServer); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://sa.dir.bg/cgi/sabig.cgi?word={0}&translate=Translate&encin=windows-1251&encout=windows-1251"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.Encoding = encoding; result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("<TD valign=\"top\" width=\"95%\">", "</TD>", responseFromServer); translation = StringParser.RemoveAll("<font", "</font>", translation); translation = "html!<p>" + translation.Replace("<BR><BR>", "<BR>") + "</p>"; result.Translations.Add(translation); }
public static string GetAntonymsPage(string word, NetworkSetting networkSetting) { ulif.dictlib service = GetService(networkSetting); CheckVersion(service); bool found; bool SearchWordResultSpecified; bool rSpecified; int word_idx; service.SearchWord(word, gldescdic.ANT_DIC, true, true, true, out word_idx, out SearchWordResultSpecified, out found, out rSpecified); if(!found) return ""; int word_uid; service.ReestrGetID(word_idx, true, gldescdic.ANT_DIC, true, true, true, out word_uid, out rSpecified); return service.DictPrepare2(word_uid, true, "", "style2_2.css", gldescdic.ANT_DIC, true, true, true); }
internal static void DoTranslate(IDictDServiceItem dictServiceItem, string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { ServiceItem si = dictServiceItem as ServiceItem; DictionaryClient dc = null; try { dc = DictDClientsPool.GetPooledClient(dictServiceItem.Urls); DefinitionCollection definitions = dc.GetDefinitions(phrase, si.Name); string translation; if(definitions != null && definitions.Count > 0) { foreach(Definition df in definitions) { translation = "html!<div style='width:{allowed_width}px;overflow:scroll;overflow-y:hidden;overflow-x:auto;'><pre>" + df.Description.Replace("\r\n", "<br />") + " </pre></div>"; result.Translations.Add(translation); } } else { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } catch(DictionaryServerException e) { if(e.ErrorCode == 552) //No definitions found { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else throw; } finally { if(dc != null) DictDClientsPool.PushPooledClient(dc); } }
public static string GetSynonymsPage(string word, NetworkSetting networkSetting) { ulif.dictlib service = GetService(networkSetting); CheckVersion(service); bool found; bool SearchWordResultSpecified; bool rSpecified; int word_idx; service.SearchWord(word, gldescdic.SYN_DIC, true, true, true, out word_idx, out SearchWordResultSpecified, out found, out rSpecified); if (!found) { return(""); } int word_uid; service.ReestrGetID(word_idx, true, gldescdic.SYN_DIC, true, true, true, out word_uid, out rSpecified); return(service.DictPrepare2(word_uid, true, "", "style2_2.css", gldescdic.SYN_DIC, true, true, true)); }
public static void DoTranslate(ServiceItem searchEngine, string searchHost, string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string link_f = "http://{0}.{1}/wiki/{2}"; string lang = WikiUtils.ConvertLanguage(languagesPair.To); string link = string.Format(link_f, lang, searchHost, phrase); result.EditArticleUrl = link; Result searchResult = searchEngine.Translate(phrase, languagesPair, subject, networkSetting); if (!searchResult.IsHasData() || searchResult.Translations.Count < 1) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string url = StringParser.Parse("<a href=\"", "\">", searchResult.Translations[0]); string searched_name = url.Substring(url.LastIndexOf("/") + 1); if (string.Compare(phrase, searched_name, true) != 0) { //check second line if (searchResult.Translations.Count < 2) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { url = StringParser.Parse("<a href=\"", "\">", searchResult.Translations[1]); searched_name = url.Substring(url.LastIndexOf("/") + 1); if (string.Compare(phrase, searched_name, true) != 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } } link = string.Format(link_f, lang, searchHost, searched_name, searched_name); result.EditArticleUrl = link; //http://en.wikipedia.org/w/api.php?action=parse&prop=text&format=xml&page=Ukraine string query = "http://{0}.{1}/w/api.php?action=parse&prop=text|revid&format=xml&page={2}"; query = string.Format(query, lang, searchHost, HttpUtility.UrlEncode(searched_name)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if (responseFromServer.IndexOf("<parse revid=\"0\">") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string res = StringParser.Parse("<text", "</text>", responseFromServer); res = StringParser.ExtractRight(">", res); res = res.Replace("width: 100%", "width: 95%"); res = res.Replace("float:right;", "float: right;margin-right: 0.5em;"); res = "html!<div style='width:{allowed_width}px;overflow:scroll;overflow-y:hidden;overflow-x:auto;'>" + HttpUtility.HtmlDecode(res) + " </div>"; res = res.Replace("<h1>", ""); res = res.Replace("</h1>", ""); res = res.Replace("<h2>", ""); res = res.Replace("</h2>", ""); res = res.Replace("<h3>", ""); res = res.Replace("</h3>", ""); res = res.Replace("<h4>", ""); res = res.Replace("</h4>", ""); res = StringParser.RemoveAll("<span class=\"editsection\">[<a", "</a>]", res); res = StringParser.RemoveAll("href=\"#", "\"", res); res = StringParser.RemoveAll("<script type=", "</script>", res); res = StringParser.RemoveAll("<button onclick=", "</button>", res); url = string.Format("a href=\"http://{0}.{1}/", lang, searchHost); res = res.Replace("a href=\"/", url); url = string.Format("img src=\"http://{0}.{1}/", lang, searchHost); res = res.Replace("img src=\"/", url); result.Translations.Add(res); }
void TranslateWord(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock (sederetCode) { if (string.IsNullOrEmpty(sederetCode) || coockieTime < DateTime.Now.AddHours(-1)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.sederet.com/translate.php"), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); helpertop.CookieContainer = cookieContainer; coockieTime = DateTime.Now; string responseFromServertop = helpertop.GetResponse(); sederetCode = StringParser.Parse("<input type=\"hidden\" name=\"var\" value=\"", "\"", responseFromServertop); } } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.sederet.com/translate.php"), networkSetting, WebRequestContentType.UrlEncoded, encoding); helper.CookieContainer = cookieContainer; //eng2indo, indo2eng string query = "from_to={0}&kata={1}&var={2}"; if (languagesPair.From == Language.Indonesian) { query = string.Format(CultureInfo.InvariantCulture, query, "indo2eng", HttpUtility.UrlEncode(phrase), sederetCode); } else { query = string.Format(CultureInfo.InvariantCulture, query, "eng2indo", HttpUtility.UrlEncode(phrase), sederetCode); } helper.AddPostData(query); string responseFromServer = helper.GetResponse(); lock (sederetCode) { sederetCode = StringParser.Parse("<input type=\"hidden\" name=\"var\" value=\"", "\"", responseFromServer); } string translation = StringParser.Parse("<span id=\"result_title\"", "id=\"part_right\">", responseFromServer); Result child; StringParser subparser; if (translation.Contains("<b id=\"match_title\">Exact Match:</b>")) { child = CreateNewResult(phrase, languagesPair, subject); result.Childs.Add(child); string subblock = StringParser.Parse("<b id=\"match_title\">Exact Match:</b>", "</table>", translation); subparser = new StringParser(subblock); string[] subtranslation_list = subparser.ReadItemsList("<td id='result_td'>", "</td>"); for (int i = 0; i < subtranslation_list.Length; i += 2) { string subtranslation = subtranslation_list[i + 1]; subtranslation = StringParser.RemoveAll("<", ">", subtranslation); child.Translations.Add(HttpUtility.HtmlDecode(subtranslation)); } } if (translation.Contains("<b id=\"match_title\">Other Match(es):</b>")) { string subblock = StringParser.Parse("<b id=\"match_title\">Other Match(es):</b>", "</table>", translation); subparser = new StringParser(subblock); string[] subtranslation_list = subparser.ReadItemsList("<td id='result_td'>", "</td>"); for (int i = 0; i < subtranslation_list.Length; i += 2) { string subphrase = subtranslation_list[i]; subphrase = StringParser.RemoveAll("<", ">", subphrase); child = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(child); string subtranslation = subtranslation_list[i + 1]; subtranslation = StringParser.RemoveAll("<", ">", subtranslation); child.Translations.Add(HttpUtility.HtmlDecode(subtranslation)); } } result.ResultNotFound = result.Childs.Count == 0; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://slovnyk.org/fcgi-bin/dic.fcgi?iw={0}&hn=pre&il={1}&ol={2}&ul=en-us"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase), ConvertLanguage(languagesPair.From), ConvertLanguage(languagesPair.To)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse().Trim(); if(string.IsNullOrEmpty(responseFromServer)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<PRE>", "</PRE>", responseFromServer).Trim(); if(string.IsNullOrEmpty(translation)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string subphrase, subtranslation; int startIdx = 0; int newLineIdx = 0; int tabIdx = translation.IndexOf('\t', startIdx); bool firstRun = true; Result subres = result; while(tabIdx >= 0) { newLineIdx = translation.IndexOf('\n', startIdx); if(newLineIdx < 0) newLineIdx = translation.Length; subphrase = translation.Substring(startIdx, tabIdx - startIdx); subtranslation = translation.Substring(tabIdx + 1, newLineIdx - tabIdx - 1); startIdx = newLineIdx + 1; if(startIdx < translation.Length) tabIdx = translation.IndexOf('\t', startIdx); else tabIdx = -1; if(firstRun && tabIdx < 0 && string.Compare(subphrase, phrase, true, CultureInfo.InvariantCulture) ==0) { result.Translations.Add(subtranslation); return; } if(firstRun) { subres = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(subres); } firstRun = false; if(string.Compare(subphrase, subres.Phrase, true, CultureInfo.InvariantCulture) !=0) { subres = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(subres); } subres.Translations.Add(subtranslation); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://www.systranet.com/tt?gui=www.systran.co.uk;/snetcom/text/ts&lp={0}&MAX_TRANSLATED_WORDS=500&service=translate"; query = string.Format(query, ConvertLanguagesPair(languagesPair)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncoded); helper.AddPostData(phrase); string responseFromServer = helper.GetResponse(); string status = responseFromServer.Substring(6); result.Translations.Add(status); /* if(status != "2") { throw new TranslationException(responseFromServer.Substring(10)); } else { if(responseFromServer.Substring(17) == "Translation direction is not correct") throw new TranslationException("Translation direction is not correct"); result.Translations.Add(responseFromServer.Substring(17)); } */ }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { MegaslownikTools.DoTranslate(this, phrase, languagesPair, subject, result, networkSetting); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://rosukrdic.iatp.org.ua/search.php?fullname=%E0%E2%EE%F1%FC WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.rosukrdic.ho.ua/search.php"), networkSetting, WebRequestContentType.UrlEncoded); helper.Encoding = Encoding.GetEncoding(1251); //koi8-u string query = "fullname={0}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase.ToLowerInvariant(), helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); if(responseFromServer.IndexOf("</b>������ � ��������.") >= 0 || responseFromServer.IndexOf("</b> ������ � ��������.") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<body>", "</body>", responseFromServer); translation = translation.Replace("</u>", ""); translation = translation.Replace("</span>", ""); translation = translation.Replace("<span class=\"examples_class\">", ""); translation = translation.Replace("<em>", ""); translation = translation.Replace("</em>", ""); translation = translation.Replace("<p>\n", "<p>"); translation = translation.Replace("<p>\r\n", "<p>"); translation = translation.Replace("<h2>", "\n<h2>"); translation = translation.Replace("</p>", "\n</p>"); translation = translation.Replace("<span class='examples_class'>", ""); StringParser phrasesParser = new StringParser(translation); string[] phrases = phrasesParser.ReadItemsList("<h2>", "</h2>", "787654323"); StringParser translationsParser = new StringParser(translation); string[] translations = translationsParser.ReadItemsList("<p", "\n", "787654323"); string subphrase; string subtranslation; Result subres = null; for(int i = 0; i < phrases.Length; i++) { subphrase = phrases[i].Trim(); if(subphrase.EndsWith(".")) subphrase = subphrase.Substring(0, subphrase.Length-1); subtranslation = translations[i].Substring(1).Trim(); subtranslation = subtranslation.Replace("<span class=\"style1\">", ""); subtranslation = subtranslation.Replace("lass=\"style1\">", ""); subtranslation = subtranslation.Replace("</p>", ""); subres = CreateNewResult(subphrase, languagesPair, subject); subres.Translations.Add(subtranslation); result.Childs.Add(subres); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { WikiUtils.DoTranslate(searchEngine, searchHost, phrase, languagesPair, subject, result, networkSetting); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://dict.linux.org.ua/dict/db/table_adv.php?word_str=help&expr=any&A=on&P=on&O=on WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://dict.linux.org.ua/db/table_adv.php"), networkSetting, WebRequestContentType.UrlEncoded); //helper.Encoding = Encoding.GetEncoding(21866); //koi8-u string query = "word={0}&expr=any&A=on&P=on&O=on"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); if(responseFromServer.IndexOf("не знайдено<br>") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.EndsWith("Рядок пошуку містить недозволені символи.")) { result.ResultNotFound = true; throw new TranslationException("Query contains extraneous symbols"); } else if(!responseFromServer.Contains("</html>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<table BORDER WIDTH=", "</table>", responseFromServer); translation = translation.Replace("<B>", ""); translation = translation.Replace("</B>", ""); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<tr>", "</td></tr>", "787654323"); string subpart; string subphrase; string subtranslation; Result subres = null; foreach(string part in translations) { subpart = part; subpart = StringParser.RemoveAll("<td width=\"2%\">", "</td><td width=\"40%\">", subpart); subpart = subpart.Replace("<td></td><td>", ""); if(subpart.StartsWith("<A HREF")) { subphrase = StringParser.Parse("\">", "</A>", subpart); subtranslation = StringParser.Parse("\"40%\">", "</td>", subpart); if(translations.Length == 1 && string.Compare(subphrase, phrase, true, CultureInfo.InvariantCulture) ==0) { result.Translations.Add(subtranslation); return; } subres = CreateNewResult(subphrase, languagesPair, subject); subres.Translations.Add(subtranslation); result.Childs.Add(subres); } else if(!subpart.StartsWith(" ")) { int idx = subpart.IndexOf("</td>"); if(idx < 0) { subphrase = "Parse Error"; subtranslation = "Parse Error"; } else { subphrase = subpart.Substring(0, idx); subpart = subpart.Substring(idx + 5); subpart = subpart.Replace("<td width=\"40%\">", ""); subtranslation = StringParser.Parse("\">", "</A>", subpart); } if(translations.Length == 1 && string.Compare(subphrase, phrase, true, CultureInfo.InvariantCulture) ==0) { result.Translations.Add(subtranslation); return; } subres = CreateNewResult(subphrase, languagesPair, subject); subres.Translations.Add(subtranslation); result.Childs.Add(subres); } else { subtranslation = StringParser.Parse("\"40%\">", "</td>", subpart); if(subres != null) subres.Translations.Add(subtranslation); } } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://www.urduenglishdictionary.org/English-To-Urdu-Translation/test/Page-1.htm string query = "http://www.urduenglishdictionary.org/English-To-Urdu-Translation/{0}/Page-1.htm"; if(languagesPair.From == Language.Urdu) query = "http://www.urduenglishdictionary.org/Urdu-To-English-Translation/{0}/Page-1.htm"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("</B> could not be found!</h2>") && responseFromServer.Contains("<U>Suggestions:</U><BR><BR><BR><BR><BR><BR></div>") ) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.Contains("</B> could not be found!</h2>") && responseFromServer.Contains("<U>Suggestions:</U><BR><BR><a") ) { //suggestions exists string suggestions = StringParser.Parse("<U>Suggestions:</U><BR><BR>", "</div>", responseFromServer); StringParser parser = new StringParser(suggestions); string[] suggestions_list = parser.ReadItemsList("<a href='", "</a>"); foreach(string str in suggestions_list) { result.Translations.Add("html!<p><a href='http://www.urduenglishdictionary.org" + str + "</a></p>"); } } else { if(responseFromServer.Contains("<tr class='head-row'>")) { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<tr class='head-row'>", "</table>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<tr class='data-row'>", "</tr>"); Result subres = null; foreach(string str in translations) { string word = ""; if(str.Contains("align=left valign=top nowrap>")) word = StringParser.Parse("align=left valign=top nowrap>", "<sup>", str).Trim(); else word = StringParser.Parse("<td class='data-cell' align=left valign=top>", "<", StringParser.Parse("<td class='data-cell' align=left valign=top>", "sup>", str)).Trim(); string abbr = StringParser.Parse("<span class='feature'>", "</span>", str).Trim(); translation = StringParser.Parse("<td class='urdu-cell' align=right valign=top>", "<", str).Trim(); if(translations.Length == 1) subres = result; else if(languagesPair.From == Language.Urdu) { subres = CreateNewResult(translation, languagesPair, subject); result.Childs.Add(subres); } else { subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); } subres.Abbreviation = abbr; if(languagesPair.From == Language.Urdu) subres.Translations.Add(word); else subres.Translations.Add(translation); } } //more if(responseFromServer.Contains("Page-2.htm")) { query = "http://www.urduenglishdictionary.org/English-To-Urdu-Translation/{0}/Page-2.htm"; if(languagesPair.From == Language.Urdu) query = "http://www.urduenglishdictionary.org/Urdu-To-English-Translation/{0}/Page-2.htm"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); string link = "html!<p><a href=\"{0}\" title=\"{0}\">{1}</a></p>"; link = string.Format(link, query, "More ..."); Result subres = CreateNewResult(link, languagesPair, subject); result.Childs.Add(subres); } if(result.Childs.Count == 0 && result.Translations.Count == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { DictDUtils.DoTranslate(this, phrase, languagesPair, subject, result, networkSetting); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://www.slovnenya.com/dictionary/{0}"; query = string.Format(query, HttpUtility.UrlEncode(phrase).Replace("+", "%20")); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.AcceptLanguage = "en-us,en"; string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("did not return any results</div>") || responseFromServer.Contains("</span>` did not return any results")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("Query contains extraneous symbol(s)<") >= 0) { throw new TranslationException("Query contains extraneous symbols"); } else { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<hr style=\"border:0;background-color:grey;height:1px;width:92%;text-align:center\" />", "<hr style=\"border:0;background-color:grey;height:1px;width:92%;text-align:center\" />", responseFromServer); StringsTree tree = StringParser.ParseTreeStructure("<table", "</table>", translation); if(tree.Childs.Count != 1) throw new TranslationException("Wrong data structure"); tree = tree.Childs[0]; if(tree.Childs.Count != 1) throw new TranslationException("Wrong data structure"); tree = tree.Childs[0]; Result wordres = result; if(tree.Childs.Count == 0) throw new TranslationException("Wrong data structure"); //get word if(tree.Childs[0].Childs.Count != 1) throw new TranslationException("Wrong data structure"); string word = StringParser.Parse("font-size:14pt\">", "<", tree.Childs[0].Childs[0].Data); for(int i = 1; i < tree.Childs.Count; i++) { StringsTree abbr_tree = tree.Childs[i]; Result abbrres = null; string abbr = StringParser.Parse("font-size:12pt\">", "<", abbr_tree.Data); Result tmpRes = CreateNewResult(abbr, languagesPair, subject); wordres.Childs.Add(tmpRes); abbrres = tmpRes; StringParser parser = new StringParser(abbr_tree.Childs[0].Data); string[] translations = parser.ReadItemsList("font-size:12pt\">", "<"); foreach(string trans in translations) abbrres.Translations.Add(trans); } } }
void InternalDoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting, string post_data) { WebRequestHelper helper = null; if(string.IsNullOrEmpty(post_data)) { string query = "http://www.merriam-webster.com/dictionary/{0}"; query = string.Format(query, HttpUtility.UrlEncode(phrase)); result.ArticleUrl = query; helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); //helper.UseGoogleCache = true; } else { helper = new WebRequestHelper(result, new Uri("http://www.merriam-webster.com/dictionary"), networkSetting, WebRequestContentType.UrlEncoded); helper.AddPostData(post_data); } string responseFromServer = helper.GetResponse(); helper = null; if(responseFromServer.IndexOf("The word you've entered isn't in the dictionary.") >= 0) { if(responseFromServer.IndexOf("<PRE>") < 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { //get suggestions StringParser parser = new StringParser("<PRE>", "</PRE>", responseFromServer); string[] items = parser.ReadItemsList("\">", "<", "345873409587"); foreach(string item in items) { string part = item; string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{0}</a></p>"; link = string.Format(link, part); result.Translations.Add(link); } return; } } if(!(responseFromServer.Contains("One entry found.\n<br/>") || responseFromServer.Contains("One entry found.\n<br />"))) { if(string.IsNullOrEmpty(post_data) && responseFromServer.Contains("'list' value=\"va:")) { string count_str = StringParser.Parse("'list' value=\"va:", ",", responseFromServer); int count; if(int.TryParse(count_str, out count)) result.MoreEntriesCount = count; } StringParser parser = new StringParser("<ol class=\"results\"", "</ol>", responseFromServer); string[] items = parser.ReadItemsList("href=\"/dictionary/", "</a>"); foreach(string item in items) { string part = StringParser.ExtractLeft("\">", item); string name = StringParser.ExtractRight("\">", item); name = StringParser.RemoveAll("<sup>", "</sup>", name); string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{1}</a></p>"; link = string.Format(link, part, name); result.Translations.Add(link); } if(result.Translations.Count < 50 && responseFromServer.IndexOf("name='incr'") > 0) { //we has more items //incr=Next+5&jump=dragon%27s+blood&book=Dictionary&quer=blood&list=45%2C31%2C3602592%2C0%3Bdragon%27s+blood%3D2000318535%3Bflesh+and+blood%3D2000400359%3Bfull-blood%5B1%2Cadjective%5D%3D2000425490%3Bfull-blood%5B2%2Cnoun%5D%3D2000425517%3Bhalf-blood%3D2000475964%3Bhalf+blood%3D2000475978%3Bhigh+blood+pressure%3D2000498596%3Blow+blood+pressure%3D2000629024%3Bnew+blood%3D2000712110%3Bpure-blooded%3D2000860991 string incr_value = StringParser.Parse("<input type='submit' value='", "'", responseFromServer); string quer_value = StringParser.Parse("<input type='hidden' name='quer' value=\"", "\"", responseFromServer); string list_value = StringParser.Parse("<input type='hidden' name='list' value=\"", "\"", responseFromServer); string post_data_value = "incr={0}&jump={1}&book=Dictionary&quer={2}&list={3}"; post_data_value = string.Format(post_data_value , incr_value, HttpUtility.UrlEncode(items[0]), HttpUtility.UrlEncode(quer_value), HttpUtility.UrlEncode(list_value) ); //some cleaning responseFromServer = null; InternalDoTranslate(phrase, languagesPair, subject, result, networkSetting, post_data_value); } if(result.MoreEntriesCount != 0 && string.IsNullOrEmpty(post_data)) result.MoreEntriesCount -= result.Translations.Count; } else if(responseFromServer.Contains("<span class=\"variant\">")) { string part = StringParser.Parse("<span class=\"variant\">", "</span>", responseFromServer); string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{0}</a></p>"; link = string.Format(link, part); result.Translations.Add(link); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string from = ConvertLanguage(languagesPair.From); string to = ConvertLanguage(languagesPair.To); string query = "http://{0}.{1}.open-tran.eu/json/suggest/{2}"; query = string.Format(query, from, to, HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.Referer = "http://translate-net.appspot.com/"; string responseFromServer = helper.GetResponse(); JsonArray parsed = (JsonArray)JsonParser.Parse(responseFromServer); string count; string translation = ""; string subphrase, servicename; Result subres; foreach (JsonObject item in parsed) { translation = ((JsonValue)item["text"]).Value; count = ((JsonValue)item["count"]).Value; if (translation.StartsWith("&") || translation.StartsWith("_") || translation.StartsWith("$") || translation.StartsWith("~") ) { translation = translation.Substring(1); } subres = CreateNewResult(translation, languagesPair, subject); if (count != "1") { subres.Abbreviation = " {" + count.ToString() + "}"; } result.Childs.Add(subres); foreach (JsonObject project in (JsonArray)item["projects"]) { count = ((JsonValue)project["count"]).Value; servicename = ((JsonValue)project["path"]).Value.Substring(2); servicename = ((JsonValue)project["name"]).Value + " " + servicename; subphrase = ((JsonValue)project["orig_phrase"]).Value; if (subphrase.StartsWith("&") || subphrase.StartsWith("_") || subphrase.StartsWith("$") || subphrase.StartsWith("~") ) { subphrase = subphrase.Substring(1); } subphrase += " - " + servicename + " - "; subphrase += " {" + count.ToString() + "}"; subres.Translations.Add(subphrase); } } if (result.Childs.Count > 0) { result.ArticleUrl = "http://" + from + "." + to + ".open-tran.eu/suggest/" + phrase; result.ArticleUrlCaption = phrase; } else { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } }
void TranslateWord(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock (sederetCode) { if (string.IsNullOrEmpty(sederetCode) || coockieTime < DateTime.Now.AddHours(-1)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://web.cecs.pdx.edu/~bule/bahasa/search.php"), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); helpertop.CookieContainer = cookieContainer; coockieTime = DateTime.Now; string responseFromServertop = helpertop.GetResponse(); sederetCode = StringParser.Parse("<input type=\"hidden\" name=\"id\" value=\"", "\"", responseFromServertop); } } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://web.cecs.pdx.edu/~bule/bahasa/search.php"), networkSetting, WebRequestContentType.UrlEncoded, encoding); helper.CookieContainer = cookieContainer; //English to Indonesian, Indonesian to English string query = "id={0}&language={1}&method=fuzzy&stoken={2}"; if (languagesPair.From == Language.Indonesian) { query = string.Format(CultureInfo.InvariantCulture, query, sederetCode, "Indonesian to English", HttpUtility.UrlEncode(phrase)); } else { query = string.Format(CultureInfo.InvariantCulture, query, sederetCode, "English to Indonesian", HttpUtility.UrlEncode(phrase)); } helper.AddPostData(query); string responseFromServer = helper.GetResponse(); lock (sederetCode) { sederetCode = StringParser.Parse("<input type=\"hidden\" name=\"id\" value=\"", "\"", responseFromServer); } if (!responseFromServer.Contains("<th colspan=\"6\"><hr>")) { result.ResultNotFound = result.Childs.Count == 0; return; } string translation = StringParser.Parse("<th colspan=\"6\"><hr>", "<tr><td colspan=\"6\"><hr>", responseFromServer); Result child; StringParser subparser; { subparser = new StringParser(translation); string[] subtranslation_list = subparser.ReadItemsList("<td", "</td>"); for (int i = 0; i < subtranslation_list.Length; i += 6) { string subphrase = subtranslation_list[i]; subphrase = StringParser.ExtractRight(">", subphrase); child = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(child); string subtranslation = subtranslation_list[i + 1]; subtranslation = StringParser.ExtractRight(">", subtranslation); child.Translations.Add(HttpUtility.HtmlDecode(subtranslation)); string abbr = subtranslation_list[i + 2]; abbr = StringParser.ExtractRight(">", abbr); child.Abbreviation = abbr; } } result.ResultNotFound = result.Childs.Count == 0; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://www.dep.pl/dict?word=test&words=&lang=DE string query = "http://www.dep.pl/dict?word={0}&words=&lang=DE"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if (responseFromServer.IndexOf("has not been found - please post it to the") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<table cellspacing=", "</table>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<td align=\"left\">", "</td>", "787654323"); int cnt = translations.Length; string tmp; for (int i = 0; i < cnt; i++) { tmp = translations[i]; tmp = StringParser.RemoveAll("<a href=", ">", tmp); tmp = StringParser.RemoveAll("<font", ">", tmp); tmp = tmp.Replace("</font>", ""); tmp = tmp.Replace("</a>", ""); translations[i] = tmp; } cnt = translations.Length / 2; string polish, german; string subphrase, subtranslation; Result subres = null; for (int i = 0; i < cnt; i++) { polish = translations[i * 2]; german = translations[i * 2 + 1]; if (languagesPair.From == Language.German) { subphrase = german; subtranslation = polish; } else { subphrase = polish; subtranslation = german; } if (translations.Length == 2 && string.Compare(subphrase, phrase, true, CultureInfo.InvariantCulture) == 0) { result.Translations.Add(subtranslation); return; } subres = CreateNewResult(subphrase, languagesPair, subject); subres.Translations.Add(subtranslation); result.Childs.Add(subres); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { if (string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncodedGet, Encoding.GetEncoding(1251)); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServertop); } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncoded, Encoding.GetEncoding(1251)); //query string langDirection = "RU"; if (languagesPair.From == Language.Ukrainian) { langDirection = "UR"; } //templ=%CD%E5%F2+%EF%E5%F0%E5%E2%EE%E4%E0& //__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1} //&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8& //_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=& //_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3} string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1}&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8&_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=&_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3}"; query = string.Format(query, HttpUtility.UrlEncode(viewState, helper.Encoding), HttpUtility.UrlEncode(phrase, helper.Encoding), langDirection, HttpUtility.UrlEncode(eventValidation, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("onclickk=\"shword();\">", "</DIV>", responseFromServer); translation = translation.Replace("<font color=red>", ""); translation = translation.Replace("</font>", ""); result.Translations.Add(translation); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServer); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://babelfish.yahoo.com/translate_txt"), networkSetting, WebRequestContentType.UrlEncoded); helper.AcceptCharset = "utf-8"; //query //ei=UTF-8&doit=done&fr=bf-res&intl=1&tt=urltext&trtext=test+it&lp=en_ru&btnTrTxt=Translate string langpair = ConvertTranslatorLanguagesPair(languagesPair); string query = "ei=UTF-8&doit=done&fr=bf-res&intl=1&tt=urltext&trtext=" + HttpUtility.UrlEncode(phrase, System.Text.Encoding.UTF8) + "&lp=" + langpair + "&btnTrTxt=Translate"; helper.AddPostData(query); string responseFromServer = helper.GetResponse(); result.Translations.Add(StringParser.Parse("<div style=\"padding:0.6em;\">", "</div>", responseFromServer)); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock (cookieContainer) { if (coockieTime < DateTime.Now.AddHours(-1)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://translate.meta.ua/"), networkSetting, WebRequestContentType.UrlEncodedGet); helpertop.CookieContainer = cookieContainer; string responseFromServertop = helpertop.GetResponse(); coockieTime = DateTime.Now; } } string lang_from = ConvertLanguage(languagesPair.From); string lang_to = ConvertLanguage(languagesPair.To); string responseFromServer = null; lock (cookieContainer) { WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://translate.meta.ua/ajax/?sn=save_source"), networkSetting, WebRequestContentType.UrlEncoded); helper.CookieContainer = cookieContainer; //query //text_source=проверка&lang_to=ua&lang_from=ru&dict=** StringBuilder queryBuilder = new StringBuilder(); queryBuilder.AppendFormat("text_source={0}&", phrase); queryBuilder.AppendFormat("lang_to={0}&lang_from={1}&", lang_to, lang_from); queryBuilder.AppendFormat("dict=", GetSubject(subject)); string query = queryBuilder.ToString(); helper.AddPostData(query); responseFromServer = helper.GetResponse(); coockieTime = DateTime.Now; } if (!String.IsNullOrEmpty(responseFromServer)) { //{"r":true,"pc":1,"ui":"4c1ea0e46198f"} string code = StringParser.Parse("ui\":\"", "\"}", responseFromServer); //http://translate.meta.ua/ajax/?sn=get_translate&translate_uniqid=4c1ea0e46198f&lang_to=ua&lang_from=ru&translate_part=0 string query = "http://translate.meta.ua/ajax/?sn=get_translate&translate_uniqid={0}&lang_to={1}&lang_from={2}&translate_part=0"; string url = String.Format(query, code, lang_to, lang_from); lock (cookieContainer) { WebRequestHelper helper = new WebRequestHelper(result, new Uri(url), networkSetting, WebRequestContentType.UrlEncodedGet); helper.CookieContainer = cookieContainer; responseFromServer = helper.GetResponse(); coockieTime = DateTime.Now; } if (!String.IsNullOrEmpty(responseFromServer)) { //{"source":"\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430","translate":" \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430","translate_part":"0","type":"p","index":0,"r":true} string translation = StringParser.Parse("translate\":\"", "\"", responseFromServer); result.Translations.Add(HttpUtilityEx.HtmlDecode(translation)); } else { throw new TranslationException("Nothing returned from call to " + url); } } else { throw new TranslationException("Nothing returned from call to http://translate.meta.ua/ajax/?sn=save_source"); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://www.multitran.ru/c/m.exe?a=phr&s={0}&"; MultitranUtils.DoTranslatePhrases(this, query, phrase, languagesPair, subject, result, networkSetting); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://www.online-translator.com/text/references.aspx?prmtlang=en&direction={0}&word={1}"; query = string.Format(query, PromtUtils.ConvertLanguagesPair(languagesPair), HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if(responseFromServer.IndexOf("class=\"ref_not_found\"") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } result.ArticleUrl = query; result.ArticleUrlCaption = phrase; StringParser parser = new StringParser(responseFromServer); string[] translation_list = parser.ReadItemsList("<span class=\"ref_source\"", "</table>"); string subphrase; string abbreviation; Result child; StringParser subparser; foreach(string translation in translation_list) { subphrase = StringParser.Parse(">","</span>",translation); abbreviation = StringParser.Parse("<span class=\"ref_psp\">","</span>",translation); child = CreateNewResult(subphrase, languagesPair, subject); child.Abbreviation = abbreviation; result.Childs.Add(child); subparser = new StringParser(translation); string[] subtranslation_list = subparser.ReadItemsList("<span class=\"ref_result\">", "</span>"); foreach(string subtranslation in subtranslation_list) { child.Translations.Add(HttpUtility.HtmlDecode(subtranslation)); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock (viewState) { if (string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServertop); } } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncoded); //query lock (viewState) { //string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24ucTextTranslator%24tbFromAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbToAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbCCAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbSubject=&ctl00%24SiteContent%24ucTextTranslator%24tbBody=&ctl00%24SiteContent%24ucTextTranslator%24templates={1}&ctl00%24SiteContent%24ucTextTranslator%24checkShowVariants=on&ctl00%24SiteContent%24ucTextTranslator%24dlTemplates=General&ctl00%24SiteContent%24ucTextTranslator%24sourceText={2}&resultText=&ctl00%24SiteContent%24ucTextTranslator%24dlDirections={3}&ctl00%24SiteContent%24ucTextTranslator%24bTranslate=Translate&ctl00%24tbEmail=&ctl00%24tbName=&ctl00%24tbComment=&ctl00%24pollDiv%24tbSiteLang=en"; string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24MA_trasnlform%24selected_tab=text&chLangs=true&ctl00%24SiteContent%24MA_trasnlform%24rblTemplates=General&ctl00%24SiteContent%24MA_trasnlform%24otherTemplatesInput={1}&ctl00%24SiteContent%24MA_trasnlform%24sourceText={2}&ctl00%24SiteContent%24MA_trasnlform%24sLang={3}&ctl00%24SiteContent%24MA_trasnlform%24rLang={4}&ctl00%24SiteContent%24MA_trasnlform%24bTranslate=Translate&ctl00%24SiteContent%24MA_trasnlform%24changedFieldToAddr=&ctl00%24SiteContent%24MA_trasnlform%24hiddenDir=&ctl00%24SiteContent%24MA_trasnlform%24hiddenTranid=&ctl00%24changedField=&__PREVIOUSPAGE={5}"; query = string.Format(query, HttpUtility.UrlEncode(viewState), PromtUtils.GetSubject(subject), HttpUtility.UrlEncode(phrase), PromtUtils.ConvertLanguage(languagesPair.From), PromtUtils.ConvertLanguage(languagesPair.To), prevPage); helper.AddPostData(query); } string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("class=\"send_win\">", "</textarea>", responseFromServer); result.Translations.Add(translation); lock (viewState) { viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServer); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://slovnik.tiscali.cz/index.php?od=0&slovnik=dict_ac&dotaz=test string query = "http://slovnik.tiscali.cz/index.php?od=0&slovnik={0}&dotaz={1}"; query = string.Format(CultureInfo.InvariantCulture, query, ConvertLanguagesPair(languagesPair), HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if (responseFromServer.Contains("<strong>Zadané slovo nebylo nalezeno !!!</strong>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { if (responseFromServer.Contains("<div class=\"vysledek\">")) { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<div class=\"vysledek\">", "</div>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<a", "<br />"); Result subres = null; foreach (string str in translations) { string word = StringParser.Parse("<strong>", "</strong>", str); string subtranslation = StringParser.Parse(">", "<", StringParser.Parse("<a", "/a>", str)); if (subres == null || subres.Phrase != word) { subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); } subres.Translations.Add(subtranslation); } } //more if (responseFromServer.Contains("<strong>Další >></strong>")) { query = "http://slovnik.tiscali.cz/index.php?od=24&slovnik={0}&dotaz={1}"; query = string.Format(CultureInfo.InvariantCulture, query, ConvertLanguagesPair(languagesPair), HttpUtility.UrlEncode(phrase)); string link = "html!<p><a href=\"{0}\" title=\"{0}\">{1}</a></p>"; link = string.Format(link, query, "More phrases ..."); Result subres = CreateNewResult(link, languagesPair, subject); result.Childs.Add(subres); } if (result.Childs.Count == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=43"), networkSetting, WebRequestContentType.UrlEncodedGet, Encoding.GetEncoding(1251)); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServertop); } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=43"), networkSetting, WebRequestContentType.UrlEncoded, Encoding.GetEncoding(1251)); //__EVENTTARGET=_ctl1%24Menu1&__EVENTARGUMENT=1& //__VIEWSTATE={0}&q={1}&_ctl1%3AtsLang=rbLangU&LanguageH=RUS& //__EVENTVALIDATION={2} string query = "__EVENTTARGET=_ctl1%24Menu1&__EVENTARGUMENT=1&__VIEWSTATE={0}&q={1}&_ctl1%3AtsLang=rbLangU&LanguageH=RUS&__EVENTVALIDATION={2}"; query = string.Format(query, HttpUtility.UrlEncode(viewState, helper.Encoding), HttpUtility.UrlEncode(phrase, helper.Encoding), HttpUtility.UrlEncode(eventValidation, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServer); if(responseFromServer.IndexOf("��������� ����� ����� �� ��������. ��������� �������� ����� ������, ��� ����������� � �����������, ��� �������� � <a") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("� ����� ���������� ������. �������� ������� � ����:</b>") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("������� ��� ����� ����� �� ��������. ��������� �������� ����� ������, ��� ����������� � �����������, ��� �������� � <") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("� ����� ���������� ������.</b>") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string translation = StringParser.Parse("<span class=\"wrd\" xmlns:msxsl=\"urn:schemas-microsoft-com:xslt\">", "</TABLE></span>", responseFromServer); string abbr = StringParser.Parse("title=\"", "\"", translation); abbr += " " + StringParser.Parse("xslt\">", "</span>", translation).Trim(); //result.Abbreviation = abbr; StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<span class=\"tolk\"", "</td><td></td></tr>", "3495783-4572385"); foreach(string subtranslation in translations) { translation = StringParser.Parse(">", "</span>", subtranslation); Result subres; subres = CreateNewResult(translation, languagesPair, subject); result.Childs.Add(subres); parser = new StringParser(subtranslation); string[] subtranslations = parser.ReadItemsList("<a ", "/a>", "3495783-4572385"); foreach(string s in subtranslations) subres.Translations.Add(StringParser.Parse(">", "<", s)); } }
internal static void DoTranslate(IDictDServiceItem dictServiceItem, string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { ServiceItem si = dictServiceItem as ServiceItem; DictionaryClient dc = null; try { dc = DictDClientsPool.GetPooledClient(dictServiceItem.Urls); DefinitionCollection definitions = dc.GetDefinitions(phrase, si.Name); string translation; if (definitions != null && definitions.Count > 0) { foreach (Definition df in definitions) { translation = "html!<div style='width:{allowed_width}px;overflow:scroll;overflow-y:hidden;overflow-x:auto;'><pre>" + df.Description.Replace("\r\n", "<br />") + " </pre></div>"; result.Translations.Add(translation); } } else { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } catch (DictionaryServerException e) { if (e.ErrorCode == 552) //No definitions found { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { throw; } } finally { if (dc != null) { DictDClientsPool.PushPooledClient(dc); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { List <string> words = StringParser.SplitToWords(phrase); foreach (string word in words) { TranslateWord(word, languagesPair, subject, result, networkSetting); } }
protected abstract void DoGuess(string phrase, GuessResult result, NetworkSetting networkSetting);
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { InternalDoTranslate(phrase, languagesPair, subject, result, networkSetting, ""); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string langPair = GoogleUtils.ConvertLanguagesPair(languagesPair); string query_base = "http://ajax.googleapis.com/ajax/services/language/translate?" + "v=1.0&langpair={0}&hl=en&q="; query_base = string.Format(query_base, langPair); int allowed_length = 2070 - query_base.Length; //"key=ABQIAAAA1Xz0dZCPKigOKIhDUJZ6FxQmSA1Htufb6qVqyW_v4yDxIUvb4BRwNjuLUmsgD0bAGP7qnB0dWYfEdg"; List <string> queries = new List <string>(); SplitToQueries(queries, phrase, SplitMode.Separators, allowed_length); StringBuilder sb = new StringBuilder(phrase.Length); string subres = ""; int prefix_idx; int suffix_idx; foreach (string subphrase in queries) { if (subphrase.Length > 500) { throw new InvalidOperationException("The length of string is greater of 500 characters." + " string : " + subphrase + ", full phrase : " + phrase ); } //remove not-alphas from start and end of subphrase prefix_idx = subphrase.Length; for (int i = 0; i < subphrase.Length; i++) { if (char.IsLetter(subphrase[i])) { prefix_idx = i; break; } } if (prefix_idx == subphrase.Length) { // no alphas - skip without translation sb.Append(subphrase); continue; } suffix_idx = 0; for (int i = subphrase.Length - 1; i >= 0; i--) { if (char.IsLetter(subphrase[i])) { suffix_idx = i; break; } } string real_query = query_base + HttpUtility.UrlEncode(subphrase.Substring(prefix_idx, suffix_idx - prefix_idx + 1)); if (real_query.Length > 2070) { throw new InvalidOperationException("The length of query is greater of 2070 characters." + " string : " + subphrase + " query : " + real_query + " full phrase : " + phrase ); } /* debug splitting algo * result.Translations.Add( * " string length : " + subphrase.Length.ToString()); * * result.Translations.Add( * " \r\nstring : " + subphrase); * result.Translations.Add( * " \r\nstring for query length : " + (suffix_idx - prefix_idx + 1).ToString()); * result.Translations.Add( * " \r\nstring for query : " + subphrase.Substring(prefix_idx, suffix_idx - prefix_idx + 1)); * result.Translations.Add( * " \r\nquery length : " + real_query.Length.ToString()); */ if (prefix_idx > 0) { sb.Append(subphrase.Substring(0, prefix_idx)); } subres = DoInternalTranslate(real_query, result, networkSetting); sb.Append(subres); if (suffix_idx < subphrase.Length - 1) { sb.Append(subphrase.Substring(suffix_idx + 1)); } } result.Translations.Add(sb.ToString()); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://www.urduword.com/search.php?English=test string query = "http://www.urduword.com/search.php?English={0}"; if(languagesPair.From == Language.Urdu) query = "http://www.urduword.com/search.php?Roman={0}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<p>Could not find translation for <b>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { if(responseFromServer.Contains("<table border=\"0\" width=\"100%\" align=\"center\" cellpadding=\"3\" cellspacing=\"0\" >")) { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<table border=\"0\" width=\"100%\" align=\"center\" cellpadding=\"3\" cellspacing=\"0\" >", "</table>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<tr>", "</tr>"); Result subres = null; foreach(string str in translations) { if(str.Contains("class=\"tablehead\"")) continue; string word = StringParser.Parse(">", "<", StringParser.Parse("<a", "/a>", str)); translation = StringParser.Parse("align=\"center\">", "<", str); if(languagesPair.From == Language.Urdu) { if(subres == null || subres.Phrase != translation) { subres = CreateNewResult(translation, languagesPair, subject); result.Childs.Add(subres); } } else { if(subres == null || subres.Phrase != word) { subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); } } if(languagesPair.From == Language.Urdu) subres.Translations.Add(word); else subres.Translations.Add(translation); } } //more if(responseFromServer.Contains("page=2\">Next")) { query = "http://www.urduword.com/search.php?English={0}&page=2"; if(languagesPair.From == Language.Urdu) query = "http://www.urduword.com/search.php?Roman={0}&page=2"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); string link = "html!<p><a href=\"{0}\" title=\"{0}\">{1}</a></p>"; link = string.Format(link, query, "More ..."); Result subres = CreateNewResult(link, languagesPair, subject); result.Childs.Add(subres); } if(result.Childs.Count == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } }
public static string[] GetPhrasesPages(string word, NetworkSetting networkSetting) { List<string> result = new List<string>(); ulif.dictlib service = GetService(networkSetting); CheckVersion(service); bool found; bool SearchWordResultSpecified; bool rSpecified; int word_idx; service.SearchWord(word, gldescdic.PHRAS_DIC, true, true, true, out word_idx, out SearchWordResultSpecified, out found, out rSpecified); if(!found) return result.ToArray(); int word_uid; service.ReestrGetID(word_idx, true, gldescdic.PHRAS_DIC, true, true, true, out word_uid, out rSpecified); phrasdictphraseology[] phraseologies; byte[] first_res = service.phrasPrepare(word_uid, true, out phraseologies); List<KeyValuePair<int, sbyte> > used_aid = new List<KeyValuePair<int, sbyte> >(); for(int i = 0; i < phraseologies.Length; i++) { KeyValuePair<int, sbyte> kvp = new KeyValuePair<int, sbyte>(phraseologies[i].aid, phraseologies[i].l); if (!used_aid.Contains(kvp)) { result.Add(service.getpharticle2(phraseologies[i].aid, true, phraseologies[i].l, true, "style2_2.css", true, true)); used_aid.Add(kvp); } } return result.ToArray(); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://en.sozlukte.com/AjaxSearch/?word={0}&lang={1}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase), ConvertLanguagesPair(languagesPair)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if (responseFromServer.Contains("<h3>-</h3>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<h3>", "</h3>", responseFromServer); result.Translations.Add(translation); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://slovnik.seznam.cz/?q=test&lang=en_cz string query = "http://slovnik.seznam.cz/?q={0}&lang={1}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase), ConvertLanguagesPair(languagesPair)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("</strong>" nebylo ve Slovníku nic nalezeno.</h2>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; //translation by self if(responseFromServer.Contains("<table id=\"words\">")) { string translation = StringParser.Parse("<table id=\"words\">", "</table>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<tr>", "</tr>"); Result subres = null; foreach(string str in translations) { string word = StringParser.Parse(">", "<", StringParser.Parse("<a", "/a>", str)); subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); StringParser subparser = new StringParser("<td class=\"translated\">", "</td>", str); string[] subtranslations = subparser.ReadItemsList("<a", "/a>") ; foreach(string sub_str in subtranslations) { if(!sub_str.Contains("<img src")) subres.Translations.Add(StringParser.Parse(">", "<", sub_str)); } } } //phrases if(responseFromServer.Contains("<div id=\"collocations\">")) { string translation = StringParser.Parse("<div id=\"collocations\">", "</div>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<dt>", "</dd>"); Result subres = null; foreach(string str in translations) { string word = StringParser.Parse(">", "<", StringParser.Parse("<a", "/a>", str)); subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); StringParser subparser = new StringParser("<dd>", "</dd>", str + "</dd>"); string[] subtranslations = subparser.ReadItemsList("<a", "/a>") ; foreach(string sub_str in subtranslations) { subres.Translations.Add(StringParser.Parse(">", "<", sub_str)); } } if(responseFromServer.Contains("&from=31\">2</a></span>")) { //more phrases string link = "html!<p><a href=\"{0}\" title=\"{0}\">{1}</a></p>"; link = string.Format(link, query + "&from=31", "More phrases ..."); subres = CreateNewResult(link, languagesPair, subject); result.Childs.Add(subres); } } if(result.Childs.Count == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://synonimy.ux.pl/multimatch.php?word={0}&search=1"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); string[] translations = StringParser.ParseItemsList("<li><a accesskey=", "</li>", responseFromServer); if (translations.Length == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string subtranslation; foreach (string translation in translations) { subtranslation = StringParser.ExtractRight(">", translation); subtranslation = StringParser.RemoveAll("<", ">", subtranslation); result.Translations.Add(subtranslation); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { WikiUtils.DoSearch(searchHost, phrase, languagesPair, subject, result, networkSetting); }