public override async Task <TranslateRequestResult> Request()
        {
            try
            {
                var web = new HtmlWeb();
                var doc = await web.LoadFromWebAsync(string.Format(DICTIONARY_URL, Query));

                var defs   = doc.DocumentNode.SelectNodes("//div[contains(@class, 'def ddef_d')]");
                var sounds = doc.DocumentNode.SelectNodes("//source[@type='audio/mpeg']");
                var result = new TranslateRequestResult()
                {
                    Original = Query
                };
                result.Translate = new Dictionary <string, string[]>();
                result.Translate.Add("", defs.Take(5).Select(n => n.InnerText.Replace('\n', ' ').Trim()).ToArray());
                if (sounds.IsNotNull() && sounds.Count > 0)
                {
                    result.UrlSound = string.Format(DICTIONARY_BASE_URL, sounds[0].GetAttributeValue("src", null));
                }
                return(result);
            }
            catch (Exception e)
            {
                Log(e.ToString());
            }

            return(null);
        }
Beispiel #2
0
        private TranslateRequestResult PasreJsonResult(TTranslateDictionary dict, string enc)
        {
            TranslateRequestResult res = new TranslateRequestResult();

            res.Encoding = enc;
            if (dict.Sentences.Length > 0)
            {
                res.Original = dict.Sentences[0].Original;
                //res.Phonetic = dict.Sentences[0].Translit;
                res.UrlSound = string.Format(_soundUrl, res.Original);
            }
            if (dict.Dict != null && dict.Dict.Length > 0)
            {
                foreach (TDictionaryItem item in dict.Dict)
                {
                    res.Translate.Add(item.Position, item.Terms);
                }
            }

            return(res);
        }
Beispiel #3
0
        public override async Task <TranslateRequestResult> Request()
        {
            string url = String.Format(_baseAddress, _soundUrl, Target, Query);
            TranslateRequestResult result = null;

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                if (request != null)
                {
                    var response = await request.GetResponseAsync();

                    var webResponse = (HttpWebResponse)response;
                    if (webResponse == null)
                    {
                        return(null);
                    }
                    Stream resp = webResponse.GetResponseStream();
                    if (resp != null)
                    {
                        Encoding fromenc = Encoding.GetEncoding(webResponse.CharacterSet);
                        Encoding toenc   = Encoding.Default;

                        StreamReader reader        = new StreamReader(resp, fromenc);
                        string       resultRequest = reader.ReadToEnd();

                        TTranslateDictionary dict = JsonConvert.DeserializeObject <TTranslateDictionary>(resultRequest);
                        result = (TranslateRequestResult)PasreJsonResult(dict, "utf-8");
                        reader.Close();
                        resp.Close();
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
            }
            return(null);
        }