try to convert absolute numbers to SxE numbers when using {s00e00} binding (as best as possible, SxE numbers may not exactly match TheTVDB, but should in most common cases)

This commit is contained in:
Reinhard Pointner 2016-04-23 02:17:31 +08:00
parent 1093431c24
commit 8eff5ec498
1 changed files with 9 additions and 6 deletions

View File

@ -689,22 +689,25 @@ public class MediaBindingBean {
List<Episode> episode = getEpisodes();
for (SearchResult series : WebServices.TheTVDB.search(seriesInfo.getName(), locale)) {
// sanity check search result
if (!series.getEffectiveNames().contains(seriesInfo.getName()))
// sanity check
if (!series.getEffectiveNames().contains(seriesInfo.getName())) {
continue;
List<Episode> airdateEpisodeList = WebServices.TheTVDB.getEpisodeList(series, SortOrder.Airdate, locale);
}
// match by absolute number or airdate if possible, default to absolute number otherwise
List<Episode> airdateEpisodeList = WebServices.TheTVDB.getEpisodeList(series, SortOrder.Airdate, locale);
List<Episode> airdateEpisode = episode.stream().flatMap(abs -> {
return airdateEpisodeList.stream().filter(sxe -> abs.getSpecial() == null && sxe.getSpecial() == null).filter(sxe -> {
return abs.getAbsolute() != null && abs.getAbsolute().equals(sxe.getAbsolute());
});
}).collect(toList());
if (airdateEpisode.size() == episode.size()) {
return airdateEpisode.size() == 1 ? airdateEpisode.get(0) : new MultiEpisode(airdateEpisode);
// sanity check
if (airdateEpisode.size() != episode.size()) {
break;
}
return airdateEpisode.size() == 1 ? airdateEpisode.get(0) : new MultiEpisode(airdateEpisode);
}
}