+ added {localize} binding to allow just-in-time localization of movie/episode data
Episode Format Example: {localize.German.Title} Movie Format Example: {localize.Chinese.Name}
This commit is contained in:
parent
000bd92325
commit
a226a4de0f
|
@ -0,0 +1,20 @@
|
||||||
|
package net.filebot.format;
|
||||||
|
|
||||||
|
import groovy.lang.GroovyObjectSupport;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public class DynamicBindings extends GroovyObjectSupport {
|
||||||
|
|
||||||
|
private Function<String, Object> map;
|
||||||
|
|
||||||
|
public DynamicBindings(Function<String, Object> map) {
|
||||||
|
this.map = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getProperty(String property) {
|
||||||
|
return map.apply(property);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -612,12 +612,33 @@ public class MediaBindingBean {
|
||||||
|
|
||||||
@Define("episodelist")
|
@Define("episodelist")
|
||||||
public Object getEpisodeList() throws Exception {
|
public Object getEpisodeList() throws Exception {
|
||||||
for (EpisodeListProvider service : WebServices.getEpisodeListProviders()) {
|
return WebServices.getEpisodeListProvider(getSeriesInfo().getDatabase()).getEpisodeList(getSeriesInfo().getId(), SortOrder.forName(getSeriesInfo().getOrder()), new Locale(getSeriesInfo().getLanguage()));
|
||||||
if (getSeriesInfo().getDatabase().equals(service.getName())) {
|
}
|
||||||
return service.getEpisodeList(getSeriesInfo().getId(), SortOrder.forName(getSeriesInfo().getOrder()), new Locale(getSeriesInfo().getLanguage()));
|
|
||||||
|
@Define("localize")
|
||||||
|
public Object getLocalizedInfoObject() throws Exception {
|
||||||
|
return new DynamicBindings(key -> {
|
||||||
|
Language language = Language.findLanguage(key);
|
||||||
|
if (language != null) {
|
||||||
|
Object localizedInfo = null;
|
||||||
|
try {
|
||||||
|
if (infoObject instanceof Movie) {
|
||||||
|
localizedInfo = WebServices.TheMovieDB.getMovieInfo(getMovie(), language.getLocale(), false);
|
||||||
|
} else if (infoObject instanceof Episode) {
|
||||||
|
EpisodeListProvider db = WebServices.getEpisodeListProvider(getSeriesInfo().getDatabase());
|
||||||
|
List<Episode> episodes = db.getEpisodeList(getSeriesInfo().getId(), SortOrder.forName(getSeriesInfo().getOrder()), language.getLocale());
|
||||||
|
localizedInfo = episodes.stream().filter(it -> getEpisode().getNumbers().equals(it.getNumbers())).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BindingException(key, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localizedInfo != null) {
|
||||||
|
return createMapBindings(new PropertyBindings(localizedInfo, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return undefined(key);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Define("bitrate")
|
@Define("bitrate")
|
||||||
|
|
Loading…
Reference in New Issue