Refactor ScriptShellBaseClass

This commit is contained in:
Reinhard Pointner 2016-10-21 02:22:49 +08:00
parent 565555e0b3
commit d82f454d94
1 changed files with 65 additions and 75 deletions

View File

@ -66,8 +66,8 @@ public abstract class ScriptShellBaseClass extends Script {
try {
return super.getProperty(property);
} catch (MissingPropertyException e) {
// try user-defined default values
if (defaultValues != null && defaultValues.containsKey(property)) {
// try user-defined default values (support null values)
if (defaultValues.containsKey(property)) {
return defaultValues.get(property);
}
@ -239,14 +239,17 @@ public abstract class ScriptShellBaseClass extends Script {
return match;
}
} catch (Exception e) {
// ignore and move on
debug.log(Level.WARNING, e::toString); // ignore and move on
}
// 3. run full-fledged movie detection
try {
return MediaDetection.detectMovie(file, WebServices.TheMovieDB, Locale.ENGLISH, strict).get(0);
List<Movie> options = MediaDetection.detectMovie(file, WebServices.TheMovieDB, Locale.ENGLISH, strict);
if (options.size() > 0) {
return options.get(0);
}
} catch (Exception e) {
// ignore and fail
debug.log(Level.WARNING, e::toString); // ignore and fail
}
return null;
@ -320,76 +323,71 @@ public abstract class ScriptShellBaseClass extends Script {
RenameAction action = getRenameFunction(option.get(Option.action));
boolean strict = DefaultTypeTransformation.castToBoolean(option.get(Option.strict));
synchronized (cli) {
try {
if (input.isEmpty() && !getInputFileMap(parameters).isEmpty()) {
return cli.rename(getInputFileMap(parameters), action, asString(option.get(Option.conflict)));
} else {
return cli.rename(input, action, asString(option.get(Option.conflict)), asString(option.get(Option.output)), asString(option.get(Option.format)), asString(option.get(Option.db)), asString(option.get(Option.query)), asString(option.get(Option.order)), asString(option.get(Option.filter)), asString(option.get(Option.lang)), strict);
}
} catch (Exception e) {
printException(e);
}
return cli.rename(input, action, asString(option.get(Option.conflict)), asString(option.get(Option.output)), asString(option.get(Option.format)), asString(option.get(Option.db)), asString(option.get(Option.query)), asString(option.get(Option.order)), asString(option.get(Option.filter)), asString(option.get(Option.lang)), strict);
} catch (Exception e) {
printException(e, false);
return null;
}
}
}
public List<File> getSubtitles(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
Map<Option, Object> option = getDefaultOptions(parameters);
boolean strict = DefaultTypeTransformation.castToBoolean(option.get(Option.strict));
synchronized (cli) {
try {
return cli.getSubtitles(input, asString(option.get(Option.db)), asString(option.get(Option.query)), asString(option.get(Option.lang)), asString(option.get(Option.output)), asString(option.get(Option.encoding)), asString(option.get(Option.format)), strict);
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
}
}
public List<File> getMissingSubtitles(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
Map<Option, Object> option = getDefaultOptions(parameters);
boolean strict = DefaultTypeTransformation.castToBoolean(option.get(Option.strict));
synchronized (cli) {
try {
return cli.getMissingSubtitles(input, asString(option.get(Option.db)), asString(option.get(Option.query)), asString(option.get(Option.lang)), asString(option.get(Option.output)), asString(option.get(Option.encoding)), asString(option.get(Option.format)), strict);
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
}
}
public boolean check(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
synchronized (cli) {
try {
return cli.check(input);
} catch (Exception e) {
printException(e, false);
printException(e);
}
return false;
}
}
}
public File compute(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
Map<Option, Object> option = getDefaultOptions(parameters);
synchronized (cli) {
try {
return cli.compute(input, asString(option.get(Option.output)), asString(option.get(Option.encoding)));
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
}
}
public List<File> extract(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
@ -397,36 +395,26 @@ public abstract class ScriptShellBaseClass extends Script {
FileFilter filter = (FileFilter) DefaultTypeTransformation.castToType(option.get(Option.filter), FileFilter.class);
boolean forceExtractAll = DefaultTypeTransformation.castToBoolean(option.get(Option.forceExtractAll));
synchronized (cli) {
try {
return cli.extract(input, asString(option.get(Option.output)), asString(option.get(Option.conflict)), filter, forceExtractAll);
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
}
}
public List<String> fetchEpisodeList(Map<String, ?> parameters) throws Exception {
Map<Option, Object> option = getDefaultOptions(parameters);
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.filter)), asString(option.get(Option.lang)));
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
}
}
public String getMediaInfo(File file, String format) throws Exception {
return cli.getMediaInfo(singleton(file), format, null).get(0); // explicitly ignore the --filter option
}
public List<String> getMediaInfo(Collection<?> files, String format) throws Exception {
return cli.getMediaInfo(asFileList(files), format, null); // explicitly ignore the --filter option
}
public Object getMediaInfo(Map<String, ?> parameters) throws Exception {
List<File> input = getInputFileList(parameters);
@ -435,19 +423,21 @@ public abstract class ScriptShellBaseClass extends Script {
}
Map<Option, Object> option = getDefaultOptions(parameters);
synchronized (cli) {
try {
List<String> lines = cli.getMediaInfo(input, asString(option.get(Option.format)), asString(option.get(Option.filter)));
if (parameters.containsKey("file") && !(parameters.get("file") instanceof Collection)) {
return lines.get(0); // HACK for script backwards compatibility
} else {
return lines;
}
return cli.getMediaInfo(input, asString(option.get(Option.format)), asString(option.get(Option.filter)));
} catch (Exception e) {
printException(e, false);
printException(e);
}
return null;
}
public String getMediaInfo(File file, String format) throws Exception {
return cli.getMediaInfo(singleton(file), format, null).get(0); // explicitly ignore the --filter option
}
public List<String> getMediaInfo(Collection<?> files, String format) throws Exception {
return cli.getMediaInfo(asFileList(files), format, null); // explicitly ignore the --filter option
}
private List<File> getInputFileList(Map<String, ?> parameters) {