fix(translate): strange workaround
This commit is contained in:
parent
b4f1ca22f5
commit
b47bc6fd0a
|
@ -1,11 +1,14 @@
|
||||||
package io.gitlab.jfronny.libjf.translate.impl.google;
|
package io.gitlab.jfronny.libjf.translate.impl.google;
|
||||||
|
|
||||||
import io.gitlab.jfronny.commons.http.client.HttpClient;
|
|
||||||
import io.gitlab.jfronny.libjf.translate.api.TranslateException;
|
import io.gitlab.jfronny.libjf.translate.api.TranslateException;
|
||||||
import io.gitlab.jfronny.libjf.translate.impl.AbstractTranslateService;
|
import io.gitlab.jfronny.libjf.translate.impl.AbstractTranslateService;
|
||||||
import org.apache.commons.lang3.StringEscapeUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
|
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
@ -31,7 +34,7 @@ public class GoogleTranslateService extends AbstractTranslateService<GoogleTrans
|
||||||
|
|
||||||
private GoogleTranslateService() throws URISyntaxException, IOException {
|
private GoogleTranslateService() throws URISyntaxException, IOException {
|
||||||
Map<String, GoogleTranslateLanguage> knownLanguages = new HashMap<>();
|
Map<String, GoogleTranslateLanguage> knownLanguages = new HashMap<>();
|
||||||
Matcher matcher = LANGUAGE_KEY.matcher(HttpClient.get("https://translate.google.com/m?mui=tl").sendString());
|
Matcher matcher = LANGUAGE_KEY.matcher(get("https://translate.google.com/m?mui=tl"));
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
String id = matcher.group(1);
|
String id = matcher.group(1);
|
||||||
String name = matcher.group(2);
|
String name = matcher.group(2);
|
||||||
|
@ -97,11 +100,43 @@ public class GoogleTranslateService extends AbstractTranslateService<GoogleTrans
|
||||||
return NAME;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getPageSource(String textToTranslate, String translateFrom, String translateTo) throws URISyntaxException, IOException {
|
private static String getPageSource(String textToTranslate, String translateFrom, String translateTo) {
|
||||||
if (textToTranslate == null)
|
if (textToTranslate == null)
|
||||||
return null;
|
return null;
|
||||||
String pageUrl = String.format("https://translate.google.com/m?hl=en&sl=%s&tl=%s&ie=UTF-8&prev=_m&q=%s",
|
String pageUrl = String.format("https://translate.google.com/m?hl=en&sl=%s&tl=%s&ie=UTF-8&prev=_m&q=%s",
|
||||||
translateFrom, translateTo, URLEncoder.encode(textToTranslate.trim(), StandardCharsets.UTF_8));
|
translateFrom, translateTo, URLEncoder.encode(textToTranslate.trim(), StandardCharsets.UTF_8));
|
||||||
return HttpClient.get(pageUrl).sendString();
|
return get(pageUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String get(String url) {
|
||||||
|
// Technically, we should be using HttpClient, but Google Translate doesn't like it for some reason
|
||||||
|
// based on https://github.com/jhy/jsoup/blob/master/src/main/java/org/jsoup/helper/HttpConnection.java
|
||||||
|
try {
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection) URI.create(url).toURL().openConnection();
|
||||||
|
connection.setRequestMethod("GET");
|
||||||
|
connection.setInstanceFollowRedirects(false);
|
||||||
|
connection.setConnectTimeout(5000);
|
||||||
|
connection.setReadTimeout(2500);
|
||||||
|
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36");
|
||||||
|
connection.connect();
|
||||||
|
if (connection.getResponseCode() / 100 != 2) {
|
||||||
|
throw new IOException("Could not get page: " + connection.getResponseCode());
|
||||||
|
}
|
||||||
|
connection.getRequestMethod();
|
||||||
|
connection.getURL();
|
||||||
|
connection.getResponseCode();
|
||||||
|
connection.getResponseMessage();
|
||||||
|
connection.getContentType();
|
||||||
|
try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
String line;
|
||||||
|
while ((line = br.readLine()) != null) {
|
||||||
|
sb.append(line).append('\n');
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user