mirror of
https://github.com/mitb-archive/filebot
synced 2025-03-09 22:09:47 -04:00
* only allow 1 single concurrent connection at any time (to reduce abuse)
This commit is contained in:
parent
f7436eee9e
commit
f14aa89625
@ -290,7 +290,7 @@ public class SubtitlePanel extends AbstractSearchPanel<SubtitleProvider, Subtitl
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (osdbUser.getText().length() > 0 && osdbPass.getPassword().length > 0) {
|
if (osdbUser.getText().length() > 0 && osdbPass.getPassword().length > 0) {
|
||||||
OpenSubtitlesClient osdb = new OpenSubtitlesClient(String.format("%s %s", getApplicationName(), getApplicationVersion()));
|
OpenSubtitlesClient osdb = new OpenSubtitlesClient(String.format("%s v%s", getApplicationName(), getApplicationVersion()));
|
||||||
osdb.setUser(osdbUser.getText(), new String(osdbPass.getPassword()));
|
osdb.setUser(osdbUser.getText(), new String(osdbPass.getPassword()));
|
||||||
osdb.login();
|
osdb.login();
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
|||||||
private String password = "";
|
private String password = "";
|
||||||
|
|
||||||
public OpenSubtitlesClient(String useragent) {
|
public OpenSubtitlesClient(String useragent) {
|
||||||
this.xmlrpc = new OpenSubtitlesXmlRpcWithRetry(useragent, 2, 3000);
|
this.xmlrpc = new OpenSubtitlesXmlRpcWithRetryAndFloodLimit(useragent, 2, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void setUser(String username, String password) {
|
public synchronized void setUser(String username, String password) {
|
||||||
@ -674,15 +674,16 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class OpenSubtitlesXmlRpcWithRetry extends OpenSubtitlesXmlRpc {
|
protected static class OpenSubtitlesXmlRpcWithRetryAndFloodLimit extends OpenSubtitlesXmlRpc {
|
||||||
|
|
||||||
|
private final Object lock = new Object();
|
||||||
|
|
||||||
private int retryCountLimit;
|
private int retryCountLimit;
|
||||||
private long retryWaitTime;
|
private long retryWaitTime;
|
||||||
|
|
||||||
public OpenSubtitlesXmlRpcWithRetry(String useragent, int retryCountLimit, long retryWaitTime) {
|
public OpenSubtitlesXmlRpcWithRetryAndFloodLimit(String useragent, int retryCountLimit, long retryWaitTime) {
|
||||||
super(useragent);
|
super(useragent);
|
||||||
this.retryCountLimit = retryCountLimit;
|
this.retryCountLimit = retryCountLimit;
|
||||||
this.retryWaitTime = retryWaitTime;
|
this.retryWaitTime = retryWaitTime;
|
||||||
@ -695,7 +696,11 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
|||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
Thread.sleep(retryWaitTime);
|
Thread.sleep(retryWaitTime);
|
||||||
}
|
}
|
||||||
return super.invoke(method, arguments);
|
|
||||||
|
// only allow 1 single concurrent connection at any time (to reduce abuse)
|
||||||
|
synchronized (lock) {
|
||||||
|
return super.invoke(method, arguments);
|
||||||
|
}
|
||||||
} catch (XmlRpcException e) {
|
} catch (XmlRpcException e) {
|
||||||
IOException ioException = ExceptionUtilities.findCause(e, IOException.class);
|
IOException ioException = ExceptionUtilities.findCause(e, IOException.class);
|
||||||
if (ioException == null || i >= 0 && i >= retryCountLimit) {
|
if (ioException == null || i >= 0 && i >= retryCountLimit) {
|
||||||
|
@ -112,6 +112,7 @@ public class OpenSubtitlesXmlRpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@Deprecated
|
||||||
public List<Movie> searchMoviesOnIMDB(String query) throws XmlRpcFault {
|
public List<Movie> searchMoviesOnIMDB(String query) throws XmlRpcFault {
|
||||||
Map<?, ?> response = invoke("SearchMoviesOnIMDB", token, query);
|
Map<?, ?> response = invoke("SearchMoviesOnIMDB", token, query);
|
||||||
|
|
||||||
@ -265,6 +266,7 @@ public class OpenSubtitlesXmlRpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@Deprecated
|
||||||
public Movie getIMDBMovieDetails(int imdbid) throws XmlRpcFault {
|
public Movie getIMDBMovieDetails(int imdbid) throws XmlRpcFault {
|
||||||
Map<?, ?> response = invoke("GetIMDBMovieDetails", token, imdbid);
|
Map<?, ?> response = invoke("GetIMDBMovieDetails", token, imdbid);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user