diff --git a/gui/slick/interfaces/default/config_postProcessing.tmpl b/gui/slick/interfaces/default/config_postProcessing.tmpl
index 0e9807ff..2bb1fbcb 100644
--- a/gui/slick/interfaces/default/config_postProcessing.tmpl
+++ b/gui/slick/interfaces/default/config_postProcessing.tmpl
@@ -82,7 +82,13 @@
What method should be used to put file in the TV directory?
-
+
+
+
+ Skip Remove Detection
+ Skip detection of removed files, so they don't get set to ignored?NOTE: This may mean SickRage misses renames as well
+
+
Extra Scripts
diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py
index 005442fb..bb9db2c2 100644
--- a/sickbeard/__init__.py
+++ b/sickbeard/__init__.py
@@ -207,6 +207,7 @@ PROCESS_METHOD = None
MOVE_ASSOCIATED_FILES = False
TV_DOWNLOAD_DIR = None
UNPACK = False
+SKIP_REMOVED_FILES = False
NZBS = False
NZBS_UID = None
@@ -430,7 +431,7 @@ def initialize(consoleLogging=True):
XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, BACKLOG_FREQUENCY, \
USE_TRAKT, TRAKT_USERNAME, TRAKT_PASSWORD, TRAKT_API, TRAKT_REMOVE_WATCHLIST, TRAKT_USE_WATCHLIST, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktWatchListCheckerSchedular, \
USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_NOTIFY_ONSUBTITLEDOWNLOAD, PLEX_UPDATE_LIBRARY, \
- PLEX_SERVER_HOST, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, BACKLOG_STARTUP, \
+ PLEX_SERVER_HOST, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, BACKLOG_STARTUP, SKIP_REMOVED_FILES, \
showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, UPDATE_SHOWS_ON_START, SORT_ARTICLE, showList, loadingShowList, \
NEWZNAB_DATA, NZBS, NZBS_UID, NZBS_HASH, INDEXER_DEFAULT, USENET_RETENTION, TORRENT_DIR,\
QUALITY_DEFAULT, FLATTEN_FOLDERS_DEFAULT, SUBTITLES_DEFAULT, STATUS_DEFAULT, DAILYSEARCH_STARTUP,\
@@ -604,6 +605,7 @@ def initialize(consoleLogging=True):
DAILYSEARCH_STARTUP = bool(check_setting_int(CFG, 'General', 'dailysearch_startup', 1))
BACKLOG_STARTUP = bool(check_setting_int(CFG, 'General', 'backlog_startup', 1))
+ SKIP_REMOVED_FILES = bool(check_setting_int(CFG, 'General', 'skip_removed_files', 0))
USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500)
@@ -1317,6 +1319,7 @@ def save_config():
new_config['General']['allow_high_priority'] = int(ALLOW_HIGH_PRIORITY)
new_config['General']['dailysearch_startup'] = int(DAILYSEARCH_STARTUP)
new_config['General']['backlog_startup'] = int(BACKLOG_STARTUP)
+ new_config['General']['skip_removed_files'] = int(SKIP_REMOVED_FILES)
new_config['General']['quality_default'] = int(QUALITY_DEFAULT)
new_config['General']['status_default'] = int(STATUS_DEFAULT)
new_config['General']['flatten_folders_default'] = int(FLATTEN_FOLDERS_DEFAULT)
@@ -1686,4 +1689,4 @@ def getEpList(epIDs, showid=None):
curEpObj = curShowObj.getEpisode(int(curEp["season"]), int(curEp["episode"]))
epList.append(curEpObj)
- return epList
\ No newline at end of file
+ return epList
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index ec009272..36542ec1 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -942,20 +942,22 @@ class TVShow(object):
if not ek.ek(os.path.isfile, curLoc) or not os.path.normpath(curLoc).startswith(
os.path.normpath(self.location)):
- with curEp.lock:
- # if it used to have a file associated with it and it doesn't anymore then set it to IGNORED
- if curEp.location and curEp.status in Quality.DOWNLOADED:
- logger.log(str(self.indexerid) + u": Location for " + str(season) + "x" + str(
- episode) + " doesn't exist, removing it and changing our status to IGNORED", logger.DEBUG)
- curEp.status = IGNORED
- curEp.subtitles = list()
- curEp.subtitles_searchcount = 0
- curEp.subtitles_lastsearch = str(datetime.datetime.min)
- curEp.location = ''
- curEp.hasnfo = False
- curEp.hastbn = False
- curEp.release_name = ''
- curEp.saveToDB()
+ # check if downloaded files still exist, update our data if this has changed
+ if not SKIP_REMOVED_FILES:
+ with curEp.lock:
+ # if it used to have a file associated with it and it doesn't anymore then set it to IGNORED
+ if curEp.location and curEp.status in Quality.DOWNLOADED:
+ logger.log(str(self.indexerid) + u": Location for " + str(season) + "x" + str(
+ episode) + " doesn't exist, removing it and changing our status to IGNORED", logger.DEBUG)
+ curEp.status = IGNORED
+ curEp.subtitles = list()
+ curEp.subtitles_searchcount = 0
+ curEp.subtitles_lastsearch = str(datetime.datetime.min)
+ curEp.location = ''
+ curEp.hasnfo = False
+ curEp.hastbn = False
+ curEp.release_name = ''
+ curEp.saveToDB()
else:
# the file exists, set its modify file stamp
if sickbeard.AIRDATE_EPISODES:
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index a9f71da4..7b42e123 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -1120,6 +1120,7 @@ class ConfigSearch:
sickbeard.DAILYSEARCH_STARTUP = config.checkbox_to_value(dailysearch_startup)
sickbeard.BACKLOG_STARTUP = config.checkbox_to_value(backlog_startup)
+ sickbeard.SKIP_REMOVED_FILES = config.checkbox_to_value(skip_removed_files)
sickbeard.SAB_USERNAME = sab_username
sickbeard.SAB_PASSWORD = sab_password
@@ -1173,7 +1174,7 @@ class ConfigPostProcessing:
rename_episodes=None, airdate_episodes=None, unpack=None,
move_associated_files=None, tv_download_dir=None, naming_custom_abd=None,
naming_abd_pattern=None, naming_strip_year=None, use_failed_downloads=None,
- delete_failed=None, extra_scripts=None,
+ delete_failed=None, extra_scripts=None, skip_removed_files=None,
naming_custom_sports=None, naming_sports_pattern=None):
results = []