C# 有道API翻譯


原文: C# 有道API翻譯 查詢單詞詳細信息

有道雲官方文檔

有道雲翻譯API簡介:http://ai.youdao.com/docs/doc-trans-api.s#p01

有道雲C#Demo : http://ai.youdao.com/docs/doc-trans-api.s#p08

查詢單詞信息

在有道雲的Demo中,已經很完整的給出了相應的代碼~

但是針對是的英-漢等翻譯,如何只查詢單個單詞的詳細信息,包含單詞的翻譯/音標/釋義等?例如下圖示例信息:

 

 

下面修改后封裝的查詢單詞詳細信息服務(僅供參考): 

復制代碼
 1     /// <summary>
 2     /// 有道詞典API
 3     /// </summary>
 4     internal class YouDaoApiService
 5     {
 6         const string AppKey = "131b76a4ee1ecd13";//AppKey和AppSecret是本人@Winter申請的賬號,僅供測試使用
 7         const string LangEn = "en";
 8         const string AppSecret = "KX9hLrgSMhfKkvIqS6nhwtwMcRymJqEA";
 9 
10         public static async Task<YouDaoTranslationResponse> GetTranslatioAsync(string queryText, string from = LangEn, string to = LangEn)
11         {
12             var requestUrl = GetRequestUrl(queryText, from, to);
13 
14             WebRequest translationWebRequest = WebRequest.Create(requestUrl);
15 
16             var response = await translationWebRequest.GetResponseAsync();
17 
18             using (Stream stream = response.GetResponseStream())
19             {
20                 using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException("有道Api查詢出錯!"), Encoding.GetEncoding("utf-8")))
21                 {
22                     string result = reader.ReadToEnd();
23                     var youDaoTranslationResponse = JsonConvert.DeserializeObject<YouDaoTranslationResponse>(result);
24 
25                     return youDaoTranslationResponse;
26                 }
27             }
28         }
29 
30         private static string GetRequestUrl(string queryText, string from, string to)
31         {
32             string salt = DateTime.Now.Millisecond.ToString();
33 
34             MD5 md5 = new MD5CryptoServiceProvider();
35             string md5Str = AppKey + queryText + salt + AppSecret;
36             byte[] output = md5.ComputeHash(Encoding.UTF8.GetBytes(md5Str));
37             string sign = BitConverter.ToString(output).Replace("-", "");
38 
39             var requestUrl = string.Format(
40                 "http://openapi.youdao.com/api?appKey={0}&q={1}&from={2}&to={3}&sign={4}&salt={5}",
41                 AppKey,
42                 HttpUtility.UrlDecode(queryText, System.Text.Encoding.GetEncoding("UTF-8")),
43                 from, to, sign, salt);
44 
45             return requestUrl;
46         }
47     }
復制代碼

 注:值得一提的是,查詢單詞信息,en->en路徑有道提供的數據不完整,會返回301錯誤碼。聯系有道開發后,提供的方案是auto->zhs。

序列化解析的數據類:

[DataContract]
    public class YouDaoTranslationResponse
    {
        [DataMember(Name = "errorCode")]
        public string ErrorCode { get; set; }
 
        [DataMember(Name = "query")]
        public string QueryText { get; set; }
 
        [DataMember(Name = "speakUrl")]
        public string InputSpeakUrl { get; set; }
 
        [DataMember(Name = "tSpeakUrl")]
        public string TranslationSpeakUrl { get; set; }
 
        /// <summary>
        /// 首選翻譯
        /// </summary>
        [DataMember(Name = "translation")]
        public List<string> FirstTranslation { get; set; }
 
        /// <summary>
        /// 基本釋義
        /// </summary>
        [DataMember(Name = "basic")]
        public TranslationBasicData BasicTranslation { get; set; }
 
        ///// <summary>
        ///// 網絡釋義,該結果不一定存在,暫時不使用
        ///// </summary>
        //[DataMember(Name = "web")]
        //public TranslationWebData WebTranslation { get; set; }
    }
 
    /// <summary>
    /// 基本釋義
    /// </summary>
    [DataContract]
    public class TranslationBasicData
    {
        [DataMember(Name = "phonetic")]
        public string Phonetic { get; set; }
 
        /// <summary>
        /// 英式發音
        /// </summary>
        [DataMember(Name = "uk-phonetic")]
        public string UkPhonetic { get; set; }
 
        /// <summary>
        /// 美式發音
        /// </summary>
        [DataMember(Name = "us-phonetic")]
        public string UsPhonetic { get; set; }
 
        /// <summary>
        /// 翻譯
        /// </summary>
        [DataMember(Name = "explains")]
        public List<string> Explains { get; set; }
    }
 
    /// <summary>
    /// 網絡釋義
    /// </summary>
    [DataContract]
    public class TranslationWebData
    {
        [DataMember(Name = "key")]
        public string Key { get; set; }
 
        [DataMember(Name = "value")]
        public List<string> Explains { get; set; }
    }

 

 
分類:  .NET-C#學習

有道雲官方文檔

有道雲翻譯API簡介:http://ai.youdao.com/docs/doc-trans-api.s#p01

有道雲C#Demo : http://ai.youdao.com/docs/doc-trans-api.s#p08

查詢單詞信息

在有道雲的Demo中,已經很完整的給出了相應的代碼~

但是針對是的英-漢等翻譯,如何只查詢單個單詞的詳細信息,包含單詞的翻譯/音標/釋義等?例如下圖示例信息:

 

 

下面修改后封裝的查詢單詞詳細信息服務(僅供參考): 

復制代碼
 1     /// <summary>
 2     /// 有道詞典API
 3     /// </summary>
 4     internal class YouDaoApiService
 5     {
 6         const string AppKey = "131b76a4ee1ecd13";//AppKey和AppSecret是本人@Winter申請的賬號,僅供測試使用
 7         const string LangEn = "en";
 8         const string AppSecret = "KX9hLrgSMhfKkvIqS6nhwtwMcRymJqEA";
 9 
10         public static async Task<YouDaoTranslationResponse> GetTranslatioAsync(string queryText, string from = LangEn, string to = LangEn)
11         {
12             var requestUrl = GetRequestUrl(queryText, from, to);
13 
14             WebRequest translationWebRequest = WebRequest.Create(requestUrl);
15 
16             var response = await translationWebRequest.GetResponseAsync();
17 
18             using (Stream stream = response.GetResponseStream())
19             {
20                 using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException("有道Api查詢出錯!"), Encoding.GetEncoding("utf-8")))
21                 {
22                     string result = reader.ReadToEnd();
23                     var youDaoTranslationResponse = JsonConvert.DeserializeObject<YouDaoTranslationResponse>(result);
24 
25                     return youDaoTranslationResponse;
26                 }
27             }
28         }
29 
30         private static string GetRequestUrl(string queryText, string from, string to)
31         {
32             string salt = DateTime.Now.Millisecond.ToString();
33 
34             MD5 md5 = new MD5CryptoServiceProvider();
35             string md5Str = AppKey + queryText + salt + AppSecret;
36             byte[] output = md5.ComputeHash(Encoding.UTF8.GetBytes(md5Str));
37             string sign = BitConverter.ToString(output).Replace("-", "");
38 
39             var requestUrl = string.Format(
40                 "http://openapi.youdao.com/api?appKey={0}&q={1}&from={2}&to={3}&sign={4}&salt={5}",
41                 AppKey,
42                 HttpUtility.UrlDecode(queryText, System.Text.Encoding.GetEncoding("UTF-8")),
43                 from, to, sign, salt);
44 
45             return requestUrl;
46         }
47     }
復制代碼

 注:值得一提的是,查詢單詞信息,en->en路徑有道提供的數據不完整,會返回301錯誤碼。聯系有道開發后,提供的方案是auto->zhs。

序列化解析的數據類:

  View Code

 

 
分類:  .NET-C#學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM