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