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; + } +}