removed deepl and added yandex

This commit is contained in:
Vologhat
2022-07-31 13:32:49 +03:00
committed by gdlbo
parent d0197142cd
commit fdeaa05360
3 changed files with 48 additions and 91 deletions
@@ -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
}
}
@@ -1,6 +0,0 @@
package ru.vtosters.lite.net.translate;
public class DeepLJson{
public static void main(String text) {
}
}
@@ -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 "";
}
}