switch (type) { case MOVIE: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(IMovieMetadataProvider.class)); break; case TV_SHOW: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(ITvShowMetadataProvider.class)); break; case MOVIE_SET: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(IMovieSetMetadataProvider.class)); break; case MOVIE_ARTWORK: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(IMovieArtworkProvider.class)); break; case TV_SHOW_ARTWORK: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(ITvShowArtworkProvider.class)); break; case MOVIE_TRAILER: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(IMovieTrailerProvider.class)); break; case SUBTITLE: plugins.addAll(PluginManager.getInstance().getPluginsForInterface(IMediaSubtitleProvider.class)); break; default: for (IKodiMetadataProvider kodi : PluginManager.getInstance().getPluginsForInterface(IKodiMetadataProvider.class)) { try { for (IMediaProvider p : kodi.getPluginsForType(MediaType.toMediaType(type.name()))) {
PluginManager.getInstance(); if (ReleaseInfo.isGitBuild()) { PluginManager.loadClasspathPlugins();
public synchronized static PluginManager getInstance() { if (instance == null) { JSPFProperties props = new JSPFProperties(); props.setProperty(net.xeoh.plugins.base.PluginManager.class, "cache.enabled", "true"); props.setProperty(net.xeoh.plugins.base.PluginManager.class, "cache.mode", "weak"); // optional props.setProperty(net.xeoh.plugins.base.PluginManager.class, "cache.file", "jspf.cache"); instance = new PluginManager(); pm = PluginManagerFactory.createPluginManager(props); pmu = new PluginManagerUtil(pm); StopWatch stopWatch = new StopWatch(); stopWatch.start(); // dedicated folder just for plugins LOGGER.debug("loading external plugins..."); // Use NIO2 Paths instead of file - not correctly generating scheme!!! // file:/C:/tmm instead of file:///C:/tmm // to load plugins from a path containing a + we've overridden the class FileLoader in the tmm classpath if (LOGGER.isTraceEnabled()) { pm.addPluginsFrom(Paths.get("plugins/").toUri(), new OptionReportAfter()); } else { pm.addPluginsFrom(Paths.get("plugins/").toUri()); } stopWatch.stop(); LOGGER.debug("Done loading external plugins - took " + stopWatch); } return instance; }
@Override public MediaMetadata call() throws Exception { try { IMovieMetadataProvider tmdb = null; List<IMovieMetadataProvider> providers = PluginManager.getInstance().getPluginsForInterface(IMovieMetadataProvider.class); for (IMovieMetadataProvider provider : providers) { if ("tmdb".equals(provider.getProviderInfo().getId())) { tmdb = provider; break; } } if (tmdb == null) { return null; } MediaScrapeOptions options = new MediaScrapeOptions(MediaType.MOVIE); options.setLanguage(language); options.setCountry(certificationCountry); options.setImdbId(imdbId); return tmdb.getMetadata(options); } catch (Exception e) { return null; } } }