diff --git a/sickbeard/dailysearcher.py b/sickbeard/dailysearcher.py
index 4df2176dc326b66a7d1781990afc71fd84fe5413..0d47acd9622e033e196c161bef54b24cf4e4ae90 100644
--- a/sickbeard/dailysearcher.py
+++ b/sickbeard/dailysearcher.py
@@ -88,7 +88,7 @@ class DailySearcher(object):
                 if air_time > curTime:
                     continue
 
-            ep = show.getEpisode(int(sqlEp["season"]), int(sqlEp["episode"]))
+            ep = show.getEpisode(sqlEp["season"], sqlEp["episode"])
             with ep.lock:
                 if ep.season == 0:
                     logger.log(u"New episode " + ep.prettyName() + " airs today, setting status to SKIPPED because is a special season")
diff --git a/sickbeard/providers/newznab.py b/sickbeard/providers/newznab.py
index 58736c70de227522be9d0b0062fee888fe154d71..723bdffaa5cd0cba1ac8fa51760a6237969388ab 100644
--- a/sickbeard/providers/newznab.py
+++ b/sickbeard/providers/newznab.py
@@ -404,7 +404,7 @@ class NewznabProvider(NZBProvider):
         for sqlshow in sqlResults:
             self.show = Show.find(sickbeard.showList, int(sqlshow["showid"]))
             if self.show:
-                curEp = self.show.getEpisode(int(sqlshow["season"]), int(sqlshow["episode"]))
+                curEp = self.show.getEpisode(sqlshow["season"], sqlshow["episode"])
                 searchStrings = self._get_episode_search_strings(curEp, add_string='PROPER|REPACK')
                 for searchString in searchStrings:
                     for item in self.search(searchString):
diff --git a/sickbeard/search.py b/sickbeard/search.py
index 43635288ca64d014eb7ee99a69ba53d2a82c06e2..c481515b98c646acc9acdb99103eb3cee5d25446 100644
--- a/sickbeard/search.py
+++ b/sickbeard/search.py
@@ -355,7 +355,7 @@ def wantedEpisodes(show, fromDate):
             elif cur_quality in allowed_qualities:
                 continue
 
-        epObj = show.getEpisode(int(result["season"]), int(result["episode"]))
+        epObj = show.getEpisode(result["season"], result["episode"])
         epObj.wantedQuality = [i for i in all_qualities if i > cur_quality and i != common.Quality.UNKNOWN]
         wanted.append(epObj)
 
diff --git a/sickbeard/searchBacklog.py b/sickbeard/searchBacklog.py
index be2398b002318beb9df0a5fbc496034b31d1f70f..efd21b5d517742b8c39b1e99905b30be70698eab 100644
--- a/sickbeard/searchBacklog.py
+++ b/sickbeard/searchBacklog.py
@@ -165,7 +165,7 @@ class BacklogSearcher(object):
                 elif cur_quality in allowed_qualities:
                     continue
 
-            ep_obj = show.getEpisode(int(result["season"]), int(result["episode"]))
+            ep_obj = show.getEpisode(result["season"], result["episode"])
 
             if ep_obj.season not in wanted:
                 wanted[ep_obj.season] = [ep_obj]
diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py
index 4155bd8c6294e429cce8af25cf14dfae49395924..d84b0b1a9ed6cc28302af32d2850531cfed88471 100644
--- a/sickbeard/subtitles.py
+++ b/sickbeard/subtitles.py
@@ -497,7 +497,7 @@ class SubtitlesFinder(object):
                     logger.log(u'Show with ID %s not found in the database' % ep_to_sub['showid'], logger.DEBUG)
                     continue
 
-                episode_object = show_object.getEpisode(int(ep_to_sub["season"]), int(ep_to_sub["episode"]))
+                episode_object = show_object.getEpisode(ep_to_sub["season"], ep_to_sub["episode"])
                 if isinstance(episode_object, str):
                     logger.log(u'%s S%02dE%02d not found in the database'
                                % (ep_to_sub['show_name'], ep_to_sub['season'], ep_to_sub['episode']), logger.DEBUG)
diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py
index d1976b88e71e2f98d5e5070cf7fc0475841da077..14d3b92e7aa00fe97f5c7a058005c7609f74db26 100644
--- a/sickbeard/traktChecker.py
+++ b/sickbeard/traktChecker.py
@@ -39,7 +39,7 @@ def setEpisodeToWanted(show, s, e):
     """
     Sets an episode to wanted, only if it is currently skipped
     """
-    epObj = show.getEpisode(int(s), int(e))
+    epObj = show.getEpisode(s, e)
     if epObj:
 
         with epObj.lock:
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index 4bb071446b08f92b62381d8b19bcaaadf926d9cc..eed757342723fc6d7c330def5cf4685029fb58e7 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -224,7 +224,7 @@ class TVShow(object):
 
         ep_list = []
         for cur_result in results:
-            cur_ep = self.getEpisode(int(cur_result["season"]), int(cur_result["episode"]))
+            cur_ep = self.getEpisode(cur_result["season"], cur_result["episode"])
             if not cur_ep:
                 continue
 
@@ -236,7 +236,7 @@ class TVShow(object):
                         "SELECT season, episode FROM tv_episodes WHERE showid = ? AND season = ? AND location = ? AND episode != ? ORDER BY episode ASC",
                         [self.indexerid, cur_ep.season, cur_ep.location, cur_ep.episode])
                     for cur_related_ep in related_eps_result:
-                        related_ep = self.getEpisode(int(cur_related_ep["season"]), int(cur_related_ep["episode"]))
+                        related_ep = self.getEpisode(cur_related_ep["season"], cur_related_ep["episode"])
                         if related_ep and related_ep not in cur_ep.relatedEps:
                             cur_ep.relatedEps.append(related_ep)
             ep_list.append(cur_ep)
@@ -244,6 +244,9 @@ class TVShow(object):
         return ep_list
 
     def getEpisode(self, season=None, episode=None, file=None, noCreate=False, absolute_number=None, forceUpdate=False):
+        season = try_int(season, None)
+        episode = try_int(episode, None)
+        absolute_number = try_int(absolute_number, None)
 
         # if we get an anime get the real season and episode
         if self.is_anime and absolute_number and not season and not episode:
diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py
index 3d407287cae355bf86642cac9147a086b0fe164e..81d1a2ab028e0a10e6c0b54be871bd9b35a81a9f 100644
--- a/sickbeard/webapi.py
+++ b/sickbeard/webapi.py
@@ -789,7 +789,7 @@ class CMD_EpisodeSearch(ApiCall):
             return _responds(RESULT_FAILURE, msg="Show not found")
 
         # retrieve the episode object and fail if we can't get one
-        ep_obj = show_obj.getEpisode(int(self.s), int(self.e))
+        ep_obj = show_obj.getEpisode(self.s, self.e)
         if isinstance(ep_obj, str):
             return _responds(RESULT_FAILURE, msg="Episode not found")
 
@@ -958,7 +958,7 @@ class CMD_SubtitleSearch(ApiCall):
             return _responds(RESULT_FAILURE, msg="Show not found")
 
         # retrieve the episode object and fail if we can't get one
-        ep_obj = show_obj.getEpisode(int(self.s), int(self.e))
+        ep_obj = show_obj.getEpisode(self.s, self.e)
         if isinstance(ep_obj, str):
             return _responds(RESULT_FAILURE, msg="Episode not found")
 
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index beed26dafef3b55db286e88916d936e93f4bc529..841fca286dc73d8f7cb70d8406327bcfb587d9c8 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -666,9 +666,9 @@ class Home(WebRoot):
             return "Invalid show paramaters"
 
         if absolute:
-            epObj = showObj.getEpisode(absolute_number=int(absolute))
+            epObj = showObj.getEpisode(absolute_number=absolute)
         elif season and episode:
-            epObj = showObj.getEpisode(int(season), int(episode))
+            epObj = showObj.getEpisode(season, episode)
         else:
             return "Invalid paramaters"
 
@@ -1742,7 +1742,7 @@ class Home(WebRoot):
                     logger.log(u"Something went wrong when trying to setStatus, epInfo[0]: %s, epInfo[1]: %s" % (epInfo[0], epInfo[1]), logger.DEBUG)
                     continue
 
-                epObj = showObj.getEpisode(int(epInfo[0]), int(epInfo[1]))
+                epObj = showObj.getEpisode(epInfo[0], epInfo[1])
 
                 if not epObj:
                     return self._genericMessage("Error", "Episode couldn't be retrieved")
@@ -1913,11 +1913,11 @@ class Home(WebRoot):
             related_eps_result = myDB.select("SELECT season, episode FROM tv_episodes WHERE location = ? AND episode != ?",
                                              [ep_result[0]["location"], epInfo[1]])
 
-            root_ep_obj = show_obj.getEpisode(int(epInfo[0]), int(epInfo[1]))
+            root_ep_obj = show_obj.getEpisode(epInfo[0], epInfo[1])
             root_ep_obj.relatedEps = []
 
             for cur_related_ep in related_eps_result:
-                related_ep_obj = show_obj.getEpisode(int(cur_related_ep["season"]), int(cur_related_ep["episode"]))
+                related_ep_obj = show_obj.getEpisode(cur_related_ep["season"], cur_related_ep["episode"])
                 if related_ep_obj not in root_ep_obj.relatedEps:
                     root_ep_obj.relatedEps.append(related_ep_obj)
 
@@ -3073,7 +3073,7 @@ class Manage(Home, WebRoot):
                 season, episode = epResult.split('x')
 
                 show = Show.find(sickbeard.showList, int(cur_indexer_id))
-                show.getEpisode(int(season), int(episode)).download_subtitles()
+                show.getEpisode(season, episode).download_subtitles()
 
         return self.redirect('/manage/subtitleMissed/')
 
diff --git a/sickrage/providers/torrent/TorrentProvider.py b/sickrage/providers/torrent/TorrentProvider.py
index 85053687253e5a6c6e3bbe7d9dbc244dcd543b1a..e0b91945b7076427d7c201d006713306c57ea699 100644
--- a/sickrage/providers/torrent/TorrentProvider.py
+++ b/sickrage/providers/torrent/TorrentProvider.py
@@ -54,7 +54,7 @@ class TorrentProvider(GenericProvider):
             show = Show.find(sickbeard.showList, int(result['showid']))
 
             if show:
-                episode = show.getEpisode(int(result['season']), int(result['episode']))
+                episode = show.getEpisode(result['season'], result['episode'])
 
                 for term in self.proper_strings:
                     search_strings = self._get_episode_search_strings(episode, add_string=term)