123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- using OASystem.Domain.ViewModels.JuHeExchangeRate;
- using System.Text.Json;
- namespace OASystem.API.OAMethodLib.YouDaoAPI
- {
-
-
-
- public static class YouDaoApiTools
- {
- private static readonly HttpClient _httpClient = new HttpClient { BaseAddress = new Uri("https://openapi.youdao.com") };
-
- private static readonly string _appKey = "0fe3bc01e109ed36";
- private static readonly string _appSecret = "1f2x9TrqJfSBEJ8iH9GEFGgTyaYGjEry";
- #region OCR 调用翻译
- public static async Task<string> GetOCR_ReTrans(string txt)
- {
- var data = await GetReTrans(txt);
- string str = "";
- if (data == null && data.Code != 0)
- str = txt;
- else
- str = data.Data;
- return str;
- }
- #endregion
-
-
-
-
-
-
-
-
- public static async Task<Result> GetReTrans(string txt, string from = "zh-CHS", string to = "en")
- {
- var result = new Result();
- #region MyRegion
- if (string.IsNullOrEmpty(txt))
- {
- result.Msg = "待翻译文本为空!";
- return result;
- }
- #endregion
- string url = string.Format("/api");
- #region 请求参数处理
- string q = txt;
-
- string input = q.Length <= 20 ? q : q.Substring(0, 10) + q.Length + q.Substring(q.Length - 10, 10);
- string salt = DateTime.Now.Millisecond.ToString();
- string curtime = GetUTCTime(true).ToString();
-
- string signStr = string.Format("{0}{1}{2}{3}{4}", _appKey, input, salt, curtime, _appSecret);
- string sign = SHA256EncryptString(signStr);
- #endregion
- var reqData = new FormUrlEncodedContent(
- new List<KeyValuePair<string, string>>()
- {
-
- new KeyValuePair<string, string>("q",q),
- new KeyValuePair<string, string>("from",from),
- new KeyValuePair<string, string>("to",to),
- new KeyValuePair<string, string>("appKey",_appKey),
- new KeyValuePair<string, string>("salt",salt),
- new KeyValuePair<string, string>("sign",sign),
- new KeyValuePair<string, string>("signType","v3"),
- new KeyValuePair<string, string>("curtime",curtime),
- });
- var reTransReq = await _httpClient.PostAsync(url, reqData);
- if (reTransReq.IsSuccessStatusCode)
- {
- var strResponse = await reTransReq.Content.ReadAsStringAsync();
- var strResponse1 = System.Web.HttpUtility.UrlDecode(strResponse, System.Text.Encoding.UTF8);
- var trans = JsonConvert.DeserializeObject<dynamic>(strResponse1);
- string errorCode = trans["errorCode"].ToString();
- if (errorCode == "0")
- {
- result.Code = 0;
- var translation = JsonConvert.DeserializeObject<List<string>>(trans["translation"].ToString());
- result.Msg = string.Format(@"成功!");
- result.Data = translation[0];
- }
- else
- {
- result.Msg = string.Format(@"有道翻译API [Error:{0}]", errorCode);
- }
- }
- else
- {
- result.Msg = "接口请求失败!";
- }
- return result;
- }
- #region SHA256加密
-
-
-
-
-
- public static string SHA256EncryptString(string data)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(data);
- byte[] hash = SHA256Managed.Create().ComputeHash(bytes);
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < hash.Length; i++)
- {
- builder.Append(hash[i].ToString("x2"));
- }
- return builder.ToString();
- }
-
-
-
-
-
- public static Byte[] SHA256EncryptByte(string StrIn)
- {
- var sha256 = new SHA256Managed();
- var Asc = new ASCIIEncoding();
- var tmpByte = Asc.GetBytes(StrIn);
- var EncryptBytes = sha256.ComputeHash(tmpByte);
- sha256.Clear();
- return EncryptBytes;
- }
- #endregion
- #region UTC时间戳
-
-
-
-
-
- public static long GetUTCTime(bool type)
- {
- TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
- return type ? Convert.ToInt64(ts.TotalSeconds) : Convert.ToInt64(ts.TotalMilliseconds);
- }
-
-
-
-
-
- public static DateTime ConvertUTCToDateTime(long timeStamp)
- {
- DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
- DateTime dt = startTime.AddSeconds(timeStamp);
- return dt;
- }
-
-
-
-
-
- public static int ConvertDateTimeToUTC(DateTime time)
- {
- double intResult = 0;
- DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
- intResult = (time - startTime).TotalSeconds;
- return (int)intResult;
- }
- #endregion
- }
- }
|