From fdeaa05360aeb5c06c46a0555c4b68486b6e0ef6 Mon Sep 17 00:00:00 2001 From: Vologhat <47892605+Vologhat@users.noreply.github.com> Date: Fri, 29 Jul 2022 23:34:06 +0300 Subject: [PATCH] removed deepl and added yandex --- .../vtosters/lite/net/translate/DeepLApi.java | 85 ------------------- .../lite/net/translate/DeepLJson.java | 6 -- .../lite/translators/YandexTranslator.java | 48 +++++++++++ 3 files changed, 48 insertions(+), 91 deletions(-) delete mode 100644 app/src/main/java/ru/vtosters/lite/net/translate/DeepLApi.java delete mode 100644 app/src/main/java/ru/vtosters/lite/net/translate/DeepLJson.java create mode 100644 app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java diff --git a/app/src/main/java/ru/vtosters/lite/net/translate/DeepLApi.java b/app/src/main/java/ru/vtosters/lite/net/translate/DeepLApi.java deleted file mode 100644 index bd5c8c0e6..000000000 --- a/app/src/main/java/ru/vtosters/lite/net/translate/DeepLApi.java +++ /dev/null @@ -1,85 +0,0 @@ -package ru.vtosters.lite.net.translate; - -import android.util.Log; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class DeepLApi{ - private static final OkHttpClient client = new OkHttpClient(); - - private static String REQUEST_BODY_FORMAT = "{\n" + - " \"params\": {\n" + - " \"texts\": [{\n" + - " \"text\": \"%s\",\n" + - " \"requestAlternatives\": 3\n" + - " }],\n" + - " \"splitting\": \"newlines\",\n" + - " \"commonJobParams\": {\n" + - " \"regionalVariant\": null,\n" + - " \"wasSpoken\": false\n" + - " },\n" + - " \"lang\": {\n" + - " \"target_lang\": \"%s\",\n" + - " \"source_lang_user_selected\": \"\"\n" + - " },\n" + - " \"timestamp\": %s\n" + - " },\n" + - " \"id\": 1697915521,\n" + - " \"jsonrpc\": \"2.0\",\n" + - " \"method\": \"LMT_handle_texts\"\n" + - "}"; - - public static void getTranslation(String text, String to){ // Get translation from DeepL private API using Input text and Language code which you want to translate to - try { - var requestBody = String.format(REQUEST_BODY_FORMAT, - text, - to, - System.currentTimeMillis() / 1000); - - var request = new Request.a() - .b("https://www2.deepl.com/jsonrpc") - .a(RequestBody.a(MediaType.a("application/json; charset=utf-8"), requestBody.getBytes(StandardCharsets.UTF_8))) - .a(); - - client.a(request).a(new Callback() { - @Override - public void a(Call call, IOException e) { - Log.d("DeepLApi", e+""); - } - - @Override - public void a(Call call, Response response) throws IOException { - var payload = response.a().g(); - Log.d("DeepLApi", "Response: " + payload); - try { - var result = new JSONObject(payload).optJSONObject("result"); - parseResult(result); - } catch (JSONException e) { - e.printStackTrace(); - } - } - }); - - } catch (Exception e) { - Log.e("DeepLApi", "Error: " + e.getMessage()); - } - } - - private static void parseResult(JSONObject payload) throws JSONException { - var lang = payload.optString("lang"); // get language code from response - var texts = payload.optJSONArray("texts").getJSONObject(0); - var result = texts.optString("text"); // get translation result as text - } -} diff --git a/app/src/main/java/ru/vtosters/lite/net/translate/DeepLJson.java b/app/src/main/java/ru/vtosters/lite/net/translate/DeepLJson.java deleted file mode 100644 index 267cb73bc..000000000 --- a/app/src/main/java/ru/vtosters/lite/net/translate/DeepLJson.java +++ /dev/null @@ -1,6 +0,0 @@ -package ru.vtosters.lite.net.translate; -public class DeepLJson{ - public static void main(String text) { - - } -} diff --git a/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java b/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java new file mode 100644 index 000000000..b2d88afce --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java @@ -0,0 +1,48 @@ +package ru.vtosters.lite.translators; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Locale; +import java.util.UUID; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; + +public class YandexTranslator { + + private static OkHttpClient client = new OkHttpClient(); + + static String uuid = UUID.randomUUID().toString().replace("-", ""); + + public static String translate(String text) { + try { + var request = new Request.a() + .b("https://translate.yandex.net/api/v1/tr.json/translate?id=" + uuid + "-0-0&srv=android") + .a(RequestBody.a(MediaType.a("application/x-www-form-urlencoded"), + "lang=" + Locale.getDefault().getLanguage() + "&text=" + URLEncoder.encode(text, "UTF-8"))) + .a(); + var payload = client.a(request).execute().a().g(); + var json = new JSONObject(payload); + if (!json.has("text") && json.has("message")) { + throw new IOException(json.getString("message")); + } + JSONArray array = json.getJSONArray("text"); + StringBuilder sb = new StringBuilder(); + int length = array.length(); + for (int i = 0; i < length; i++) { + sb.append(array.getString(i)); + } + return sb.toString(); + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + return ""; + } +}