* make imdb host (e.g. akas.imdb.com) configurable via -Dimdb.hostname

This commit is contained in:
Reinhard Pointner 2012-12-02 05:15:50 +00:00
parent d2ab91e846
commit f053ecd8be
3 changed files with 13 additions and 10 deletions

View File

@ -43,9 +43,6 @@ import org.xml.sax.SAXException;
public class IMDbClient implements MovieIdentificationService {
private final String host = "akas.imdb.com";
@Override
public String getName() {
return "IMDb";
@ -58,6 +55,12 @@ public class IMDbClient implements MovieIdentificationService {
}
protected String getHost() {
String host = System.getProperty("imdb.hostname"); // default to akas.imdb.com but allow override via -Dimdb.host
return host == null ? "akas.imdb.com" : host;
}
protected int getImdbId(String link) {
Matcher matcher = Pattern.compile("tt(\\d{7})").matcher(link);
@ -72,7 +75,7 @@ public class IMDbClient implements MovieIdentificationService {
@Override
public List<Movie> searchMovie(String query, Locale locale) throws Exception {
Document dom = parsePage(new URL("http", host, "/find?s=tt&q=" + encode(query)));
Document dom = parsePage(new URL("http", getHost(), "/find?s=tt&q=" + encode(query)));
// select movie links followed by year in parenthesis
List<Node> nodes = selectNodes("//TABLE[@class='findList']//TD/A[substring-after(substring-before(following::text(),')'),'(')]", dom);
@ -152,7 +155,7 @@ public class IMDbClient implements MovieIdentificationService {
@Override
public Movie getMovieDescriptor(int imdbid, Locale locale) throws Exception {
try {
return scrapeMovie(parsePage(new URL("http", host, String.format("/title/tt%07d/releaseinfo", imdbid))), locale);
return scrapeMovie(parsePage(new URL("http", getHost(), String.format("/title/tt%07d/releaseinfo", imdbid))), locale);
} catch (FileNotFoundException e) {
return null; // illegal imdbid
}

View File

@ -28,12 +28,12 @@ public class IMDbClientTest {
@Test
public void searchMovie2() throws Exception {
List<Movie> results = imdb.searchMovie("Heat", null);
List<Movie> results = imdb.searchMovie("the illusionist", null);
Movie movie = results.get(0);
assertEquals("Heat", movie.getName());
assertEquals(1995, movie.getYear());
assertEquals(113277, movie.getImdbId(), 0);
assertEquals("The Illusionist", movie.getName());
assertEquals(2006, movie.getYear());
assertEquals(443543, movie.getImdbId(), 0);
}

View File

@ -79,7 +79,7 @@ input = input.findAll{ it?.exists() }.collect{ it.canonicalFile }.unique()
input = input.findAll{ it.isVideo() || it.isSubtitle() || it.isDisk() }
// ignore clutter files
input = input.findAll{ !(it.path =~ /\b(?i:sample|trailer|extras|deleted.scenes|music.video|scrapbook)\b/) }
input = input.findAll{ !(it.path =~ /\b(?i:sample|trailer|extras|deleted.scenes|music.video|scrapbook|behind.the.scenes)\b/) }
// print input fileset
input.each{ f -> _log.finest("Input: $f") }