diff --git a/source/net/filebot/ui/AbstractSearchPanel.java b/source/net/filebot/ui/AbstractSearchPanel.java index 11a6ca57..b9f9e7ba 100644 --- a/source/net/filebot/ui/AbstractSearchPanel.java +++ b/source/net/filebot/ui/AbstractSearchPanel.java @@ -166,7 +166,10 @@ public abstract class AbstractSearchPanel extends JComponent { return; } - search(createRequestProcessor()); + RequestProcessor request = createRequestProcessor(); + if (request != null) { + search(request); + } } }; diff --git a/source/net/filebot/ui/subtitle/SubtitleDropTarget.java b/source/net/filebot/ui/subtitle/SubtitleDropTarget.java index d08c3421..7e31dd02 100644 --- a/source/net/filebot/ui/subtitle/SubtitleDropTarget.java +++ b/source/net/filebot/ui/subtitle/SubtitleDropTarget.java @@ -31,6 +31,7 @@ import javax.swing.JButton; import javax.swing.JDialog; import net.filebot.ResourceManager; +import net.filebot.Settings; import net.filebot.util.FileUtilities; import net.filebot.util.FileUtilities.ParentFilter; import net.filebot.web.OpenSubtitlesClient; @@ -69,6 +70,8 @@ abstract class SubtitleDropTarget extends JButton { setIcon(getIcon(dropAction)); } + protected abstract OpenSubtitlesClient getSubtitleService(); + protected abstract boolean handleDrop(List files); protected abstract DropAction getDropAction(List files); @@ -158,6 +161,11 @@ abstract class SubtitleDropTarget extends JButton { return false; } + if (getSubtitleService().isAnonymous() && !Settings.isAppStore()) { + UILogger.info(String.format("%s: Please enter your login details first.", getSubtitleService().getName())); + return false; + } + // perform a drop action depending on the given files final Collection videoFiles = new TreeSet(); @@ -221,8 +229,6 @@ abstract class SubtitleDropTarget extends JButton { public static abstract class Upload extends SubtitleDropTarget { - public abstract OpenSubtitlesClient getSubtitleService(); - @Override protected DropAction getDropAction(List input) { // accept video files and folders @@ -232,7 +238,7 @@ abstract class SubtitleDropTarget extends JButton { @Override protected boolean handleDrop(List input) { if (getSubtitleService().isAnonymous()) { - UILogger.info("Please login. Anonymous user is not allowed to upload subtitles."); + UILogger.info(String.format("%s: Please enter your login details first.", getSubtitleService().getName())); return false; } diff --git a/source/net/filebot/ui/subtitle/SubtitlePanel.java b/source/net/filebot/ui/subtitle/SubtitlePanel.java index 132a906c..44df9528 100644 --- a/source/net/filebot/ui/subtitle/SubtitlePanel.java +++ b/source/net/filebot/ui/subtitle/SubtitlePanel.java @@ -30,6 +30,7 @@ import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRootPane; import javax.swing.JTextField; +import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; import net.filebot.Language; @@ -109,6 +110,10 @@ public class SubtitlePanel extends AbstractSearchPanel setUserAction.actionPerformed(new ActionEvent(searchTextField, 0, "login"))); + + return null; + } + return new SubtitleRequestProcessor(new SubtitleRequest(provider, text, language)); } diff --git a/source/net/filebot/web/OpenSubtitlesClient.java b/source/net/filebot/web/OpenSubtitlesClient.java index 8776f4c2..ef960369 100644 --- a/source/net/filebot/web/OpenSubtitlesClient.java +++ b/source/net/filebot/web/OpenSubtitlesClient.java @@ -91,25 +91,7 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS @Override public List search(String query) throws Exception { - List result = getCache().getSearchResult("search", query, null); - if (result != null) { - return result; - } - - // require login - login(); - - try { - // search for movies / series - List resultSet = xmlrpc.searchMoviesOnIMDB(query); - result = asList(resultSet.toArray(new SearchResult[0])); - } catch (ClassCastException e) { - // unexpected xmlrpc responses (e.g. error messages instead of results) will trigger this - throw new XmlRpcException("Illegal XMLRPC response on searchMoviesOnIMDB"); - } - - getCache().putSearchResult("search", query, null, result); - return result; + throw new UnsupportedOperationException("SearchMoviesOnIMDB is not supported due to abuse"); } @Override @@ -378,41 +360,14 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS } } - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public List searchMovie(String query, Locale locale) throws Exception { - List result = getCache().getSearchResult("searchMovie", query, locale); - if (result != null) { - return (List) result; - } - - // require login - login(); - - List movies = xmlrpc.searchMoviesOnIMDB(query); - - getCache().putSearchResult("searchMovie", query, locale, movies); - return movies; + throw new UnsupportedOperationException("SearchMoviesOnIMDB is not supported due to abuse"); } @Override public Movie getMovieDescriptor(Movie id, Locale locale) throws Exception { - if (id.getImdbId() <= 0) { - throw new IllegalArgumentException("id must not be " + id.getImdbId()); - } - - Movie result = getCache().getData("getMovieDescriptor", id.getImdbId(), locale, Movie.class); - if (result != null) { - return result; - } - - // require login - login(); - - Movie movie = xmlrpc.getIMDBMovieDetails(id.getImdbId()); - - getCache().putData("getMovieDescriptor", id.getImdbId(), locale, movie); - return movie; + throw new UnsupportedOperationException("GetIMDBMovieDetails is not supported due to abuse"); } public Movie getMovieDescriptor(File movieFile, Locale locale) throws Exception { diff --git a/source/net/filebot/web/OpenSubtitlesXmlRpc.java b/source/net/filebot/web/OpenSubtitlesXmlRpc.java index a26f6f3b..d571865b 100644 --- a/source/net/filebot/web/OpenSubtitlesXmlRpc.java +++ b/source/net/filebot/web/OpenSubtitlesXmlRpc.java @@ -145,6 +145,26 @@ public class OpenSubtitlesXmlRpc { return movies; } + @SuppressWarnings("unchecked") + @Deprecated + public Movie getIMDBMovieDetails(int imdbid) throws XmlRpcFault { + Map response = invoke("GetIMDBMovieDetails", token, imdbid); + + try { + Map data = (Map) response.get("data"); + + String name = data.get("title"); + int year = Integer.parseInt(data.get("year")); + + return new Movie(name, year, imdbid, -1); + } catch (RuntimeException e) { + // ignore, invalid response + Logger.getLogger(getClass().getName()).log(Level.WARNING, String.format("Failed to lookup movie by imdbid %s: %s", imdbid, e.getMessage())); + } + + return null; + } + @SuppressWarnings("unchecked") public TryUploadResponse tryUploadSubtitles(SubFile... subtitles) throws XmlRpcFault { Map struct = new HashMap(); @@ -265,26 +285,6 @@ public class OpenSubtitlesXmlRpc { return getSubLanguages("en"); } - @SuppressWarnings("unchecked") - @Deprecated - public Movie getIMDBMovieDetails(int imdbid) throws XmlRpcFault { - Map response = invoke("GetIMDBMovieDetails", token, imdbid); - - try { - Map data = (Map) response.get("data"); - - String name = data.get("title"); - int year = Integer.parseInt(data.get("year")); - - return new Movie(name, year, imdbid, -1); - } catch (RuntimeException e) { - // ignore, invalid response - Logger.getLogger(getClass().getName()).log(Level.WARNING, String.format("Failed to lookup movie by imdbid %s: %s", imdbid, e.getMessage())); - } - - return null; - } - @SuppressWarnings("unchecked") public Map getSubLanguages(String languageCode) throws XmlRpcFault { Map>> response = (Map>>) invoke("GetSubLanguages", languageCode);