diff --git a/source/net/filebot/cli/ArgumentProcessor.java b/source/net/filebot/cli/ArgumentProcessor.java index f206fba5..a02b2d29 100644 --- a/source/net/filebot/cli/ArgumentProcessor.java +++ b/source/net/filebot/cli/ArgumentProcessor.java @@ -38,7 +38,8 @@ public class ArgumentProcessor { try { // print episode info if (args.list) { - for (String eps : cli.fetchEpisodeList(args.query, args.format, args.db, args.order, args.lang)) { + CLILogger.setLevel(Level.WARNING); // make sure to disable any logging on standard output + for (String eps : cli.fetchEpisodeList(args.query, args.format, args.db, args.order, args.filter, args.lang)) { System.out.println(eps); } return 0; diff --git a/source/net/filebot/cli/CmdlineInterface.java b/source/net/filebot/cli/CmdlineInterface.java index 5d05573a..003ab2af 100644 --- a/source/net/filebot/cli/CmdlineInterface.java +++ b/source/net/filebot/cli/CmdlineInterface.java @@ -22,7 +22,7 @@ public interface CmdlineInterface { File compute(Collection files, String output, String encoding) throws Exception; - List fetchEpisodeList(String query, String format, String db, String sortOrder, String lang) throws Exception; + List fetchEpisodeList(String query, String format, String db, String sortOrder, String filter, String lang) throws Exception; String getMediaInfo(File file, String format) throws Exception; diff --git a/source/net/filebot/cli/CmdlineOperations.java b/source/net/filebot/cli/CmdlineOperations.java index 441650bb..64058aaa 100644 --- a/source/net/filebot/cli/CmdlineOperations.java +++ b/source/net/filebot/cli/CmdlineOperations.java @@ -1033,25 +1033,30 @@ public class CmdlineOperations implements CmdlineInterface { } @Override - public List fetchEpisodeList(String query, String expression, String db, String sortOrderName, String languageName) throws Exception { + public List fetchEpisodeList(String query, String expression, String db, String sortOrderName, String filterExpression, String languageName) throws Exception { if (query == null || query.isEmpty()) throw new IllegalArgumentException("query is not defined"); // find series on the web and fetch episode list ExpressionFormat format = (expression != null) ? new ExpressionFormat(expression) : null; + ExpressionFilter filter = (filterExpression != null) ? new ExpressionFilter(filterExpression) : null; EpisodeListProvider service = (db == null) ? TheTVDB : getEpisodeListProvider(db); SortOrder sortOrder = SortOrder.forName(sortOrderName); Locale locale = getLanguage(languageName).getLocale(); + // fetch episode data SearchResult hit = selectSearchResult(query, service.search(query, locale), false).get(0); - List episodes = new ArrayList(); + List episodes = service.getEpisodeList(hit, sortOrder, locale); - for (Episode it : service.getEpisodeList(hit, sortOrder, locale)) { + // apply filter + episodes = applyExpressionFilter(episodes, filter); + + List names = new ArrayList(); + for (Episode it : episodes) { String name = (format != null) ? format.format(new MediaBindingBean(it, null, null)) : EpisodeFormat.SeasonEpisode.format(it); - episodes.add(name); + names.add(name); } - - return episodes; + return names; } @Override diff --git a/source/net/filebot/cli/ScriptShellBaseClass.java b/source/net/filebot/cli/ScriptShellBaseClass.java index 614857cc..a7a656fe 100644 --- a/source/net/filebot/cli/ScriptShellBaseClass.java +++ b/source/net/filebot/cli/ScriptShellBaseClass.java @@ -389,7 +389,7 @@ public abstract class ScriptShellBaseClass extends Script { synchronized (cli) { try { - return cli.fetchEpisodeList(asString(option.get(Option.query)), asString(option.get(Option.format)), asString(option.get(Option.db)), asString(option.get(Option.order)), asString(option.get(Option.lang))); + return cli.fetchEpisodeList(asString(option.get(Option.query)), asString(option.get(Option.format)), asString(option.get(Option.db)), asString(option.get(Option.order)), asString(option.get(Option.filter)), asString(option.get(Option.lang))); } catch (Exception e) { printException(e); return null;