1
0
mirror of https://github.com/mitb-archive/filebot synced 2025-03-09 22:09:47 -04:00

Coerce episode number [1.1] to [1]

This commit is contained in:
Reinhard Pointner 2018-07-02 14:30:03 +07:00
parent 8a4c5f116c
commit 623fee00cb
4 changed files with 17 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import static java.util.Arrays.*;
import static java.util.Collections.*;
import static net.filebot.Logging.*;
import java.math.BigDecimal;
import java.util.EnumMap;
import java.util.Map;
import java.util.function.Function;
@ -88,10 +89,14 @@ public class JsonUtilities {
return getStringValue(node, key, Integer::parseInt);
}
public static Double getDecimal(Object node, String key) {
public static Double getDouble(Object node, String key) {
return getStringValue(node, key, Double::parseDouble);
}
public static BigDecimal getDecimal(Object node, String key) {
return getStringValue(node, key, BigDecimal::new);
}
public static <V> V getStringValue(Object node, String key, Function<String, V> converter) {
String value = getString(node, key);
if (value != null) {

View File

@ -49,7 +49,7 @@ public class FanartTVClient implements Datasource, ArtworkProvider {
try {
String url = getString(it, "url");
Locale language = getStringValue(it, "lang", Locale::new);
Double likes = getDecimal(it, "likes");
Double likes = getDouble(it, "likes");
String season = getString(it, "season");
String discType = getString(it, "disc_type");

View File

@ -96,7 +96,7 @@ public class TMDbClient implements MovieIdentificationService, ArtworkProvider {
return streamJsonObjects(response, "results").map(it -> {
int id = -1, year = -1;
try {
id = getDecimal(it, "id").intValue();
id = getDouble(it, "id").intValue();
year = matchInteger(getString(it, "release_date")); // release date is often missing
} catch (Exception e) {
debug.fine(format("Missing data: release_date => %s", it));

View File

@ -162,7 +162,7 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
info.setNetwork(getString(data, "network"));
info.setStatus(getString(data, "status"));
info.setRating(getDecimal(data, "siteRating"));
info.setRating(getDouble(data, "siteRating"));
info.setRatingCount(getInteger(data, "siteRatingCount"));
info.setRuntime(matchInteger(getString(data, "runtime")));
@ -226,12 +226,16 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
// adjust for forced absolute numbering (if possible)
if (sortOrder == SortOrder.DVD) {
Integer dvdSeasonNumber = getInteger(it, "dvdSeason");
Integer dvdEpisodeNumber = getInteger(it, "dvdEpisodeNumber");
Number dvdEpisodeNumber = getDecimal(it, "dvdEpisodeNumber"); // e.g. 4.2
// require both values to be valid integer numbers
if (dvdSeasonNumber != null && dvdEpisodeNumber != null) {
seasonNumber = dvdSeasonNumber;
episodeNumber = dvdEpisodeNumber;
episodeNumber = dvdEpisodeNumber.intValue();
if (episodeNumber.doubleValue() != dvdEpisodeNumber.doubleValue()) {
debug.finest(format("[%s] Coerce episode number [%s] to [%s]", info, dvdEpisodeNumber, episodeNumber));
}
}
} else if (sortOrder == SortOrder.Absolute && absoluteNumber != null && absoluteNumber > 0) {
seasonNumber = null;
@ -292,7 +296,7 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
String subKey = getString(it, "subKey");
String resolution = getString(it, "resolution");
URL url = getStringValue(it, "fileName", this::resolveImage);
Double rating = getDecimal(getMap(it, "ratingsInfo"), "average");
Double rating = getDouble(getMap(it, "ratingsInfo"), "average");
return new Artwork(Stream.of(category, subKey, resolution), url, locale, rating);
}).sorted(Artwork.RATING_ORDER).collect(toList());
@ -337,7 +341,7 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
Integer seriesId = getInteger(data, "seriesId");
String overview = getString(data, "overview");
Double rating = getDecimal(data, "siteRating");
Double rating = getDouble(data, "siteRating");
Integer votes = getInteger(data, "siteRatingCount");
List<Person> people = new ArrayList<Person>();