1
0
mirror of https://github.com/mitb-archive/filebot synced 2025-03-10 06:20:27 -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 java.util.Collections.*;
import static net.filebot.Logging.*; import static net.filebot.Logging.*;
import java.math.BigDecimal;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
@ -88,10 +89,14 @@ public class JsonUtilities {
return getStringValue(node, key, Integer::parseInt); 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); 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) { public static <V> V getStringValue(Object node, String key, Function<String, V> converter) {
String value = getString(node, key); String value = getString(node, key);
if (value != null) { if (value != null) {

View File

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

View File

@ -96,7 +96,7 @@ public class TMDbClient implements MovieIdentificationService, ArtworkProvider {
return streamJsonObjects(response, "results").map(it -> { return streamJsonObjects(response, "results").map(it -> {
int id = -1, year = -1; int id = -1, year = -1;
try { try {
id = getDecimal(it, "id").intValue(); id = getDouble(it, "id").intValue();
year = matchInteger(getString(it, "release_date")); // release date is often missing year = matchInteger(getString(it, "release_date")); // release date is often missing
} catch (Exception e) { } catch (Exception e) {
debug.fine(format("Missing data: release_date => %s", it)); 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.setNetwork(getString(data, "network"));
info.setStatus(getString(data, "status")); info.setStatus(getString(data, "status"));
info.setRating(getDecimal(data, "siteRating")); info.setRating(getDouble(data, "siteRating"));
info.setRatingCount(getInteger(data, "siteRatingCount")); info.setRatingCount(getInteger(data, "siteRatingCount"));
info.setRuntime(matchInteger(getString(data, "runtime"))); info.setRuntime(matchInteger(getString(data, "runtime")));
@ -226,12 +226,16 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
// adjust for forced absolute numbering (if possible) // adjust for forced absolute numbering (if possible)
if (sortOrder == SortOrder.DVD) { if (sortOrder == SortOrder.DVD) {
Integer dvdSeasonNumber = getInteger(it, "dvdSeason"); 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 // require both values to be valid integer numbers
if (dvdSeasonNumber != null && dvdEpisodeNumber != null) { if (dvdSeasonNumber != null && dvdEpisodeNumber != null) {
seasonNumber = dvdSeasonNumber; 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) { } else if (sortOrder == SortOrder.Absolute && absoluteNumber != null && absoluteNumber > 0) {
seasonNumber = null; seasonNumber = null;
@ -292,7 +296,7 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
String subKey = getString(it, "subKey"); String subKey = getString(it, "subKey");
String resolution = getString(it, "resolution"); String resolution = getString(it, "resolution");
URL url = getStringValue(it, "fileName", this::resolveImage); 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); return new Artwork(Stream.of(category, subKey, resolution), url, locale, rating);
}).sorted(Artwork.RATING_ORDER).collect(toList()); }).sorted(Artwork.RATING_ORDER).collect(toList());
@ -337,7 +341,7 @@ public class TheTVDBClient extends AbstractEpisodeListProvider implements Artwor
Integer seriesId = getInteger(data, "seriesId"); Integer seriesId = getInteger(data, "seriesId");
String overview = getString(data, "overview"); String overview = getString(data, "overview");
Double rating = getDecimal(data, "siteRating"); Double rating = getDouble(data, "siteRating");
Integer votes = getInteger(data, "siteRatingCount"); Integer votes = getInteger(data, "siteRatingCount");
List<Person> people = new ArrayList<Person>(); List<Person> people = new ArrayList<Person>();