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:
parent
8a4c5f116c
commit
623fee00cb
@ -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) {
|
||||||
|
@ -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");
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user