diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..e3e1c03
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: [RatzzFatzz]
+custom: "https://paypal.me/ratzmichael"
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..5f1bbb4
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,35 @@
+# This workflow will run every time a new release is created.
+
+name: Build and release
+on:
+ release:
+ types: [created]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set up JDK 11
+ uses: action/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: 11
+
+ - name: Setup workspace
+ run: mkdir artifacts
+
+ - name: Build with Maven
+ run: |
+ mvn clean package --file pom.xml
+ cp MKVAudioSubtitleChanger/target/M*.jar artifacts/
+
+ - name: Upload artifacts
+ uses: skx/github-action-publish-binaries@master
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: 'artifacts/M*'
+
diff --git a/pom.xml b/pom.xml
index 858dec5..5ffcf59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
MKVAudioSubtileChanger
MKVAudioSubtitleChanger
- 2.0
+ 2.1
clean package
diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java
index 9f2ae3e..5e66832 100644
--- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java
+++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java
@@ -49,6 +49,7 @@ public class Config {
private boolean isWindows;
private final Set forcedKeywords = new HashSet<>(Arrays.asList("forced", "signs"));
+ private final Set commentaryKeywords = new HashSet<>(Arrays.asList("commentary", "director"));
private final Set excludedDirectories = new HashSet<>();
private List attributeConfig;
diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessor.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessor.java
index 3b7c10d..65bc848 100644
--- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessor.java
+++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessor.java
@@ -2,6 +2,7 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.*;
+import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.SetUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
@@ -73,17 +74,23 @@ public class MkvFileProcessor implements FileProcessor {
public FileInfoDto filterAttributes(List attributes) {
FileInfoDto info = new FileInfoDto();
List nonForcedTracks = attributes.stream()
- .filter(elem -> !StringUtils.containsAnyIgnoreCase(elem.getTrackName(), forcedKeywords))
+ .filter(elem -> !StringUtils.containsAnyIgnoreCase(elem.getTrackName(),
+ Config.getInstance().getForcedKeywords().toArray(new CharSequence[0])))
+ .filter(elem -> !elem.isForcedTrack())
+ .collect(Collectors.toList());
+ List nonCommentaryTracks = attributes.stream()
+ .filter(elem -> !StringUtils.containsAnyIgnoreCase(elem.getTrackName(),
+ Config.getInstance().getCommentaryKeywords().toArray(new CharSequence[0])))
.collect(Collectors.toList());
- detectDefaultTracks(attributes, info, nonForcedTracks);
- detectDesiredTracks(info, nonForcedTracks);
+ detectDefaultTracks(info, attributes, nonForcedTracks);
+ detectDesiredTracks(info, nonForcedTracks, nonCommentaryTracks);
log.debug(info);
return info;
}
- private void detectDefaultTracks(List attributes, FileInfoDto info, List nonForcedTracks) {
+ private void detectDefaultTracks(FileInfoDto info, List attributes, List nonForcedTracks) {
Set detectedForcedSubtitleLanes = new HashSet<>();
for (FileAttribute attribute : attributes) {
if (attribute.isDefaultTrack() && AUDIO.equals(attribute.getType()))
@@ -101,11 +108,11 @@ public class MkvFileProcessor implements FileProcessor {
);
}
- private void detectDesiredTracks(FileInfoDto info, List nonForcedTracks) {
+ private void detectDesiredTracks(FileInfoDto info, List nonForcedTracks, List nonCommentaryTracks) {
for (AttributeConfig config : Config.getInstance().getAttributeConfig()) {
FileAttribute desiredAudio = null;
FileAttribute desiredSubtitle = null;
- for (FileAttribute attribute : nonForcedTracks) {
+ for (FileAttribute attribute : SetUtils.retainOf(nonForcedTracks, nonCommentaryTracks)) {
if (attribute.getLanguage().equals(config.getAudioLanguage())
&& AUDIO.equals(attribute.getType())) desiredAudio = attribute;
if (attribute.getLanguage().equals(config.getSubtitleLanguage())
diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtils.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtils.java
new file mode 100644
index 0000000..f2db625
--- /dev/null
+++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtils.java
@@ -0,0 +1,13 @@
+package at.pcgamingfreaks.mkvaudiosubtitlechanger.util;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class SetUtils {
+ public static Set retainOf(List list1, List list2) {
+ Set set = new HashSet<>(list1);
+ set.retainAll(list2);
+ return set;
+ }
+}