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) { 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)); } } }
public PromtBaseTranslator() { PromtUtils.InitServiceItem(this); }