diff --git a/source/net/sourceforge/filebot/format/EpisodeFormatBindingBean.java b/source/net/sourceforge/filebot/format/EpisodeFormatBindingBean.java index 686d1f2c..fdfc84c0 100644 --- a/source/net/sourceforge/filebot/format/EpisodeFormatBindingBean.java +++ b/source/net/sourceforge/filebot/format/EpisodeFormatBindingBean.java @@ -164,15 +164,11 @@ public class EpisodeFormatBindingBean { private String getMediaInfo(StreamKind streamKind, int streamNumber, String... keys) { - MediaInfo mediaInfo = getMediaInfo(); - - if (mediaInfo != null) { - for (String key : keys) { - String value = mediaInfo.get(streamKind, streamNumber, key); - - if (value.length() > 0) { - return value; - } + for (String key : keys) { + String value = getMediaInfo().get(streamKind, streamNumber, key); + + if (value.length() > 0) { + return value; } } diff --git a/source/net/sourceforge/filebot/web/TVDotComClient.java b/source/net/sourceforge/filebot/web/TVDotComClient.java index 1cc00d18..acfd9ccc 100644 --- a/source/net/sourceforge/filebot/web/TVDotComClient.java +++ b/source/net/sourceforge/filebot/web/TVDotComClient.java @@ -89,7 +89,7 @@ public class TVDotComClient implements EpisodeListProvider { Document dom = getHtmlDocument(getEpisodeListLink(searchResult, 1).toURL()); // seasons are ordered in reverse, first element is latest season - String latestSeasonString = selectString("id('eps_table')//*[starts-with(text(),'Season:')]/*[1]/text()", dom); + String latestSeasonString = selectString("id('episode_list_header')//*[contains(@class, 'number')]", dom); if (latestSeasonString.isEmpty()) { // assume single season series @@ -138,33 +138,33 @@ public class TVDotComClient implements EpisodeListProvider { } - private List getEpisodeList(SearchResult searchResult, int seasonNumber, Document dom) { + private List getEpisodeList(SearchResult searchResult, int season, Document dom) { - List nodes = selectNodes("id('eps_table')//TD[@class='ep_title']/parent::TR", dom); + List nodes = selectNodes("id('episode_listing')//*[@class='episode']", dom); Integer episodeOffset = null; - ArrayList episodes = new ArrayList(nodes.size()); + List episodes = new ArrayList(nodes.size()); for (Node node : nodes) { - String episode = selectString("./TD[1]", node); - String title = selectString("./TD[2]//A", node); - String season = String.valueOf(seasonNumber); + String episodeNumber = selectString("./*[@class='number']", node); + String title = selectString("./*[@class='title']", node); + String seasonNumber = String.valueOf(season); try { // convert the absolute episode number to the season episode number - int n = Integer.parseInt(episode); + int n = Integer.parseInt(episodeNumber); if (episodeOffset == null) - episodeOffset = n - 1; + episodeOffset = (n <= 1) ? 0 : n - 1; - episode = String.valueOf(n - episodeOffset); + episodeNumber = String.valueOf(n - episodeOffset); } catch (NumberFormatException e) { // episode may be "Pilot", "Special", "TV Movie" ... - season = null; + seasonNumber = null; } - episodes.add(new Episode(searchResult.getName(), season, episode, title)); + episodes.add(new Episode(searchResult.getName(), seasonNumber, episodeNumber, title)); } return episodes; diff --git a/test/net/sourceforge/filebot/web/TVDotComClientTest.java b/test/net/sourceforge/filebot/web/TVDotComClientTest.java index a2ed4d0c..21eff471 100644 --- a/test/net/sourceforge/filebot/web/TVDotComClientTest.java +++ b/test/net/sourceforge/filebot/web/TVDotComClientTest.java @@ -79,8 +79,8 @@ public class TVDotComClientTest { assertEquals("Buffy the Vampire Slayer", first.getSeriesName()); assertEquals("Unaired Pilot", first.getTitle()); - assertEquals("Pilot", first.getEpisodeNumber()); - assertEquals(null, first.getSeasonNumber()); + assertEquals("0", first.getEpisodeNumber()); + assertEquals("1", first.getSeasonNumber()); }