From 3ac30e06837ffc98ff8ece265e62ba92c60ae106 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Wed, 12 Feb 2020 22:34:51 +0100 Subject: [PATCH] [IMPL] config file implemented --- pom.xml | 11 ++++ src/main/java/query/QueryBuilder.java | 75 ++++++++++++++++++++------- src/main/resources/config.yaml | 7 +++ 3 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 src/main/resources/config.yaml diff --git a/pom.xml b/pom.xml index 09e2baa..2250ae8 100644 --- a/pom.xml +++ b/pom.xml @@ -93,6 +93,12 @@ + + + pcgf-repo + https://repo.pcgamingfreaks.at/repository/maven-everything/ + + @@ -170,6 +176,11 @@ test + + at.pcgamingfreaks + YAML-Parser + 2.0-SNAPSHOT + \ No newline at end of file diff --git a/src/main/java/query/QueryBuilder.java b/src/main/java/query/QueryBuilder.java index 33c66c1..6e340f6 100644 --- a/src/main/java/query/QueryBuilder.java +++ b/src/main/java/query/QueryBuilder.java @@ -1,11 +1,14 @@ package query; +import at.pcgamingfreaks.yaml.YAML; +import at.pcgamingfreaks.yaml.YamlInvalidContentException; import com.fasterxml.jackson.databind.ObjectMapper; import config.MKVToolProperties; import lombok.extern.log4j.Log4j2; import model.FileAttribute; import javax.swing.*; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; @@ -76,32 +79,66 @@ public class QueryBuilder { } private void updateAttributes(String path, List fileAttributes) { - if(fileAttributes.size() > 2){ - StringBuffer stringBuffer = new StringBuffer("\""); - stringBuffer.append(MKVToolProperties.getInstance().getMkvpropeditPath()); - stringBuffer.append("\" \""); - stringBuffer.append(path); - stringBuffer.append("\" "); - int c = 0; - int d = 0; + YAML yaml; + List subtitles = null; + List audios = null; - for(FileAttribute attributes : fileAttributes){ - if(attributes.isDefaultTrack() && "audio".equals(attributes.getType())){ - stringBuffer.append("--edit track:" + attributes.getId() + " --set flag-default=0 "); + try{ + yaml = new YAML(new File("src/main/resources/config.yaml")); + subtitles = yaml.getStringList("subtitle", null); + audios = yaml.getStringList("audio", null); + }catch(YamlInvalidContentException | IOException e){ + log.error(e.getMessage()); + } + + if(fileAttributes.size() > 2 && subtitles != null && audios != null){ + + + int oldAudioDefault = - 1; + int oldSubtitleDefault = - 1; + int audioDefault = - 1; + int subtitleDefault = - 1; + int subtitleIndex = - 1; + int audioIndex = - 1; + + for(FileAttribute attribute : fileAttributes){ + if(subtitles.contains(attribute.getLanguage()) && "subtitles".equals(attribute.getType())){ + for(int i = 0; i < subtitles.size(); i++){ + if(subtitles.get(i).equals(attribute.getLanguage())){ + if(subtitleIndex == - 1 || i < subtitleIndex){ + subtitleIndex = i; + subtitleDefault = attribute.getId(); + } + } + } } - if(attributes.isDefaultTrack() && "subtitles".equals(attributes.getType())){ - stringBuffer.append("--edit track:" + attributes.getId() + " --set flag-default=0 "); + if(audios.contains(attribute.getLanguage()) && "audio".equals(attribute.getType())){ + for(int i = 0; i < audios.size(); i++){ + if(audios.get(i).equals(attribute.getLanguage())){ + if(audioIndex == - 1 || i < audioIndex){ + audioIndex = i; + audioDefault = attribute.getId(); + } + } + } } - if("jpn".equals(attributes.getLanguage()) && "audio".equals(attributes.getType()) && c == 0){ - c++; - stringBuffer.append("--edit track:" + attributes.getId() + " --set flag-default=1 "); + + if(attribute.isDefaultTrack() && "audio".equals(attribute.getType())){ + oldAudioDefault = attribute.getId(); } - if("eng".equals(attributes.getLanguage()) && "subtitles".equals(attributes.getType()) && d == 0){ - d++; - stringBuffer.append("--edit track:" + attributes.getId() + " --set flag-default=1 "); + if(attribute.isDefaultTrack() && "subtitles".equals(attribute.getType())){ + oldSubtitleDefault = attribute.getId(); } } + StringBuilder stringBuffer = new StringBuilder("\""); + stringBuffer.append(MKVToolProperties.getInstance().getMkvpropeditPath()); + stringBuffer.append("\" \"").append(path).append("\" "); + stringBuffer.append("--edit track:").append(oldSubtitleDefault).append(" --set flag-default=0 "); + stringBuffer.append("--edit track:").append(oldAudioDefault).append(" --set flag-default=0 "); + stringBuffer.append("--edit track:").append(subtitleDefault).append(" --set flag-default=1 "); + stringBuffer.append("--edit track:").append(audioDefault).append(" --set flag-default=1 "); + try{ Runtime.getRuntime().exec(stringBuffer.toString()); }catch(IOException e){ diff --git a/src/main/resources/config.yaml b/src/main/resources/config.yaml new file mode 100644 index 0000000..341f395 --- /dev/null +++ b/src/main/resources/config.yaml @@ -0,0 +1,7 @@ +audio: + - jpn + - ger + - eng +subtitle: + - ger + - eng \ No newline at end of file