* fix auto-detection issues for movie query "9 (2009)"
This commit is contained in:
parent
052ba0e26f
commit
9ad9a3e1a9
|
@ -69,7 +69,7 @@ public class TMDbClient implements MovieIdentificationService {
|
||||||
@Override
|
@Override
|
||||||
public List<Movie> searchMovie(String query, Locale locale) throws IOException {
|
public List<Movie> searchMovie(String query, Locale locale) throws IOException {
|
||||||
// query by name with year filter if possible
|
// query by name with year filter if possible
|
||||||
Matcher nameYear = Pattern.compile("(.+)\\b(19\\d{2}|20\\d{2})$").matcher(query);
|
Matcher nameYear = Pattern.compile("(.+)\\b\\(?(19\\d{2}|20\\d{2})\\)?$").matcher(query.trim());
|
||||||
if (nameYear.matches()) {
|
if (nameYear.matches()) {
|
||||||
return searchMovie(nameYear.group(1).trim(), Integer.parseInt(nameYear.group(2)), locale, false);
|
return searchMovie(nameYear.group(1).trim(), Integer.parseInt(nameYear.group(2)), locale, false);
|
||||||
} else {
|
} else {
|
||||||
|
@ -79,7 +79,7 @@ public class TMDbClient implements MovieIdentificationService {
|
||||||
|
|
||||||
public List<Movie> searchMovie(String movieName, int movieYear, Locale locale, boolean extendedInfo) throws IOException {
|
public List<Movie> searchMovie(String movieName, int movieYear, Locale locale, boolean extendedInfo) throws IOException {
|
||||||
// ignore queries that are too short to yield good results
|
// ignore queries that are too short to yield good results
|
||||||
if (movieName.length() < 3 && !(movieName.length() > 1 && movieYear > 0)) {
|
if (movieName.length() < 3 && !(movieName.length() >= 1 && movieYear > 0)) {
|
||||||
return emptyList();
|
return emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class TMDbClientTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void searchByNameWithYear() throws Exception {
|
public void searchByNameWithYearShortName() throws Exception {
|
||||||
List<Movie> result = tmdb.searchMovie("Up 2009", Locale.ENGLISH);
|
List<Movie> result = tmdb.searchMovie("Up 2009", Locale.ENGLISH);
|
||||||
Movie movie = result.get(0);
|
Movie movie = result.get(0);
|
||||||
|
|
||||||
|
@ -38,6 +38,17 @@ public class TMDbClientTest {
|
||||||
assertEquals(14160, movie.getTmdbId());
|
assertEquals(14160, movie.getTmdbId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void searchByNameWithYearNumberName() throws Exception {
|
||||||
|
List<Movie> result = tmdb.searchMovie("9 (2009)", Locale.ENGLISH);
|
||||||
|
Movie movie = result.get(0);
|
||||||
|
|
||||||
|
assertEquals("9", movie.getName());
|
||||||
|
assertEquals(2009, movie.getYear());
|
||||||
|
assertEquals(-1, movie.getImdbId());
|
||||||
|
assertEquals(12244, movie.getTmdbId());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void searchByNameGermanResults() throws Exception {
|
public void searchByNameGermanResults() throws Exception {
|
||||||
List<Movie> result = tmdb.searchMovie("East of Eden", Locale.GERMAN);
|
List<Movie> result = tmdb.searchMovie("East of Eden", Locale.GERMAN);
|
||||||
|
|
Loading…
Reference in New Issue