Scrape google translate, allows this to work once again
This commit is contained in:
parent
68be8370e8
commit
b6c60c500e
|
@ -6,11 +6,23 @@ variables:
|
|||
before_script:
|
||||
- export GRADLE_USER_HOME=`pwd`/.gradle
|
||||
|
||||
deploy:
|
||||
build_test:
|
||||
stage: deploy
|
||||
script: gradle --build-cache assemble
|
||||
script:
|
||||
- gradle --build-cache assemble
|
||||
- cp build/libs/* ./
|
||||
- rm *-dev.jar
|
||||
- mv *.jar latest.jar
|
||||
artifacts:
|
||||
paths:
|
||||
- build/libs
|
||||
- latest.jar
|
||||
only:
|
||||
- master
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
when: manual
|
||||
script:
|
||||
- gradle --build-cache publishModrinth
|
||||
- gradle --build-cache curseforge
|
68
build.gradle
68
build.gradle
|
@ -1,6 +1,8 @@
|
|||
plugins {
|
||||
id 'fabric-loom' version '0.5.42'
|
||||
id 'maven-publish'
|
||||
id "com.modrinth.minotaur" version "1.1.0"
|
||||
id "com.matthewprenger.cursegradle" version "1.4.0"
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
@ -16,6 +18,11 @@ archivesBaseName = project.archives_base_name
|
|||
version = "${project.mod_version}+${project.minecraft_version}"
|
||||
group = project.maven_group
|
||||
|
||||
repositories {
|
||||
maven { url = "https://maven.terraformersmc.com/"; name = "ModMenu" }
|
||||
maven { url = "https://maven.shedaniel.me/"; name = "Cloth" }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//to change the versions see the gradle.properties file
|
||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||
|
@ -30,16 +37,11 @@ dependencies {
|
|||
modCompile "com.github.vbauer:yandex-translate-api:1.4.2"
|
||||
include "com.github.vbauer:yandex-translate-api:1.4.2"
|
||||
|
||||
modCompile "me.sargunvohra.mcmods:autoconfig1u:3.3.1"
|
||||
include "me.sargunvohra.mcmods:autoconfig1u:3.3.1"
|
||||
modApi ("me.shedaniel.cloth:config-2:5.0.0") {
|
||||
transitive = false
|
||||
}
|
||||
include ("me.shedaniel.cloth:config-2:5.0.0") {
|
||||
transitive = false
|
||||
}
|
||||
modCompile "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable"
|
||||
include "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable"
|
||||
include modApi ("me.shedaniel.cloth:cloth-config-fabric:4.11.14")
|
||||
|
||||
modCompile("io.github.prospector:modmenu:1.15.0+build.1")
|
||||
modCompile("com.terraformersmc:modmenu:1.16.7")
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
@ -74,23 +76,37 @@ jar {
|
|||
from "LICENSE"
|
||||
}
|
||||
|
||||
// configure the maven publication
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
// add all the jars that should be included when publishing to maven
|
||||
artifact(remapJar) {
|
||||
builtBy remapJar
|
||||
}
|
||||
artifact(sourcesJar) {
|
||||
builtBy remapSourcesJar
|
||||
}
|
||||
}
|
||||
}
|
||||
import com.modrinth.minotaur.TaskModrinthUpload
|
||||
|
||||
// select the repositories you want to publish to
|
||||
repositories {
|
||||
// uncomment to publish to the local maven
|
||||
// mavenLocal()
|
||||
task publishModrinth (type: TaskModrinthUpload){
|
||||
token = System.getenv("MODRINTH_API_TOKEN")
|
||||
projectId = 'YnU8kpyc'
|
||||
versionNumber = "${project.mod_version}"
|
||||
uploadFile = remapJar
|
||||
addGameVersion("${project.minecraft_version}")
|
||||
addLoader('fabric')
|
||||
versionName = "[${project.minecraft_version}] ${project.mod_version}"
|
||||
afterEvaluate {
|
||||
tasks.publishModrinth.dependsOn(remapJar)
|
||||
tasks.publishModrinth.dependsOn(sourcesJar)
|
||||
}
|
||||
}
|
||||
|
||||
curseforge {
|
||||
apiKey = System.getenv("CURSEFORGE_API_TOKEN") == null ? "###" : System.getenv("CURSEFORGE_API_TOKEN")
|
||||
project {
|
||||
id = "394823"
|
||||
releaseType = 'release'
|
||||
addGameVersion "Fabric"
|
||||
addGameVersion "${project.minecraft_version}"
|
||||
changelog = ""
|
||||
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"))
|
||||
mainArtifact.displayName = "[${project.minecraft_version}] ${project.mod_version}"
|
||||
afterEvaluate {
|
||||
uploadTask.dependsOn(remapJar)
|
||||
}
|
||||
}
|
||||
options {
|
||||
forgeGradleIntegration = false
|
||||
}
|
||||
}
|
|
@ -2,13 +2,13 @@
|
|||
org.gradle.jvmargs=-Xmx1G
|
||||
# Fabric Properties
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=1.16.2
|
||||
yarn_mappings=1.16.2+build.21
|
||||
loader_version=0.9.2+build.206
|
||||
minecraft_version=1.16.5
|
||||
yarn_mappings=1.16.5+build.4
|
||||
loader_version=0.11.1
|
||||
# Mod Properties
|
||||
mod_version=1.0.4
|
||||
mod_version=1.1.0
|
||||
maven_group=io.gitlab.jfronny
|
||||
archives_base_name=translater
|
||||
# Dependencies
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.19.0+build.398-1.16
|
||||
fabric_version=0.30.3+1.16
|
||||
|
|
|
@ -11,8 +11,6 @@ public class Cfg implements ConfigData {
|
|||
public int rounds = 5;
|
||||
@Comment("Whether to fully break the texts content by translating from the wrong language (enable for complete breaking)")
|
||||
public boolean breakFully = false;
|
||||
@Comment("The API key for Yandex Translate (this is REQUIRED for updating the cache, since Yandex doesn't give them out for free anymore you might want to google \"trnsl.1.1.\" to find keys on the web)")
|
||||
public String key = "trnsl.1.1.20130811T164454Z.2facd8a3323b8111.e9f682063308aff12357de3c8a3260d6d6b71be7";
|
||||
@Comment("The language to translate to - Leave empty for auto-detection (might break text even more)")
|
||||
public String targetLanguage = "en";
|
||||
@Comment("Significantly slows down the loading time but gives a visual of the progress. Values: Full, Console, None")
|
||||
|
|
|
@ -3,8 +3,7 @@ package io.gitlab.jfronny.translater;
|
|||
import io.gitlab.jfronny.translater.transformer.CachingTransformer;
|
||||
import io.gitlab.jfronny.translater.transformer.TransformingMap;
|
||||
import io.gitlab.jfronny.translater.transformer.TranslatingTransformer;
|
||||
import io.gitlab.jfronny.translater.translation.EmptyBackend;
|
||||
import io.gitlab.jfronny.translater.translation.YandexTranslationBackend;
|
||||
import io.gitlab.jfronny.translater.translation.WurstGoogleBackend;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
|
@ -53,7 +52,8 @@ public class Translater implements ClientModInitializer {
|
|||
|
||||
public static TransformingMap getMap(Map<String, String> base) {
|
||||
if (map == null) {
|
||||
map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new EmptyBackend())));
|
||||
map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new WurstGoogleBackend())));
|
||||
//map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new EmptyBackend())));
|
||||
//map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new YandexTranslationBackend())));
|
||||
map.init();
|
||||
}
|
||||
|
|
|
@ -20,7 +20,12 @@ public class CachingTransformer implements ITransformer {
|
|||
return null;
|
||||
//Transform and cache if not present
|
||||
if (!cache.containsKey(str)) {
|
||||
cache.put(str, transformer.transform(str));
|
||||
String transformed = transformer.transform(str);
|
||||
if (transformed == null) {
|
||||
Translater.Warn("Very concerning, got null for non-null key " + str);
|
||||
return null;
|
||||
}
|
||||
cache.put(str, transformed);
|
||||
Save();
|
||||
}
|
||||
//Return cached result
|
||||
|
@ -37,6 +42,7 @@ public class CachingTransformer implements ITransformer {
|
|||
//Load cache
|
||||
if (cacheFile.exists()) {
|
||||
try {
|
||||
Translater.Log("Loading cache");
|
||||
FileInputStream inS = new FileInputStream(cacheFile);
|
||||
cache.load(inS);
|
||||
inS.close();
|
||||
|
@ -44,6 +50,7 @@ public class CachingTransformer implements ITransformer {
|
|||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
Translater.Log("Initializing default cache");
|
||||
//Save default cache if parameters are default
|
||||
if (!Translater.cfg.breakFully && Translater.cfg.rounds == 5) {
|
||||
try {
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
package io.gitlab.jfronny.translater.translation;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class GoogleService {
|
||||
public enum Language {
|
||||
|
||||
AUTO_DETECT("AUTO_DETECT", "auto"), ARABIC("ARABIC", "ar"), CHINESE_SIMPLIFIED("CHINESE_SIMPLIFIED", "zh-CN"),
|
||||
CHINESE_TRADITIONAL("CHINESE_TRADITIONAL", "zh-TW"), ENGLISH("ENGLISH", "en"), FILIPINO("FILIPINO", "tl"),
|
||||
FRENCH("FRENCH", "fr"), GERMAN("GERMAN", "de"), GREEK("GREEK", "el"), INDONESIAN("INDONESIAN", "id"),
|
||||
IRISH("IRISH", "ga"), ITALIAN("ITALIAN", "it"), JAPANESE("JAPANESE", "ja"), JAVANESE("JAVANESE", "jw"),
|
||||
KOREAN("KOREAN", "ko"), LATIN("LATIN", "la"), POLISH("POLISH", "pl"), PORTUGUESE("PORTUGUESE", "pt"),
|
||||
RUSSIAN("RUSSIAN", "ru"), SPANISH("SPANISH", "es"), SWEDISH("SWEDISH", "sv"), THAI("THAI", "th"),
|
||||
VIETNAMESE("VIETNAMESE", "vi");
|
||||
|
||||
public final String name;
|
||||
public final String value;
|
||||
|
||||
private Language(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
public static String translate(String textToTranslate, String translateFrom, String translateTo) {
|
||||
String pageSource = "";
|
||||
try {
|
||||
pageSource = getPageSource(textToTranslate, translateFrom, translateTo);
|
||||
final String regex = "class=\"result-container\">([^<]*)<\\/div>";
|
||||
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
|
||||
final Matcher matcher = pattern.matcher(pageSource);
|
||||
matcher.find();
|
||||
String match = matcher.group(1);
|
||||
if (match != null && !match.isEmpty()) {
|
||||
return match;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
FileUtils.writeStringToFile(new File("cum"), pageSource, StandardCharsets.UTF_8);
|
||||
} catch (IOException ioException) {
|
||||
ioException.printStackTrace();
|
||||
}
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPageSource(String textToTranslate, String translateFrom, String translateTo)
|
||||
throws Exception {
|
||||
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(), "UTF-8"));
|
||||
URL url = new URL(pageUrl);
|
||||
HttpURLConnection connection = null;
|
||||
BufferedReader bufferedReader = null;
|
||||
StringBuilder pageSource = new StringBuilder();
|
||||
try {
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setConnectTimeout(5000);
|
||||
connection.setRequestProperty("User-Agent",
|
||||
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||
String line;
|
||||
while ((line = bufferedReader.readLine()) != null) {
|
||||
pageSource.append(line + System.lineSeparator());
|
||||
}
|
||||
String clean = pageSource.toString();
|
||||
return clean;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (connection != null)
|
||||
connection.disconnect();
|
||||
if (bufferedReader != null)
|
||||
bufferedReader.close();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package io.gitlab.jfronny.translater.translation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class WurstGoogleBackend implements ITranslationBackend<GoogleService.Language> {
|
||||
@java.lang.Override
|
||||
public String translate(String text, GoogleService.Language target, GoogleService.Language current) {
|
||||
return GoogleService.translate(text, current.value, target.value);
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public GoogleService.Language detect(String text) {
|
||||
return GoogleService.Language.AUTO_DETECT;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public GoogleService.Language parseLang(String lang) {
|
||||
for (GoogleService.Language value : GoogleService.Language.values()) {
|
||||
if (value.value.equals(lang))
|
||||
return value;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public Collection<GoogleService.Language> getLanguages() {
|
||||
List<GoogleService.Language> langs = new ArrayList<>(Arrays.asList(GoogleService.Language.values()));
|
||||
langs.remove(GoogleService.Language.AUTO_DETECT);
|
||||
return langs;
|
||||
}
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
package io.gitlab.jfronny.translater.translation;
|
||||
|
||||
import com.github.vbauer.yta.model.Direction;
|
||||
import com.github.vbauer.yta.model.Language;
|
||||
import com.github.vbauer.yta.service.YTranslateApi;
|
||||
import com.github.vbauer.yta.service.YTranslateApiImpl;
|
||||
import io.gitlab.jfronny.translater.Translater;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class YandexTranslationBackend implements ITranslationBackend<Language> {
|
||||
private final YTranslateApi api;
|
||||
@Override
|
||||
public String translate(String text, Language target, Language current) {
|
||||
return api.translationApi().translate(text, Direction.of(current, target)).text();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Language detect(String text) {
|
||||
Language result = api.detectionApi().detect(text).orElse(Language.EN);
|
||||
if (Translater.stringInvalid(result.code())) {
|
||||
Translater.Warn("Could not detect language for: " + text);
|
||||
Translater.Warn("Defaulting to EN");
|
||||
return Language.EN;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Language parseLang(String lang) {
|
||||
return Language.of(lang);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Language> getLanguages() {
|
||||
try {
|
||||
return api.languageApi().all(Language.EN).languages();
|
||||
} catch (Exception e) {
|
||||
Translater.Warn("Failed to get languages, Is your API key valid?");
|
||||
e.printStackTrace();
|
||||
return Language.ALL.values();
|
||||
}
|
||||
}
|
||||
|
||||
public YandexTranslationBackend() {
|
||||
api = new YTranslateApiImpl(Translater.cfg.key);
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@
|
|||
"depends": {
|
||||
"fabricloader": ">=0.9.0+build.204",
|
||||
"fabric": "*",
|
||||
"minecraft": "1.16.2"
|
||||
"minecraft": "*"
|
||||
},
|
||||
"custom": {
|
||||
"modupdater": {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue