From 88ed6513c2df68c9b26110eb3a706de1560bafe6 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sat, 11 Nov 2017 17:00:29 +0100 Subject: [PATCH] Make sure that the filename is not uses as exclude keyword when the object happens to be a File @see https://www.filebot.net/forums/viewtopic.php?f=6&t=5469 --- source/net/filebot/format/MediaBindingBean.java | 2 +- source/net/filebot/media/ReleaseInfo.java | 12 +----------- source/net/filebot/util/StringUtilities.java | 11 +++++++++++ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/source/net/filebot/format/MediaBindingBean.java b/source/net/filebot/format/MediaBindingBean.java index 77af8c93..c938d4b9 100644 --- a/source/net/filebot/format/MediaBindingBean.java +++ b/source/net/filebot/format/MediaBindingBean.java @@ -1262,9 +1262,9 @@ public class MediaBindingBean { private Pattern getKeywordExcludePattern() { // collect key information List keys = new ArrayList(); - keys.add(getName()); if (infoObject instanceof Episode || infoObject instanceof Movie) { + keys.add(getName()); keys.addAll(getAliasNames()); if (infoObject instanceof Episode) { diff --git a/source/net/filebot/media/ReleaseInfo.java b/source/net/filebot/media/ReleaseInfo.java index ed1d3823..b07b0a08 100644 --- a/source/net/filebot/media/ReleaseInfo.java +++ b/source/net/filebot/media/ReleaseInfo.java @@ -141,18 +141,8 @@ public class ReleaseInfo { } protected String matchLast(Pattern pattern, String[] paragon, CharSequence... sequence) { - String lastMatch = null; - // match last occurrence - for (CharSequence name : sequence) { - if (name == null) - continue; - - Matcher matcher = pattern.matcher(name); - while (matcher.find()) { - lastMatch = matcher.group(); - } - } + String lastMatch = stream(sequence).filter(Objects::nonNull).map(s -> matchLastOccurrence(s, pattern)).filter(Objects::nonNull).findFirst().orElse(null); // prefer standard value over matched value if (lastMatch != null && paragon != null) { diff --git a/source/net/filebot/util/StringUtilities.java b/source/net/filebot/util/StringUtilities.java index 9f4748c5..f89886ad 100644 --- a/source/net/filebot/util/StringUtilities.java +++ b/source/net/filebot/util/StringUtilities.java @@ -55,6 +55,17 @@ public final class StringUtilities { return null; } + public static String matchLastOccurrence(CharSequence s, Pattern pattern) { + String lastMatch = null; + + Matcher matcher = pattern.matcher(s); + while (matcher.find()) { + lastMatch = matcher.group(); + } + + return lastMatch; + } + public static Stream tokenize(CharSequence s) { return tokenize(s, SPACE); }