removed deepl and added yandex
This commit is contained in:
@@ -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 "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user