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;
|
||||
|
||||
import io.gitlab.jfronny.commons.http.client.HttpClient;
|
||||
import io.gitlab.jfronny.libjf.translate.api.TranslateException;
|
||||
import io.gitlab.jfronny.libjf.translate.impl.AbstractTranslateService;
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
@ -31,7 +34,7 @@ public class GoogleTranslateService extends AbstractTranslateService<GoogleTrans
|
|||
|
||||
private GoogleTranslateService() throws URISyntaxException, IOException {
|
||||
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()) {
|
||||
String id = matcher.group(1);
|
||||
String name = matcher.group(2);
|
||||
|
@ -97,11 +100,43 @@ public class GoogleTranslateService extends AbstractTranslateService<GoogleTrans
|
|||
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)
|
||||
return null;
|
||||
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));
|
||||
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