* add special numbering for special episodes
This commit is contained in:
parent
b9027d6abc
commit
ee76deccd0
|
@ -12,6 +12,7 @@ public class Episode implements Serializable {
|
|||
private String season;
|
||||
private String episode;
|
||||
private String title;
|
||||
private String special;
|
||||
|
||||
|
||||
protected Episode() {
|
||||
|
@ -20,15 +21,21 @@ public class Episode implements Serializable {
|
|||
|
||||
|
||||
public Episode(String seriesName, int season, int episode, String title) {
|
||||
this(seriesName, String.valueOf(season), String.valueOf(episode), title);
|
||||
this(seriesName, String.valueOf(season), String.valueOf(episode), title, null);
|
||||
}
|
||||
|
||||
|
||||
public Episode(String seriesName, String season, String episode, String title) {
|
||||
this(seriesName, season, episode, title, null);
|
||||
}
|
||||
|
||||
|
||||
public Episode(String seriesName, String season, String episode, String title, String special) {
|
||||
this.seriesName = seriesName;
|
||||
this.season = season;
|
||||
this.episode = episode;
|
||||
this.title = title;
|
||||
this.special = special;
|
||||
}
|
||||
|
||||
|
||||
|
@ -60,6 +67,20 @@ public class Episode implements Serializable {
|
|||
}
|
||||
|
||||
|
||||
public String getSpecial() {
|
||||
return special;
|
||||
}
|
||||
|
||||
|
||||
public Integer getSpecialNumber() {
|
||||
try {
|
||||
return new Integer(special);
|
||||
} catch (NumberFormatException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getSeriesName() {
|
||||
return seriesName;
|
||||
}
|
||||
|
@ -74,7 +95,7 @@ public class Episode implements Serializable {
|
|||
public boolean equals(Object obj) {
|
||||
if (obj instanceof Episode) {
|
||||
Episode other = (Episode) obj;
|
||||
return equals(season, other.season) && equals(episode, other.episode) && equals(seriesName, other.seriesName) && equals(title, other.title);
|
||||
return equals(season, other.season) && equals(episode, other.episode) && equals(seriesName, other.seriesName) && equals(title, other.title) && equals(special, other.special);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -91,7 +112,7 @@ public class Episode implements Serializable {
|
|||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Arrays.hashCode(new Object[] { seriesName, season, episode, title });
|
||||
return Arrays.hashCode(new Object[] { seriesName, season, episode, title, special });
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ public class TVRageClient implements EpisodeListProvider {
|
|||
String seriesName = selectString("Show/name", dom);
|
||||
|
||||
List<Episode> episodes = new ArrayList<Episode>(25);
|
||||
List<Episode> specials = new ArrayList<Episode>(5);
|
||||
|
||||
// episodes and specials
|
||||
for (Node node : selectNodes("//episode", dom)) {
|
||||
|
@ -89,13 +90,19 @@ public class TVRageClient implements EpisodeListProvider {
|
|||
|
||||
// check if we have season and episode number, if not it must be a special episode
|
||||
if (episodeNumber == null || seasonNumber == null) {
|
||||
episodeNumber = "Special";
|
||||
// handle as special episode
|
||||
seasonNumber = getTextContent("season", node);
|
||||
int specialNumber = filterBySeason(specials, Integer.parseInt(seasonNumber)).size() + 1;
|
||||
specials.add(new Episode(seriesName, seasonNumber, "Special " + specialNumber, title, Integer.toString(specialNumber)));
|
||||
} else {
|
||||
// handle as normal episode
|
||||
episodes.add(new Episode(seriesName, seasonNumber, episodeNumber, title));
|
||||
}
|
||||
|
||||
episodes.add(new Episode(seriesName, seasonNumber, episodeNumber, title));
|
||||
}
|
||||
|
||||
// add specials at the end
|
||||
episodes.addAll(specials);
|
||||
|
||||
return episodes;
|
||||
}
|
||||
|
||||
|
|
|
@ -127,22 +127,44 @@ public class TheTVDBClient implements EpisodeListProvider {
|
|||
String seriesName = selectString("Data/Series/SeriesName", seriesRecord);
|
||||
|
||||
List<Node> nodes = selectNodes("Data/Episode", seriesRecord);
|
||||
|
||||
episodes = new ArrayList<Episode>(nodes.size());
|
||||
List<Episode> specials = new ArrayList<Episode>(5);
|
||||
|
||||
for (Node node : nodes) {
|
||||
String episodeName = getTextContent("EpisodeName", node);
|
||||
String episodeNumber = getTextContent("Combined_episodenumber", node);
|
||||
String seasonNumber = getTextContent("Combined_season", node);
|
||||
String episodeNumber = getTextContent("EpisodeNumber", node);
|
||||
String seasonNumber = getTextContent("SeasonNumber", node);
|
||||
|
||||
episodes.add(new Episode(seriesName, seasonNumber, episodeNumber, episodeName));
|
||||
if (seasonNumber.equals("0")) {
|
||||
// handle as special episode
|
||||
String airsBefore = getTextContent("airsbefore_season", node);
|
||||
|
||||
if (airsBefore != null && airsBefore.matches("\\d+")) {
|
||||
seasonNumber = airsBefore;
|
||||
}
|
||||
|
||||
int specialNumber = filterBySeason(specials, Integer.parseInt(seasonNumber)).size() + 1;
|
||||
specials.add(new Episode(seriesName, seasonNumber, "Special " + specialNumber, episodeName, Integer.toString(specialNumber)));
|
||||
} else {
|
||||
// handle as normal episode
|
||||
episodes.add(new Episode(seriesName, seasonNumber, episodeNumber, episodeName));
|
||||
}
|
||||
|
||||
if (episodeNumber.equals("1")) {
|
||||
// cache seasonId for each season (always when we are at the first episode)
|
||||
// because it might be required by getEpisodeListLink
|
||||
cache.putSeasonId(searchResult.getSeriesId(), Integer.parseInt(seasonNumber), Integer.parseInt(getTextContent("seasonid", node)));
|
||||
try {
|
||||
// cache seasonId for each season (always when we are at the first episode)
|
||||
// because it might be required by getEpisodeListLink
|
||||
cache.putSeasonId(searchResult.getSeriesId(), Integer.parseInt(seasonNumber), Integer.parseInt(getTextContent("seasonid", node)));
|
||||
} catch (NumberFormatException e) {
|
||||
// season/episode is not a number, just ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add specials at the end
|
||||
episodes.addAll(specials);
|
||||
|
||||
cache.putEpisodeList(searchResult.getSeriesId(), language, episodes);
|
||||
return episodes;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue