diff --git a/source/net/filebot/format/MediaBindingBean.java b/source/net/filebot/format/MediaBindingBean.java index e6b5d47e..2cb7a82a 100644 --- a/source/net/filebot/format/MediaBindingBean.java +++ b/source/net/filebot/format/MediaBindingBean.java @@ -134,9 +134,12 @@ public class MediaBindingBean { return getMusic().getTrackTitle() != null ? getMusic().getTrackTitle() : getMusic().getTitle(); } + // enforce title length limit by default + int limit = 150; + // single episode format if (getEpisodes().size() == 1) { - return getEpisode().getTitle(); + return truncateText(getEpisode().getTitle(), limit); } // multi-episode format @@ -144,7 +147,7 @@ public class MediaBindingBean { for (Episode it : getEpisodes()) { title.add(removeTrailingBrackets(it.getTitle())); } - return join(title, " & "); + return truncateText(join(title, " & "), limit); } @Define("d") @@ -911,4 +914,22 @@ public class MediaBindingBean { } } + private String truncateText(String title, int limit) { + if (title.length() < limit) { + return title; + } + + String[] words = title.split("\\s+"); + StringBuilder s = new StringBuilder(); + + for (int i = 0; i < words.length && s.length() + words[i].length() < limit; i++) { + if (i > 0) { + s.append(' '); + } + s.append(words[i]); + } + + return s.toString().trim(); + } + }