From bad2a39614ed06589f1fced07436b0f6062bc4cc Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Sun, 12 Jun 2022 14:33:00 +0200 Subject: [PATCH] Ignore commentary tracks --- .../config/Config.java | 1 + .../impl/MkvFileProcessor.java | 19 +++++++++++++------ .../util/SetUtils.java | 13 +++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtils.java 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; + } +}