* some refactoring & polishing
* update nekohtml to 1.9.13 * update jna to 3.2.3 * update ehcache to 1.7.0 * update mediainfo native libs to 0.7.24 * remove 32-bit mediainfo.dynlib for Mac because Java 6 is only available in 64-bit anyway
This commit is contained in:
parent
f61b084769
commit
5c7f90540a
BIN
lib/ehcache.jar
BIN
lib/ehcache.jar
Binary file not shown.
BIN
lib/jna.jar
BIN
lib/jna.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/nekohtml.jar
BIN
lib/nekohtml.jar
Binary file not shown.
|
@ -137,8 +137,11 @@
|
||||||
-->
|
-->
|
||||||
<cache name="anidb"
|
<cache name="anidb"
|
||||||
maxElementsInMemory="20"
|
maxElementsInMemory="20"
|
||||||
|
maxElementsOnDisk="120"
|
||||||
|
eternal="false"
|
||||||
timeToIdleSeconds="2628000"
|
timeToIdleSeconds="2628000"
|
||||||
timeToLiveSeconds="2628000"
|
timeToLiveSeconds="2628000"
|
||||||
|
overflowToDisk="true"
|
||||||
diskPersistent="true"
|
diskPersistent="true"
|
||||||
memoryStoreEvictionPolicy="LRU"
|
memoryStoreEvictionPolicy="LRU"
|
||||||
/>
|
/>
|
||||||
|
@ -152,7 +155,7 @@
|
||||||
eternal="false"
|
eternal="false"
|
||||||
timeToIdleSeconds="7200"
|
timeToIdleSeconds="7200"
|
||||||
timeToLiveSeconds="7200"
|
timeToLiveSeconds="7200"
|
||||||
overflowToDisk="false"
|
overflowToDisk="false"
|
||||||
diskPersistent="false"
|
diskPersistent="false"
|
||||||
memoryStoreEvictionPolicy="LRU"
|
memoryStoreEvictionPolicy="LRU"
|
||||||
/>
|
/>
|
||||||
|
@ -162,7 +165,7 @@
|
||||||
Short-lived memory cache for resources like icons. This cache is used by ResourceManager.
|
Short-lived memory cache for resources like icons. This cache is used by ResourceManager.
|
||||||
-->
|
-->
|
||||||
<cache name="resource"
|
<cache name="resource"
|
||||||
maxElementsInMemory="100"
|
maxElementsInMemory="40"
|
||||||
eternal="false"
|
eternal="false"
|
||||||
timeToIdleSeconds="120"
|
timeToIdleSeconds="120"
|
||||||
timeToLiveSeconds="120"
|
timeToLiveSeconds="120"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# application settings
|
# application settings
|
||||||
application.name: FileBot
|
application.name: FileBot
|
||||||
application.version: 0.0
|
application.version: 1.94
|
||||||
|
|
||||||
thetvdb.apikey: 58B4AA94C59AD656
|
thetvdb.apikey: 58B4AA94C59AD656
|
||||||
|
themoviedb.apikey: 66308fb6e3fd850dde4c7d21df2e8306
|
||||||
sublight.apikey: afa9ecb2-a3ee-42b1-9225-000b4038bc85
|
sublight.apikey: afa9ecb2-a3ee-42b1-9225-000b4038bc85
|
||||||
|
|
|
@ -55,23 +55,23 @@ String.metaClass.lowerTrail = { replaceAll(/\b(\p{Alpha})(\p{Alpha}+)\b/, { matc
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return substring before the given delimiter.
|
* Return substring before the given pattern.
|
||||||
*/
|
*/
|
||||||
String.metaClass.before = {
|
String.metaClass.before = {
|
||||||
def matcher = delegate =~ it
|
def matcher = delegate =~ it
|
||||||
|
|
||||||
// delimiter was found, return leading substring, else return original value
|
// pattern was found, return leading substring, else return original value
|
||||||
return matcher.find() ? delegate.substring(0, matcher.start()) : delegate
|
return matcher.find() ? delegate.substring(0, matcher.start()) : delegate
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return substring after the given delimiter.
|
* Return substring after the given pattern.
|
||||||
*/
|
*/
|
||||||
String.metaClass.after = {
|
String.metaClass.after = {
|
||||||
def matcher = delegate =~ it
|
def matcher = delegate =~ it
|
||||||
|
|
||||||
// delimiter was found, return trailing substring, else return original value
|
// pattern was found, return trailing substring, else return original value
|
||||||
return matcher.find() ? delegate.substring(matcher.end(), delegate.length()) : delegate
|
return matcher.find() ? delegate.substring(matcher.end(), delegate.length()) : delegate
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ String.metaClass.replaceTrailingBraces = { replacement = "" -> replaceAll(/\s*[(
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replace 'part section'.
|
* Replace 'part identifier'.
|
||||||
*
|
*
|
||||||
* e.g. "Today Is the Day: Part 1" -> "Today Is the Day, Part 1"
|
* e.g. "Today Is the Day: Part 1" -> "Today Is the Day, Part 1"
|
||||||
* "Today Is the Day (1)" -> "Today Is the Day, Part 1"
|
* "Today Is the Day (1)" -> "Today Is the Day, Part 1"
|
||||||
|
|
|
@ -144,7 +144,7 @@ abstract class SubtitleDropTarget extends JButton {
|
||||||
throw new UnsupportedOperationException("Not implemented yet");
|
throw new UnsupportedOperationException("Not implemented yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter(files, VIDEO_FILES).size() == filter(files, SUBTITLE_FILES).size()) {
|
if (containsOnlyVideoSubtitleMatches(files)) {
|
||||||
// TODO implement upload
|
// TODO implement upload
|
||||||
throw new UnsupportedOperationException("Not implemented yet");
|
throw new UnsupportedOperationException("Not implemented yet");
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,9 +74,12 @@ public class AnidbClient implements EpisodeListProvider {
|
||||||
for (AnidbSearchResult anime : getAnimeTitles()) {
|
for (AnidbSearchResult anime : getAnimeTitles()) {
|
||||||
for (String name : new String[] { anime.getMainTitle(), anime.getEnglishTitle() }) {
|
for (String name : new String[] { anime.getMainTitle(), anime.getEnglishTitle() }) {
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
float similarity = metric.getSimilarity(name.toLowerCase(), query);
|
// normalize
|
||||||
|
name = name.toLowerCase();
|
||||||
|
|
||||||
if (similarity > 0.5 || name.toLowerCase().contains(query)) {
|
float similarity = metric.getSimilarity(name, query);
|
||||||
|
|
||||||
|
if (similarity > 0.5 || name.contains(query)) {
|
||||||
resultSet.add(new SimpleEntry<SearchResult, Float>(anime, similarity));
|
resultSet.add(new SimpleEntry<SearchResult, Float>(anime, similarity));
|
||||||
|
|
||||||
// add only once
|
// add only once
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.net.URI;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -61,25 +62,26 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
||||||
// require login
|
// require login
|
||||||
login();
|
login();
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
// search for movies / series
|
||||||
List<SearchResult> results = (List) xmlrpc.searchMoviesOnIMDB(query);
|
SearchResult[] result = xmlrpc.searchMoviesOnIMDB(query).toArray(new SearchResult[0]);
|
||||||
|
|
||||||
return results;
|
return Arrays.asList(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SubtitleDescriptor> getSubtitleList(SearchResult searchResult, String languageName) throws Exception {
|
public List<SubtitleDescriptor> getSubtitleList(SearchResult searchResult, String languageName) throws Exception {
|
||||||
// singleton array with or empty array
|
// singleton array with or empty array
|
||||||
|
int imdbid = ((MovieDescriptor) searchResult).getImdbId();
|
||||||
String[] languageFilter = languageName != null ? new String[] { getSubLanguageID(languageName) } : new String[0];
|
String[] languageFilter = languageName != null ? new String[] { getSubLanguageID(languageName) } : new String[0];
|
||||||
|
|
||||||
// require login
|
// require login
|
||||||
login();
|
login();
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
// get subtitle list
|
||||||
List<SubtitleDescriptor> subtitles = (List) xmlrpc.searchSubtitles(((MovieDescriptor) searchResult).getImdbId(), languageFilter);
|
SubtitleDescriptor[] subtitles = xmlrpc.searchSubtitles(imdbid, languageFilter).toArray(new SubtitleDescriptor[0]);
|
||||||
|
|
||||||
return subtitles;
|
return Arrays.asList(subtitles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
|
||||||
|
package net.sourceforge.filebot.web;
|
||||||
|
|
||||||
|
|
||||||
|
import static net.sourceforge.filebot.web.WebRequest.*;
|
||||||
|
import static net.sourceforge.tuned.XPathUtilities.*;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
|
|
||||||
|
public class TMDbClient implements MovieIdentificationService {
|
||||||
|
|
||||||
|
private static final String host = "api.themoviedb.org";
|
||||||
|
private static final String version = "2.1";
|
||||||
|
|
||||||
|
private final String apikey;
|
||||||
|
|
||||||
|
|
||||||
|
public TMDbClient(String apikey) {
|
||||||
|
this.apikey = apikey;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<MovieDescriptor> searchMovie(String query) throws IOException, SAXException {
|
||||||
|
return getMovies("Movie.search", query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<MovieDescriptor> searchMovie(File file) throws IOException, SAXException {
|
||||||
|
return getMovies("Hash.getInfo", OpenSubtitlesHasher.computeHash(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MovieDescriptor[] getMovieDescriptors(File[] movieFiles) throws Exception {
|
||||||
|
MovieDescriptor[] movies = new MovieDescriptor[movieFiles.length];
|
||||||
|
|
||||||
|
for (int i = 0; i < movies.length; i++) {
|
||||||
|
List<MovieDescriptor> options = searchMovie(movieFiles[i]);
|
||||||
|
|
||||||
|
// just use first result, if possible
|
||||||
|
movies[i] = options.isEmpty() ? null : options.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return movies;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected List<MovieDescriptor> getMovies(String method, String parameter) throws IOException, SAXException {
|
||||||
|
List<MovieDescriptor> result = new ArrayList<MovieDescriptor>();
|
||||||
|
|
||||||
|
for (Node node : selectNodes("//movie", getDocument(getResource(method, parameter)))) {
|
||||||
|
try {
|
||||||
|
String name = getTextContent("name", node);
|
||||||
|
|
||||||
|
// release date format will be YYYY-MM-DD, but we only care about the year
|
||||||
|
int year = new Scanner(getTextContent("released", node)).useDelimiter("\\D+").nextInt();
|
||||||
|
|
||||||
|
// imdb id will be tt1234567, but we only care about the number
|
||||||
|
int imdbid = new Scanner(getTextContent("imdb_id", node)).useDelimiter("\\D+").nextInt();
|
||||||
|
|
||||||
|
result.add(new MovieDescriptor(name, year, imdbid));
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
// release date or imdb id are undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected URL getResource(String method, String parameter) throws MalformedURLException {
|
||||||
|
// e.g. http://api.themoviedb.org/2.1/Movie.search/en/xml/{apikey}/serenity
|
||||||
|
return new URL("http", host, "/" + version + "/" + method + "/en/xml/" + apikey + "/" + parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,11 +13,11 @@ import java.util.UUID;
|
||||||
|
|
||||||
public final class TemporaryFolder {
|
public final class TemporaryFolder {
|
||||||
|
|
||||||
private static final String tmpdir = System.getProperty("java.io.tmpdir");
|
private static final File tmpdir = new File(System.getProperty("java.io.tmpdir"));
|
||||||
|
|
||||||
private static final Map<String, TemporaryFolder> folders = new HashMap<String, TemporaryFolder>();
|
private static final Map<String, TemporaryFolder> folders = new HashMap<String, TemporaryFolder>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a {@link TemporaryFolder} instance for a given name. The actual directory will be
|
* Get a {@link TemporaryFolder} instance for a given name. The actual directory will be
|
||||||
* created lazily (e.g. when a file is created). The name of the directory will start with
|
* created lazily (e.g. when a file is created). The name of the directory will start with
|
||||||
|
@ -43,6 +43,7 @@ public final class TemporaryFolder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all temporary folders on shutdown
|
* Delete all temporary folders on shutdown
|
||||||
*/
|
*/
|
||||||
|
@ -62,7 +63,7 @@ public final class TemporaryFolder {
|
||||||
|
|
||||||
private final File root;
|
private final File root;
|
||||||
|
|
||||||
|
|
||||||
private TemporaryFolder(File root) {
|
private TemporaryFolder(File root) {
|
||||||
this.root = root;
|
this.root = root;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class ActionPopup extends JPopupMenu {
|
||||||
|
|
||||||
protected final JPanel actionPanel = new JPanel(new MigLayout("nogrid, insets 0, fill"));
|
protected final JPanel actionPanel = new JPanel(new MigLayout("nogrid, insets 0, fill"));
|
||||||
|
|
||||||
|
|
||||||
public ActionPopup(String label, Icon icon) {
|
public ActionPopup(String label, Icon icon) {
|
||||||
headerLabel.setText(label);
|
headerLabel.setText(label);
|
||||||
headerLabel.setIcon(icon);
|
headerLabel.setIcon(icon);
|
||||||
|
@ -53,7 +53,7 @@ public class ActionPopup extends JPopupMenu {
|
||||||
|
|
||||||
|
|
||||||
public void addAction(JComponent component) {
|
public void addAction(JComponent component) {
|
||||||
actionPanel.add(component, "gapx 12px 12px, wrap");
|
actionPanel.add(component, "gapx 12px 12px, growx, wrap");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,6 +109,7 @@ public class ActionPopup extends JPopupMenu {
|
||||||
return statusLabel.getText();
|
return statusLabel.getText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private final ActionListener closeListener = new ActionListener() {
|
private final ActionListener closeListener = new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class LinkButton extends JButton {
|
||||||
private Color color = getForeground();
|
private Color color = getForeground();
|
||||||
private Color rolloverColor = SystemColor.textHighlight;
|
private Color rolloverColor = SystemColor.textHighlight;
|
||||||
|
|
||||||
|
|
||||||
public LinkButton(String text, Icon icon, URI uri) {
|
public LinkButton(String text, Icon icon, URI uri) {
|
||||||
this(new OpenUriAction(text, icon, uri));
|
this(new OpenUriAction(text, icon, uri));
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@ public class LinkButton extends JButton {
|
||||||
setContentAreaFilled(false);
|
setContentAreaFilled(false);
|
||||||
setBorder(null);
|
setBorder(null);
|
||||||
|
|
||||||
|
setHorizontalAlignment(LEFT);
|
||||||
setIconTextGap(6);
|
setIconTextGap(6);
|
||||||
setRolloverEnabled(true);
|
setRolloverEnabled(true);
|
||||||
|
|
||||||
|
@ -80,6 +81,7 @@ public class LinkButton extends JButton {
|
||||||
this.rolloverColor = rolloverColor;
|
this.rolloverColor = rolloverColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected final MouseListener rolloverListener = new MouseAdapter() {
|
protected final MouseListener rolloverListener = new MouseAdapter() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,12 +96,12 @@ public class LinkButton extends JButton {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
protected static class OpenUriAction extends AbstractAction {
|
protected static class OpenUriAction extends AbstractAction {
|
||||||
|
|
||||||
public static final String URI = "uri";
|
public static final String URI = "uri";
|
||||||
|
|
||||||
|
|
||||||
public OpenUriAction(String text, Icon icon, URI uri) {
|
public OpenUriAction(String text, Icon icon, URI uri) {
|
||||||
super(text, icon);
|
super(text, icon);
|
||||||
putValue(URI, uri);
|
putValue(URI, uri);
|
||||||
|
|
|
@ -6,9 +6,11 @@ import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.AfterClass;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import net.sf.ehcache.CacheManager;
|
||||||
import net.sourceforge.filebot.web.AnidbClient.AnidbSearchResult;
|
import net.sourceforge.filebot.web.AnidbClient.AnidbSearchResult;
|
||||||
|
|
||||||
|
|
||||||
|
@ -118,4 +120,11 @@ public class AnidbClientTest {
|
||||||
assertEquals("http://anidb.net/a1539", anidb.getEpisodeListLink(monsterSearchResult).toURL().toString());
|
assertEquals("http://anidb.net/a1539", anidb.getEpisodeListLink(monsterSearchResult).toURL().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
@AfterClass
|
||||||
|
public static void clearCache() {
|
||||||
|
CacheManager.getInstance().clearAll();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package net.sourceforge.filebot.web;
|
||||||
|
|
||||||
|
|
||||||
import static java.util.Collections.*;
|
import static java.util.Collections.*;
|
||||||
|
import static net.sourceforge.filebot.Settings.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
@ -21,7 +22,7 @@ import net.sourceforge.filebot.web.OpenSubtitlesXmlRpc.TryUploadResponse;
|
||||||
|
|
||||||
public class OpenSubtitlesXmlRpcTest {
|
public class OpenSubtitlesXmlRpcTest {
|
||||||
|
|
||||||
private static OpenSubtitlesXmlRpc xmlrpc = new OpenSubtitlesXmlRpc("FileBot 0.0");
|
private static OpenSubtitlesXmlRpc xmlrpc = new OpenSubtitlesXmlRpc(String.format("%s %s", getApplicationName(), getApplicationVersion()));
|
||||||
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
package net.sourceforge.filebot.web;
|
package net.sourceforge.filebot.web;
|
||||||
|
|
||||||
|
|
||||||
|
import static net.sourceforge.filebot.Settings.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -18,7 +19,7 @@ import net.sublight.webservice.Subtitle;
|
||||||
|
|
||||||
public class SublightSubtitleClientTest {
|
public class SublightSubtitleClientTest {
|
||||||
|
|
||||||
private static SublightSubtitleClient client = new SublightSubtitleClient("FileBot", "afa9ecb2-a3ee-42b1-9225-000b4038bc85");
|
private static SublightSubtitleClient client = new SublightSubtitleClient(getApplicationName(), getApplicationProperty("sublight.apikey"));
|
||||||
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
|
||||||
|
package net.sourceforge.filebot.web;
|
||||||
|
|
||||||
|
|
||||||
|
import static net.sourceforge.filebot.Settings.*;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
||||||
|
public class TMDbClientTest {
|
||||||
|
|
||||||
|
private final TMDbClient tmdb = new TMDbClient(getApplicationProperty("themoviedb.apikey"));
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void searchByName() throws Exception {
|
||||||
|
List<MovieDescriptor> result = tmdb.searchMovie("transformers");
|
||||||
|
MovieDescriptor movie = result.get(0);
|
||||||
|
|
||||||
|
assertEquals("Transformers", movie.getName());
|
||||||
|
assertEquals(2007, movie.getYear());
|
||||||
|
assertEquals(418279, movie.getImdbId());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void searchByHash() throws Exception {
|
||||||
|
List<MovieDescriptor> results = tmdb.getMovies("Hash.getInfo", "d7aa0275cace4410");
|
||||||
|
MovieDescriptor movie = results.get(0);
|
||||||
|
|
||||||
|
assertEquals("Iron Man", movie.getName());
|
||||||
|
assertEquals(2008, movie.getYear());
|
||||||
|
assertEquals(371746, movie.getImdbId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -8,7 +8,8 @@ import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import net.sf.ehcache.CacheManager;
|
import net.sf.ehcache.CacheManager;
|
||||||
|
@ -21,12 +22,6 @@ public class TheTVDBClientTest {
|
||||||
private TheTVDBClient thetvdb = new TheTVDBClient("BA864DEE427E384A");
|
private TheTVDBClient thetvdb = new TheTVDBClient("BA864DEE427E384A");
|
||||||
|
|
||||||
|
|
||||||
@After
|
|
||||||
public void clearCache() {
|
|
||||||
CacheManager.getInstance().clearAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void search() throws Exception {
|
public void search() throws Exception {
|
||||||
// test default language and query escaping (blanks)
|
// test default language and query escaping (blanks)
|
||||||
|
@ -122,4 +117,11 @@ public class TheTVDBClientTest {
|
||||||
assertEquals(EnumSet.allOf(MirrorType.class), MirrorType.fromTypeMask(7));
|
assertEquals(EnumSet.allOf(MirrorType.class), MirrorType.fromTypeMask(7));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
@AfterClass
|
||||||
|
public static void clearCache() {
|
||||||
|
CacheManager.getInstance().clearAll();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,8 @@ import org.junit.runners.Suite.SuiteClasses;
|
||||||
|
|
||||||
|
|
||||||
@RunWith(Suite.class)
|
@RunWith(Suite.class)
|
||||||
@SuiteClasses( { TVDotComClientTest.class, AnidbClientTest.class, TVRageClientTest.class, TheTVDBClientTest.class, IMDbClientTest.class, SubsceneSubtitleClientTest.class, SubtitleSourceClientTest.class, SublightSubtitleClientTest.class, OpenSubtitlesXmlRpcTest.class })
|
@SuiteClasses( { TVDotComClientTest.class, AnidbClientTest.class, TVRageClientTest.class, TheTVDBClientTest.class, TMDbClientTest.class, IMDbClientTest.class, SubsceneSubtitleClientTest.class, SubtitleSourceClientTest.class,
|
||||||
|
SublightSubtitleClientTest.class, OpenSubtitlesXmlRpcTest.class })
|
||||||
public class WebTestSuite {
|
public class WebTestSuite {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue