From 15815c41ab3d9c6ba8769ba035fabdbe683746a3 Mon Sep 17 00:00:00 2001 From: echel0n Date: Sun, 11 May 2014 15:58:03 -0700 Subject: [PATCH 1/6] Fix for imdbinfo key error year --- gui/slick/interfaces/default/displayShow.tmpl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index df580392..a510a67d 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -58,7 +58,9 @@ #end for #end if - ($show.imdb_info['year']) - $show.imdb_info['runtimes'] min - $show.imdb_info['genres'].replace('|',' | ') + #if 'year' in $show.imdb_info: + ($show.imdb_info['year']) - $show.imdb_info['runtimes'] min - $show.imdb_info['genres'].replace('|',' | ') + #end if [imdb] $sickbeard.indexerApi($show.indexer).name From 91729bdab75c290dec75eba3b0501f33e34f702e Mon Sep 17 00:00:00 2001 From: Nils Vogels Date: Mon, 12 May 2014 01:15:24 +0200 Subject: [PATCH 2/6] Adding in Mede8er metadata (backport from Midgetspy) Original commit by itofzo midgetspy/Sick-Beard@34bf07d487f4d9cd3a36a51976af7cdd803868b1 --- sickbeard/__init__.py | 6 +- sickbeard/config.py | 7 + sickbeard/metadata/__init__.py | 4 +- sickbeard/metadata/mede8er.py | 356 +++++++++++++++++++++++++++++++++ sickbeard/webserve.py | 4 +- 5 files changed, 373 insertions(+), 4 deletions(-) create mode 100644 sickbeard/metadata/mede8er.py diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index 78edcf26..393533a7 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -142,6 +142,7 @@ METADATA_MEDIABROWSER = None METADATA_PS3 = None METADATA_WDTV = None METADATA_TIVO = None +METADATA_MEDE8ER = None QUALITY_DEFAULT = None STATUS_DEFAULT = None @@ -525,7 +526,7 @@ def initialize(consoleLogging=True): USE_LISTVIEW, METADATA_XBMC, METADATA_XBMC_12PLUS, METADATA_MEDIABROWSER, METADATA_PS3, metadata_provider_dict, \ NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, MOVE_ASSOCIATED_FILES, \ GUI_NAME, HOME_LAYOUT, HISTORY_LAYOUT, DISPLAY_SHOW_SPECIALS, COMING_EPS_LAYOUT, COMING_EPS_SORT, COMING_EPS_DISPLAY_PAUSED, COMING_EPS_MISSED_RANGE, DATE_PRESET, TIME_PRESET, TIME_PRESET_W_SECONDS, \ - METADATA_WDTV, METADATA_TIVO, IGNORE_WORDS, CALENDAR_UNPROTECTED, CREATE_MISSING_SHOW_DIRS, \ + METADATA_WDTV, METADATA_TIVO, METADATA_MEDE8ER, IGNORE_WORDS, CALENDAR_UNPROTECTED, CREATE_MISSING_SHOW_DIRS, \ ADD_SHOWS_WO_DIR, USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_SERVICES_LIST, SUBTITLES_SERVICES_ENABLED, SUBTITLES_HISTORY, SUBTITLES_FINDER_FREQUENCY, subtitlesFinderScheduler, \ USE_FAILED_DOWNLOADS, DELETE_FAILED, ANON_REDIRECT, LOCALHOST_IP, TMDB_API_KEY, DEBUG, PROXY_SETTING, NUM_OF_THREADS @@ -987,6 +988,7 @@ def initialize(consoleLogging=True): METADATA_PS3 = check_setting_str(CFG, 'General', 'metadata_ps3', '0|0|0|0|0|0|0|0|0|0') METADATA_WDTV = check_setting_str(CFG, 'General', 'metadata_wdtv', '0|0|0|0|0|0|0|0|0|0') METADATA_TIVO = check_setting_str(CFG, 'General', 'metadata_tivo', '0|0|0|0|0|0|0|0|0|0') + METADATA_MEDE8ER = check_setting_str(CFG, 'General', 'metadata_mede8er', '0|0|0|0|0|0|0|0|0|0') GUI_NAME = check_setting_str(CFG, 'GUI', 'gui_name', 'slick') @@ -1038,6 +1040,7 @@ def initialize(consoleLogging=True): (METADATA_PS3, metadata.ps3), (METADATA_WDTV, metadata.wdtv), (METADATA_TIVO, metadata.tivo), + (METADATA_MEDE8ER, metadata.mede8er), ]: (cur_metadata_config, cur_metadata_class) = cur_metadata_tuple tmp_provider = cur_metadata_class.metadata_class() @@ -1394,6 +1397,7 @@ def save_config(): new_config['General']['metadata_ps3'] = METADATA_PS3 new_config['General']['metadata_wdtv'] = METADATA_WDTV new_config['General']['metadata_tivo'] = METADATA_TIVO + new_config['General']['metadata_mede8er'] = METADATA_MEDE8ER new_config['General']['cache_dir'] = ACTUAL_CACHE_DIR if ACTUAL_CACHE_DIR else 'cache' new_config['General']['root_dirs'] = ROOT_DIRS if ROOT_DIRS else '' diff --git a/sickbeard/config.py b/sickbeard/config.py index c4b5a6e9..4602cf27 100644 --- a/sickbeard/config.py +++ b/sickbeard/config.py @@ -606,6 +606,7 @@ class ConfigMigrator(): metadata_ps3 = check_setting_str(self.config_obj, 'General', 'metadata_ps3', '0|0|0|0|0|0') metadata_wdtv = check_setting_str(self.config_obj, 'General', 'metadata_wdtv', '0|0|0|0|0|0') metadata_tivo = check_setting_str(self.config_obj, 'General', 'metadata_tivo', '0|0|0|0|0|0') + metadata_mede8er = check_setting_str(self.config_obj, 'General', 'metadata_mede8er', '0|0|0|0|0|0') use_banner = bool(check_setting_int(self.config_obj, 'General', 'use_banner', 0)) @@ -627,6 +628,11 @@ class ConfigMigrator(): metadata = '|'.join(cur_metadata) logger.log(u"Upgrading " + metadata_name + " metadata, new value: " + metadata) + elif len(cur_metadata) == 10: + + metadata = '|'.join(cur_metadata) + logger.log(u"Keeping " + metadata_name + " metadata, value: " + metadata) + else: logger.log(u"Skipping " + metadata_name + " metadata: '" + metadata + "', incorrect format", logger.ERROR) @@ -641,3 +647,4 @@ class ConfigMigrator(): sickbeard.METADATA_PS3 = _migrate_metadata(metadata_ps3, 'PS3', use_banner) sickbeard.METADATA_WDTV = _migrate_metadata(metadata_wdtv, 'WDTV', use_banner) sickbeard.METADATA_TIVO = _migrate_metadata(metadata_tivo, 'TIVO', use_banner) + sickbeard.METADATA_MEDE8ER = _migrate_metadata(metadata_mede8er, 'Mede8er', use_banner) diff --git a/sickbeard/metadata/__init__.py b/sickbeard/metadata/__init__.py index 2a6d405c..26585643 100644 --- a/sickbeard/metadata/__init__.py +++ b/sickbeard/metadata/__init__.py @@ -16,10 +16,10 @@ # You should have received a copy of the GNU General Public License # along with Sick Beard. If not, see . -__all__ = ['generic', 'helpers', 'xbmc', 'xbmc_12plus', 'mediabrowser', 'ps3', 'wdtv', 'tivo'] +__all__ = ['generic', 'helpers', 'xbmc', 'xbmc_12plus', 'mediabrowser', 'ps3', 'wdtv', 'tivo', 'mede8er'] import sys -import xbmc, xbmc_12plus, mediabrowser, ps3, wdtv, tivo +import xbmc, xbmc_12plus, mediabrowser, ps3, wdtv, tivo, mede8er def available_generators(): diff --git a/sickbeard/metadata/mede8er.py b/sickbeard/metadata/mede8er.py new file mode 100644 index 00000000..d775fdd4 --- /dev/null +++ b/sickbeard/metadata/mede8er.py @@ -0,0 +1,356 @@ +# Author: Nic Wolfe +# URL: http://code.google.com/p/sickbeard/ +# +# This file is part of Sick Beard. +# +# Sick Beard is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Sick Beard is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Sick Beard. If not, see . + +import datetime + +import sickbeard + +import mediabrowser + +from sickbeard import logger, exceptions, helpers +from lib.tvdb_api import tvdb_api, tvdb_exceptions +from sickbeard.exceptions import ex + +try: + import xml.etree.cElementTree as etree +except ImportError: + import elementtree.ElementTree as etree + + +class Mede8erMetadata(mediabrowser.MediaBrowserMetadata): + """ + Metadata generation class for Mede8er based on the MediaBrowser. + + The following file structure is used: + + show_root/series.xml (show metadata) + show_root/folder.jpg (poster) + show_root/fanart.jpg (fanart) + show_root/Season ##/folder.jpg (season thumb) + show_root/Season ##/filename.ext (*) + show_root/Season ##/filename.xml (episode metadata) + show_root/Season ##/filename.jpg (episode thumb) + """ + + def __init__(self, + show_metadata=False, + episode_metadata=False, + fanart=False, + poster=False, + banner=False, + episode_thumbnails=False, + season_posters=False, + season_banners=False, + season_all_poster=False, + season_all_banner=False): + + mediabrowser.MediaBrowserMetadata.__init__(self, + show_metadata, + episode_metadata, + fanart, + poster, + banner, + episode_thumbnails, + season_posters, + season_banners, + season_all_poster, + season_all_banner) + + self.name = "Mede8er" + + self.fanart_name = "fanart.jpg" + + # web-ui metadata template + # self.eg_show_metadata = "series.xml" + self.eg_episode_metadata = "Season##\\filename.xml" + self.eg_fanart = "fanart.jpg" + # self.eg_poster = "folder.jpg" + # self.eg_banner = "banner.jpg" + self.eg_episode_thumbnails = "Season##\\filename.jpg" + # self.eg_season_posters = "Season##\\folder.jpg" + # self.eg_season_banners = "Season##\\banner.jpg" + # self.eg_season_all_poster = "not supported" + # self.eg_season_all_banner = "not supported" + + def get_episode_file_path(self, ep_obj): + return helpers.replaceExtension(ep_obj.location, self._ep_nfo_extension) + + def get_episode_thumb_path(self, ep_obj): + return helpers.replaceExtension(ep_obj.location, 'jpg') + + def _show_data(self, show_obj): + """ + Creates an elementTree XML structure for a MediaBrowser-style series.xml + returns the resulting data object. + + show_obj: a TVShow instance to create the NFO for + """ + + tvdb_lang = show_obj.lang + # There's gotta be a better way of doing this but we don't wanna + # change the language value elsewhere + ltvdb_api_parms = sickbeard.TVDB_API_PARMS.copy() + + if tvdb_lang and not tvdb_lang == 'en': + ltvdb_api_parms['language'] = tvdb_lang + + t = tvdb_api.Tvdb(actors=True, **ltvdb_api_parms) + + rootNode = etree.Element("details") + tv_node = etree.SubElement(rootNode, "movie") + tv_node.attrib["isExtra"] = "false" + tv_node.attrib["isSet"] = "false" + tv_node.attrib["isTV"] = "true" + + try: + myShow = t[int(show_obj.indexerid)] + except tvdb_exceptions.tvdb_shownotfound: + logger.log(u"Unable to find show with id " + str(show_obj.indexerid) + " on tvdb, skipping it", logger.ERROR) + raise + + except tvdb_exceptions.tvdb_error: + logger.log(u"TVDB is down, can't use its data to make the NFO", logger.ERROR) + raise + + # check for title and id + try: + if myShow['seriesname'] == None or myShow['seriesname'] == "" or myShow['id'] == None or myShow['id'] == "": + logger.log(u"Incomplete info for show with id " + str(show_obj.indexerid) + " on tvdb, skipping it", logger.ERROR) + return False + except tvdb_exceptions.tvdb_attributenotfound: + logger.log(u"Incomplete info for show with id " + str(show_obj.indexerid) + " on tvdb, skipping it", logger.ERROR) + return False + + SeriesName = etree.SubElement(tv_node, "title") + if myShow['seriesname'] != None: + SeriesName.text = myShow['seriesname'] + else: + SeriesName.text = "" + + Genres = etree.SubElement(tv_node, "genres") + if myShow["genre"] != None: + for genre in myShow['genre'].split('|'): + if genre and genre.strip(): + cur_genre = etree.SubElement(Genres, "Genre") + cur_genre.text = genre.strip() + + FirstAired = etree.SubElement(tv_node, "premiered") + if myShow['firstaired'] != None: + FirstAired.text = myShow['firstaired'] + + year = etree.SubElement(tv_node, "year") + if myShow["firstaired"] != None: + try: + year_text = str(datetime.datetime.strptime(myShow["firstaired"], '%Y-%m-%d').year) + if year_text: + year.text = year_text + except: + pass + + if myShow['rating'] != None: + try: + rating = int((float(myShow['rating']) * 10)) + except ValueError: + rating = 0 + Rating = etree.SubElement(tv_node, "rating") + rating_text = str(rating) + if rating_text != None: + Rating.text = rating_text + + Status = etree.SubElement(tv_node, "status") + if myShow['status'] != None: + Status.text = myShow['status'] + + mpaa = etree.SubElement(tv_node, "mpaa") + if myShow["contentrating"] != None: + mpaa.text = myShow["contentrating"] + + IMDB_ID = etree.SubElement(tv_node, "id") + if myShow['imdb_id'] != None: + IMDB_ID.attrib["moviedb"] = "imdb" + IMDB_ID.text = myShow['imdb_id'] + + tvdbid = etree.SubElement(tv_node, "indexerid") + if myShow['id'] != None: + tvdbid.text = myShow['id'] + + Runtime = etree.SubElement(tv_node, "runtime") + if myShow['runtime'] != None: + Runtime.text = myShow['runtime'] + + cast = etree.SubElement(tv_node, "cast") + + if myShow["_actors"] != None: + for actor in myShow['_actors']: + cur_actor_name_text = actor['name'] + + if cur_actor_name_text != None and cur_actor_name_text.strip(): + cur_actor = etree.SubElement(cast, "actor") + cur_actor.text = cur_actor_name_text.strip() + + helpers.indentXML(rootNode) + + data = etree.ElementTree(rootNode) + + return data + + def _ep_data(self, ep_obj): + """ + Creates an elementTree XML structure for a MediaBrowser style episode.xml + and returns the resulting data object. + + show_obj: a TVShow instance to create the NFO for + """ + + eps_to_write = [ep_obj] + ep_obj.relatedEps + + tvdb_lang = ep_obj.show.lang + + try: + # There's gotta be a better way of doing this but we don't wanna + # change the language value elsewhere + ltvdb_api_parms = sickbeard.TVDB_API_PARMS.copy() + + if tvdb_lang and not tvdb_lang == 'en': + ltvdb_api_parms['language'] = tvdb_lang + + t = tvdb_api.Tvdb(actors=True, **ltvdb_api_parms) + myShow = t[ep_obj.show.indexerid] + except tvdb_exceptions.tvdb_shownotfound, e: + raise exceptions.ShowNotFoundException(e.message) + except tvdb_exceptions.tvdb_error, e: + logger.log(u"Unable to connect to TVDB while creating meta files - skipping - " + ex(e), logger.ERROR) + return False + + rootNode = etree.Element("details") + movie = etree.SubElement(rootNode, "movie") + + movie.attrib["isExtra"] = "false" + movie.attrib["isSet"] = "false" + movie.attrib["isTV"] = "true" + + # write an MediaBrowser XML containing info for all matching episodes + for curEpToWrite in eps_to_write: + + try: + myEp = myShow[curEpToWrite.season][curEpToWrite.episode] + except (tvdb_exceptions.tvdb_episodenotfound, tvdb_exceptions.tvdb_seasonnotfound): + logger.log(u"Unable to find episode " + str(curEpToWrite.season) + "x" + str(curEpToWrite.episode) + " on tvdb... has it been removed? Should I delete from db?") + return None + + if curEpToWrite == ep_obj: + # root (or single) episode + + # default to today's date for specials if firstaired is not set + if myEp['firstaired'] == None and ep_obj.season == 0: + myEp['firstaired'] = str(datetime.date.fromordinal(1)) + + if myEp['episodename'] == None or myEp['firstaired'] == None: + return None + + episode = movie + + EpisodeName = etree.SubElement(episode, "title") + if curEpToWrite.name != None: + EpisodeName.text = curEpToWrite.name + else: + EpisodeName.text = "" + + SeasonNumber = etree.SubElement(episode, "season") + SeasonNumber.text = str(curEpToWrite.season) + + EpisodeNumber = etree.SubElement(episode, "episode") + EpisodeNumber.text = str(ep_obj.episode) + + year = etree.SubElement(episode, "year") + if myShow["firstaired"] != None: + try: + year_text = str(datetime.datetime.strptime(myShow["firstaired"], '%Y-%m-%d').year) + if year_text: + year.text = year_text + except: + pass + + plot = etree.SubElement(episode, "plot") + if myShow["overview"] != None: + plot.text = myShow["overview"] + + Overview = etree.SubElement(episode, "episodeplot") + if curEpToWrite.description != None: + Overview.text = curEpToWrite.description + else: + Overview.text = "" + + mpaa = etree.SubElement(episode, "mpaa") + if myShow["contentrating"] != None: + mpaa.text = myShow["contentrating"] + + if not ep_obj.relatedEps: + if myEp["rating"] != None: + try: + rating = int((float(myEp['rating']) * 10)) + except ValueError: + rating = 0 + Rating = etree.SubElement(episode, "rating") + rating_text = str(rating) + if rating_text != None: + Rating.text = rating_text + + director = etree.SubElement(episode, "director") + director_text = myEp['director'] + if director_text != None: + director.text = director_text + + credits = etree.SubElement(episode, "credits") + credits_text = myEp['writer'] + if credits_text != None: + credits.text = credits_text + + cast = etree.SubElement(episode, "cast") + + if myShow["_actors"] != None: + for actor in myShow['_actors']: + cur_actor_name_text = actor['name'] + + if cur_actor_name_text != None and cur_actor_name_text.strip(): + cur_actor = etree.SubElement(cast, "actor") + cur_actor.text = cur_actor_name_text.strip() + + else: + # append data from (if any) related episodes + + if curEpToWrite.name: + if not EpisodeName.text: + EpisodeName.text = curEpToWrite.name + else: + EpisodeName.text = EpisodeName.text + ", " + curEpToWrite.name + + if curEpToWrite.description: + if not Overview.text: + Overview.text = curEpToWrite.description + else: + Overview.text = Overview.text + "\r" + curEpToWrite.description + + helpers.indentXML(rootNode) + data = etree.ElementTree(rootNode) + + return data + + +# present a standard "interface" from the module +metadata_class = Mede8erMetadata diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 09b536c5..3762a059 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1137,7 +1137,7 @@ class ConfigPostProcessing: @cherrypy.expose def savePostProcessing(self, naming_pattern=None, naming_multi_ep=None, xbmc_data=None, xbmc_12plus_data=None, mediabrowser_data=None, sony_ps3_data=None, - wdtv_data=None, tivo_data=None, + wdtv_data=None, tivo_data=None, mede8er_data=None, keep_processed_dir=None, process_method=None, process_automatically=None, rename_episodes=None, unpack=None, move_associated_files=None, tv_download_dir=None, naming_custom_abd=None, @@ -1183,6 +1183,7 @@ class ConfigPostProcessing: sickbeard.METADATA_PS3 = sony_ps3_data sickbeard.METADATA_WDTV = wdtv_data sickbeard.METADATA_TIVO = tivo_data + sickbeard.METADATA_MEDE8ER = mede8er_data sickbeard.metadata_provider_dict['XBMC'].set_config(sickbeard.METADATA_XBMC) sickbeard.metadata_provider_dict['XBMC 12+'].set_config(sickbeard.METADATA_XBMC_12PLUS) @@ -1190,6 +1191,7 @@ class ConfigPostProcessing: sickbeard.metadata_provider_dict['Sony PS3'].set_config(sickbeard.METADATA_PS3) sickbeard.metadata_provider_dict['WDTV'].set_config(sickbeard.METADATA_WDTV) sickbeard.metadata_provider_dict['TIVO'].set_config(sickbeard.METADATA_TIVO) + sickbeard.metadata_provider_dict['Mede8er'].set_config(sickbeard.METADATA_MEDE8ER) if self.isNamingValid(naming_pattern, naming_multi_ep) != "invalid": sickbeard.NAMING_PATTERN = naming_pattern From 7673cd5cc9d8e797a5b83cf956ede4eaae3deb7e Mon Sep 17 00:00:00 2001 From: echel0n Date: Mon, 12 May 2014 00:05:16 -0700 Subject: [PATCH 3/6] Fix for torrent ratio's, switched them from being stored as strings to integers. --- sickbeard/__init__.py | 96 +++++++++++++++++++++---------------------- sickbeard/webserve.py | 26 ++++++------ 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index 393533a7..de5636d8 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -183,21 +183,21 @@ DEFAULT_SEARCH_FREQUENCY = 40 DEFAULT_UPDATE_FREQUENCY = 12 EZRSS = False -EZRSS_RATIO = '' +EZRSS_RATIO = None TVTORRENTS = False TVTORRENTS_DIGEST = None TVTORRENTS_HASH = None -TVTORRENTS_RATIO = '' +TVTORRENTS_RATIO = None BTN = False BTN_API_KEY = None -BTN_RATIO = '' +BTN_RATIO = None NEWZNAB_DATA = None THEPIRATEBAY = False -THEPIRATEBAY_RATIO = '' +THEPIRATEBAY_RATIO = None THEPIRATEBAY_TRUSTED = False THEPIRATEBAY_PROXY = False THEPIRATEBAY_PROXY_URL = None @@ -207,43 +207,43 @@ TORRENTLEECH = False TORRENTLEECH_KEY = None TORRENTLEECH_USERNAME = None TORRENTLEECH_PASSWORD = None -TORRENTLEECH_RATIO = '' +TORRENTLEECH_RATIO = None IPTORRENTS = False IPTORRENTS_USERNAME = None IPTORRENTS_PASSWORD = None -IPTORRENTS_RATIO = '' +IPTORRENTS_RATIO = None IPTORRENTS_FREELEECH = False NEXTGEN = False NEXTGEN_USERNAME = None NEXTGEN_PASSWORD = None -NEXTGEN_RATIO = '' +NEXTGEN_RATIO = None NEXTGEN_FREELEECH = False KAT = None -KAT_RATIO = '' +KAT_RATIO = None KAT_VERIFIED = False PUBLICHD = None -PUBLICHD_RATIO = '' +PUBLICHD_RATIO = None SCC = False SCC_USERNAME = None SCC_PASSWORD = None -SCC_RATIO = '' +SCC_RATIO = None HDTORRENTS = False HDTORRENTS_USERNAME = None HDTORRENTS_PASSWORD = None -HDTORRENTS_RATIO = '' +HDTORRENTS_RATIO = None HDTORRENTS_UID = None HDTORRENTS_HASH = None TORRENTDAY = None TORRENTDAY_USERNAME = None TORRENTDAY_PASSWORD = None -TORRENTDAY_RATIO = '' +TORRENTDAY_RATIO = None TORRENTDAY_UID = None TORRENTDAY_HASH = None TORRENTDAY_FREELEECH = None @@ -251,12 +251,12 @@ TORRENTDAY_FREELEECH = None HDBITS = False HDBITS_USERNAME = None HDBITS_PASSKEY = None -HDBITS_RATIO = '' +HDBITS_RATIO = None SPEEDCD = False SPEEDCD_USERNAME = None SPEEDCD_PASSWORD = None -SPEEDCD_RATIO = '' +SPEEDCD_RATIO = None SPEEDCD_FREELEECH = None ADD_SHOWS_WO_DIR = None @@ -299,8 +299,8 @@ TORRENT_USERNAME = None TORRENT_PASSWORD = None TORRENT_HOST = '' TORRENT_PATH = '' -TORRENT_RATIO = '' -TORRENT_SEED_TIME = '' +TORRENT_RATIO = None +TORRENT_SEED_TIME = None TORRENT_PAUSED = False TORRENT_HIGH_BANDWIDTH = False TORRENT_LABEL = '' @@ -695,21 +695,21 @@ def initialize(consoleLogging=True): EZRSS = bool(check_setting_int(CFG, 'General', 'use_torrent', 0)) if not EZRSS: EZRSS = bool(check_setting_int(CFG, 'EZRSS', 'ezrss', 0)) - EZRSS_RATIO = check_setting_str(CFG, 'EZRSS', 'ezrss_ratio', '') + EZRSS_RATIO = check_setting_int(CFG, 'EZRSS', 'ezrss_ratio', 0) TVTORRENTS = bool(check_setting_int(CFG, 'TVTORRENTS', 'tvtorrents', 0)) TVTORRENTS_DIGEST = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_digest', '') TVTORRENTS_HASH = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_hash', '') - TVTORRENTS_RATIO = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_ratio', '') + TVTORRENTS_RATIO = check_setting_int(CFG, 'TVTORRENTS', 'tvtorrents_ratio', 0) TVTORRENTS_OPTIONS = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_options', '') BTN = bool(check_setting_int(CFG, 'BTN', 'btn', 0)) BTN_API_KEY = check_setting_str(CFG, 'BTN', 'btn_api_key', '') - BTN_RATIO = check_setting_str(CFG, 'BTN', 'btn_ratio', '') + BTN_RATIO = check_setting_int(CFG, 'BTN', 'btn_ratio', 0) BTN_OPTIONS = check_setting_str(CFG, 'BTN', 'btn_options', '') THEPIRATEBAY = bool(check_setting_int(CFG, 'THEPIRATEBAY', 'thepiratebay', 1)) - THEPIRATEBAY_RATIO = check_setting_str(CFG, 'THEPIRATEBAY', 'thepiratebay_ratio', '') + THEPIRATEBAY_RATIO = check_setting_int(CFG, 'THEPIRATEBAY', 'thepiratebay_ratio', 0) THEPIRATEBAY_TRUSTED = bool(check_setting_int(CFG, 'THEPIRATEBAY', 'thepiratebay_trusted', 1)) THEPIRATEBAY_PROXY = bool(check_setting_int(CFG, 'THEPIRATEBAY', 'thepiratebay_proxy', 0)) THEPIRATEBAY_PROXY_URL = check_setting_str(CFG, 'THEPIRATEBAY', 'thepiratebay_proxy_url', '') @@ -719,60 +719,60 @@ def initialize(consoleLogging=True): TORRENTLEECH = bool(check_setting_int(CFG, 'TORRENTLEECH', 'torrentleech', 0)) TORRENTLEECH_USERNAME = check_setting_str(CFG, 'TORRENTLEECH', 'torrentleech_username', '') TORRENTLEECH_PASSWORD = check_setting_str(CFG, 'TORRENTLEECH', 'torrentleech_password', '') - TORRENTLEECH_RATIO = check_setting_str(CFG, 'TORRENTLEECH', 'torrentleech_ratio', '') + TORRENTLEECH_RATIO = check_setting_int(CFG, 'TORRENTLEECH', 'torrentleech_ratio', 0) TORRENTLEECH_OPTIONS = check_setting_str(CFG, 'TORRENTLEECH', 'torrentleech_options', '') IPTORRENTS = bool(check_setting_int(CFG, 'IPTORRENTS', 'iptorrents', 0)) IPTORRENTS_USERNAME = check_setting_str(CFG, 'IPTORRENTS', 'iptorrents_username', '') IPTORRENTS_PASSWORD = check_setting_str(CFG, 'IPTORRENTS', 'iptorrents_password', '') - IPTORRENTS_RATIO = check_setting_str(CFG, 'IPTORRENTS', 'iptorrents_ratio', '') + IPTORRENTS_RATIO = check_setting_int(CFG, 'IPTORRENTS', 'iptorrents_ratio', 0) IPTORRENTS_FREELEECH = bool(check_setting_int(CFG, 'IPTORRENTS', 'iptorrents_freeleech', 0)) IPTORRENTS_OPTIONS = check_setting_str(CFG, 'IPTORRENTS', 'iptorrents_options', '') NEXTGEN = bool(check_setting_int(CFG, 'NEXTGEN', 'nextgen', 0)) NEXTGEN_USERNAME = check_setting_str(CFG, 'NEXTGEN', 'nextgen_username', '') NEXTGEN_PASSWORD = check_setting_str(CFG, 'NEXTGEN', 'nextgen_password', '') - NEXTGEN_RATIO = check_setting_str(CFG, 'NEXTGEN', 'nextgen_ratio', '') + NEXTGEN_RATIO = check_setting_int(CFG, 'NEXTGEN', 'nextgen_ratio', 0) NEXTGEN_OPTIONS = check_setting_str(CFG, 'NEXTGEN', 'nextgen_options', '') KAT = bool(check_setting_int(CFG, 'KAT', 'kat', 0)) - KAT_RATIO = check_setting_str(CFG, 'KAT', 'kat_ratio', '') + KAT_RATIO = check_setting_int(CFG, 'KAT', 'kat_ratio', 0) KAT_VERIFIED = bool(check_setting_int(CFG, 'KAT', 'kat_verified', 1)) KAT_OPTIONS = check_setting_str(CFG, 'KAT', 'kat_options', '') PUBLICHD = bool(check_setting_int(CFG, 'PUBLICHD', 'publichd', 0)) - PUBLICHD_RATIO = check_setting_str(CFG, 'PUBLICHD', 'publichd_ratio', '') + PUBLICHD_RATIO = check_setting_int(CFG, 'PUBLICHD', 'publichd_ratio', 0) PUBLICHD_OPTIONS = check_setting_str(CFG, 'PUBLICHD', 'publichd_options', '') SCC = bool(check_setting_int(CFG, 'SCC', 'scc', 0)) SCC_USERNAME = check_setting_str(CFG, 'SCC', 'scc_username', '') SCC_PASSWORD = check_setting_str(CFG, 'SCC', 'scc_password', '') - SCC_RATIO = check_setting_str(CFG, 'SCC', 'scc_ratio', '') + SCC_RATIO = check_setting_int(CFG, 'SCC', 'scc_ratio', 0) SCC_OPTIONS = check_setting_str(CFG, 'SCC', 'scc_options', '') HDTORRENTS = bool(check_setting_int(CFG, 'HDTORRENTS', 'hdtorrents', 0)) HDTORRENTS_USERNAME = check_setting_str(CFG, 'HDTORRENTS', 'hdtorrents_username', '') HDTORRENTS_PASSWORD = check_setting_str(CFG, 'HDTORRENTS', 'hdtorrents_password', '') - HDTORRENTS_RATIO = check_setting_str(CFG, 'HDTORRENTS', 'hdtorrents_ratio', '') + HDTORRENTS_RATIO = check_setting_int(CFG, 'HDTORRENTS', 'hdtorrents_ratio', 0) HDTORRENTS_OPTIONS = check_setting_str(CFG, 'HDTORRENTS', 'hdtorrents_options', '') TORRENTDAY = bool(check_setting_int(CFG, 'TORRENTDAY', 'torrentday', 0)) TORRENTDAY_USERNAME = check_setting_str(CFG, 'TORRENTDAY', 'torrentday_username', '') TORRENTDAY_PASSWORD = check_setting_str(CFG, 'TORRENTDAY', 'torrentday_password', '') - TORRENTDAY_RATIO = check_setting_str(CFG, 'TORRENTDAY', 'torrentday_ratio', '') + TORRENTDAY_RATIO = check_setting_int(CFG, 'TORRENTDAY', 'torrentday_ratio', 0) TORRENTDAY_FREELEECH = bool(check_setting_int(CFG, 'TORRENTDAY', 'torrentday_freeleech', 0)) TORRENTDAY_OPTIONS = check_setting_str(CFG, 'TORRENTDAY', 'torrentday_options', '') HDBITS = bool(check_setting_int(CFG, 'HDBITS', 'hdbits', 0)) HDBITS_USERNAME = check_setting_str(CFG, 'HDBITS', 'hdbits_username', '') HDBITS_PASSKEY = check_setting_str(CFG, 'HDBITS', 'hdbits_passkey', '') - HDBITS_RATIO = check_setting_str(CFG, 'HDBITS', 'hdbits_ratio', '') + HDBITS_RATIO = check_setting_int(CFG, 'HDBITS', 'hdbits_ratio', 0) HDBITS_OPTIONS = check_setting_str(CFG, 'HDBITS', 'hdbits_options', '') SPEEDCD = bool(check_setting_int(CFG, 'SPEEDCD', 'speedcd', 0)) SPEEDCD_USERNAME = check_setting_str(CFG, 'SPEEDCD', 'speedcd_username', '') SPEEDCD_PASSWORD = check_setting_str(CFG, 'SPEEDCD', 'speedcd_password', '') - SPEEDCD_RATIO = check_setting_str(CFG, 'SPEEDCD', 'speedcd_ratio', '') + SPEEDCD_RATIO = check_setting_int(CFG, 'SPEEDCD', 'speedcd_ratio', 0) SPEEDCD_FREELEECH = bool(check_setting_int(CFG, 'SPEEDCD', 'speedcd_freeleech', 0)) NZBS = bool(check_setting_int(CFG, 'NZBs', 'nzbs', 0)) @@ -805,8 +805,8 @@ def initialize(consoleLogging=True): TORRENT_PASSWORD = check_setting_str(CFG, 'TORRENT', 'torrent_password', '') TORRENT_HOST = check_setting_str(CFG, 'TORRENT', 'torrent_host', '') TORRENT_PATH = check_setting_str(CFG, 'TORRENT', 'torrent_path', '') - TORRENT_RATIO = check_setting_str(CFG, 'TORRENT', 'torrent_ratio', '') - TORRENT_SEED_TIME = check_setting_str(CFG, 'TORRENT', 'torrent_seed_time', '') + TORRENT_RATIO = check_setting_int(CFG, 'TORRENT', 'torrent_ratio', 0) + TORRENT_SEED_TIME = check_setting_int(CFG, 'TORRENT', 'torrent_seed_time', 0) TORRENT_PAUSED = bool(check_setting_int(CFG, 'TORRENT', 'torrent_paused', 0)) TORRENT_HIGH_BANDWIDTH = bool(check_setting_int(CFG, 'TORRENT', 'torrent_high_bandwidth', 0)) TORRENT_LABEL = check_setting_str(CFG, 'TORRENT', 'torrent_label', '') @@ -1422,24 +1422,24 @@ def save_config(): new_config['EZRSS'] = {} new_config['EZRSS']['ezrss'] = int(EZRSS) - new_config['EZRSS']['ezrss_ratio'] = EZRSS_RATIO + new_config['EZRSS']['ezrss_ratio'] = int(EZRSS_RATIO) new_config['TVTORRENTS'] = {} new_config['TVTORRENTS']['tvtorrents'] = int(TVTORRENTS) new_config['TVTORRENTS']['tvtorrents_digest'] = TVTORRENTS_DIGEST new_config['TVTORRENTS']['tvtorrents_hash'] = TVTORRENTS_HASH - new_config['TVTORRENTS']['tvtorrents_ratio'] = TVTORRENTS_RATIO + new_config['TVTORRENTS']['tvtorrents_ratio'] = int(TVTORRENTS_RATIO) new_config['TVTORRENTS']['tvtorrents_options'] = TVTORRENTS_OPTIONS new_config['BTN'] = {} new_config['BTN']['btn'] = int(BTN) new_config['BTN']['btn_api_key'] = BTN_API_KEY - new_config['BTN']['btn_ratio'] = BTN_RATIO + new_config['BTN']['btn_ratio'] = int(BTN_RATIO) new_config['BTN']['btn_options'] = BTN_OPTIONS new_config['THEPIRATEBAY'] = {} new_config['THEPIRATEBAY']['thepiratebay'] = int(THEPIRATEBAY) - new_config['THEPIRATEBAY']['thepiratebay_ratio'] = THEPIRATEBAY_RATIO + new_config['THEPIRATEBAY']['thepiratebay_ratio'] = int(THEPIRATEBAY_RATIO) new_config['THEPIRATEBAY']['thepiratebay_trusted'] = int(THEPIRATEBAY_TRUSTED) new_config['THEPIRATEBAY']['thepiratebay_proxy'] = int(THEPIRATEBAY_PROXY) new_config['THEPIRATEBAY']['thepiratebay_proxy_url'] = THEPIRATEBAY_PROXY_URL @@ -1450,14 +1450,14 @@ def save_config(): new_config['TORRENTLEECH']['torrentleech'] = int(TORRENTLEECH) new_config['TORRENTLEECH']['torrentleech_username'] = TORRENTLEECH_USERNAME new_config['TORRENTLEECH']['torrentleech_password'] = helpers.encrypt(TORRENTLEECH_PASSWORD, ENCRYPTION_VERSION) - new_config['TORRENTLEECH']['torrentleech_ratio'] = TORRENTLEECH_RATIO + new_config['TORRENTLEECH']['torrentleech_ratio'] = int(TORRENTLEECH_RATIO) new_config['TORRENTLEECH']['torrentleech_options'] = TORRENTLEECH_OPTIONS new_config['IPTORRENTS'] = {} new_config['IPTORRENTS']['iptorrents'] = int(IPTORRENTS) new_config['IPTORRENTS']['iptorrents_username'] = IPTORRENTS_USERNAME new_config['IPTORRENTS']['iptorrents_password'] = helpers.encrypt(IPTORRENTS_PASSWORD, ENCRYPTION_VERSION) - new_config['IPTORRENTS']['iptorrents_ratio'] = IPTORRENTS_RATIO + new_config['IPTORRENTS']['iptorrents_ratio'] = int(IPTORRENTS_RATIO) new_config['IPTORRENTS']['iptorrents_freeleech'] = int(IPTORRENTS_FREELEECH) new_config['IPTORRENTS']['iptorrents_options'] = IPTORRENTS_OPTIONS @@ -1465,39 +1465,39 @@ def save_config(): new_config['NEXTGEN']['nextgen'] = int(NEXTGEN) new_config['NEXTGEN']['nextgen_username'] = NEXTGEN_USERNAME new_config['NEXTGEN']['nextgen_password'] = helpers.encrypt(NEXTGEN_PASSWORD, ENCRYPTION_VERSION) - new_config['NEXTGEN']['nextgen_ratio'] = NEXTGEN_RATIO + new_config['NEXTGEN']['nextgen_ratio'] = int(NEXTGEN_RATIO) new_config['NEXTGEN']['nextgen_options'] = NEXTGEN_OPTIONS new_config['KAT'] = {} new_config['KAT']['kat'] = int(KAT) - new_config['KAT']['kat_ratio'] = KAT_RATIO + new_config['KAT']['kat_ratio'] = int(KAT_RATIO) new_config['KAT']['kat_verified'] = int(KAT_VERIFIED) new_config['KAT']['kat_options'] = KAT_OPTIONS new_config['PUBLICHD'] = {} new_config['PUBLICHD']['publichd'] = int(PUBLICHD) - new_config['PUBLICHD']['publichd_ratio'] = PUBLICHD_RATIO + new_config['PUBLICHD']['publichd_ratio'] = int(PUBLICHD_RATIO) new_config['PUBLICHD']['publichd_options'] = PUBLICHD_OPTIONS new_config['SCC'] = {} new_config['SCC']['scc'] = int(SCC) new_config['SCC']['scc_username'] = SCC_USERNAME new_config['SCC']['scc_password'] = helpers.encrypt(SCC_PASSWORD, ENCRYPTION_VERSION) - new_config['SCC']['scc_ratio'] = SCC_RATIO + new_config['SCC']['scc_ratio'] = int(SCC_RATIO) new_config['SCC']['scc_options'] = SCC_OPTIONS new_config['HDTORRENTS'] = {} new_config['HDTORRENTS']['hdtorrents'] = int(HDTORRENTS) new_config['HDTORRENTS']['hdtorrents_username'] = HDTORRENTS_USERNAME new_config['HDTORRENTS']['hdtorrents_password'] = helpers.encrypt(HDTORRENTS_PASSWORD, ENCRYPTION_VERSION) - new_config['HDTORRENTS']['hdtorrents_ratio'] = HDTORRENTS_RATIO + new_config['HDTORRENTS']['hdtorrents_ratio'] = int(HDTORRENTS_RATIO) new_config['HDTORRENTS']['hdtorrents_options'] = HDTORRENTS_OPTIONS new_config['TORRENTDAY'] = {} new_config['TORRENTDAY']['torrentday'] = int(TORRENTDAY) new_config['TORRENTDAY']['torrentday_username'] = TORRENTDAY_USERNAME new_config['TORRENTDAY']['torrentday_password'] = helpers.encrypt(TORRENTDAY_PASSWORD, ENCRYPTION_VERSION) - new_config['TORRENTDAY']['torrentday_ratio'] = TORRENTDAY_RATIO + new_config['TORRENTDAY']['torrentday_ratio'] = int(TORRENTDAY_RATIO) new_config['TORRENTDAY']['torrentday_freeleech'] = int(TORRENTDAY_FREELEECH) new_config['TORRENTDAY']['torrentday_options'] = TORRENTDAY_OPTIONS @@ -1505,14 +1505,14 @@ def save_config(): new_config['HDBITS']['hdbits'] = int(HDBITS) new_config['HDBITS']['hdbits_username'] = HDBITS_USERNAME new_config['HDBITS']['hdbits_passkey'] = HDBITS_PASSKEY - new_config['HDBITS']['hdbits_ratio'] = HDBITS_RATIO + new_config['HDBITS']['hdbits_ratio'] = int(HDBITS_RATIO) new_config['HDBITS']['hdbits_options'] = HDBITS_OPTIONS new_config['SPEEDCD'] = {} new_config['SPEEDCD']['speedcd'] = int(SPEEDCD) new_config['SPEEDCD']['speedcd_username'] = SPEEDCD_USERNAME new_config['SPEEDCD']['speedcd_password'] = helpers.encrypt(SPEEDCD_PASSWORD, ENCRYPTION_VERSION) - new_config['SPEEDCD']['speedcd_ratio'] = SPEEDCD_RATIO + new_config['SPEEDCD']['speedcd_ratio'] = int(SPEEDCD_RATIO) new_config['SPEEDCD']['speedcd_freeleech'] = int(SPEEDCD_FREELEECH) new_config['NZBs'] = {} @@ -1553,8 +1553,8 @@ def save_config(): new_config['TORRENT']['torrent_password'] = helpers.encrypt(TORRENT_PASSWORD, ENCRYPTION_VERSION) new_config['TORRENT']['torrent_host'] = TORRENT_HOST new_config['TORRENT']['torrent_path'] = TORRENT_PATH - new_config['TORRENT']['torrent_ratio'] = TORRENT_RATIO - new_config['TORRENT']['torrent_seed_time'] = TORRENT_SEED_TIME + new_config['TORRENT']['torrent_ratio'] = int(TORRENT_RATIO) + new_config['TORRENT']['torrent_seed_time'] = int(TORRENT_SEED_TIME) new_config['TORRENT']['torrent_paused'] = int(TORRENT_PAUSED) new_config['TORRENT']['torrent_high_bandwidth'] = int(TORRENT_HIGH_BANDWIDTH) new_config['TORRENT']['torrent_label'] = TORRENT_LABEL diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 3762a059..277864ae 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1564,16 +1564,16 @@ class ConfigProviders: else: logger.log(u"don't know what " + curProvider + " is, skipping") - sickbeard.EZRSS_RATIO = ezrss_ratio + sickbeard.EZRSS_RATIO = config.to_int(ezrss_ratio) sickbeard.TVTORRENTS_DIGEST = tvtorrents_digest.strip() sickbeard.TVTORRENTS_HASH = tvtorrents_hash.strip() - sickbeard.TVTORRENTS_RATIO = tvtorrents_ratio + sickbeard.TVTORRENTS_RATIO = config.to_int(tvtorrents_ratio) sickbeard.BTN_API_KEY = btn_api_key.strip() - sickbeard.BTN_RATIO = btn_ratio + sickbeard.BTN_RATIO = config.to_int(btn_ratio) - sickbeard.THEPIRATEBAY_RATIO = thepiratebay_ratio + sickbeard.THEPIRATEBAY_RATIO = config.to_int(thepiratebay_ratio) sickbeard.THEPIRATEBAY_TRUSTED = config.checkbox_to_value(thepiratebay_trusted) thepiratebay_proxy = config.checkbox_to_value(thepiratebay_proxy) @@ -1586,48 +1586,48 @@ class ConfigProviders: sickbeard.TORRENTLEECH_USERNAME = torrentleech_username sickbeard.TORRENTLEECH_PASSWORD = torrentleech_password - sickbeard.TORRENTLEECH_RATIO = torrentleech_ratio + sickbeard.TORRENTLEECH_RATIO = config.to_int(torrentleech_ratio) sickbeard.IPTORRENTS_USERNAME = iptorrents_username.strip() sickbeard.IPTORRENTS_PASSWORD = iptorrents_password.strip() - sickbeard.IPTORRENTS_RATIO = iptorrents_ratio + sickbeard.IPTORRENTS_RATIO = config.to_int(iptorrents_ratio) sickbeard.IPTORRENTS_FREELEECH = config.checkbox_to_value(iptorrents_freeleech) sickbeard.KAT_TRUSTED = config.checkbox_to_value(kat_trusted) - sickbeard.KAT_RATIO = kat_ratio + sickbeard.KAT_RATIO = config.to_int(kat_ratio) sickbeard.KAT_VERIFIED = config.checkbox_to_value(kat_verified) sickbeard.PUBLICHD_RATIO = publichd_ratio sickbeard.TORRENTDAY_USERNAME = torrentday_username.strip() sickbeard.TORRENTDAY_PASSWORD = torrentday_password.strip() - sickbeard.TORRENTDAY_RATIO = torrentday_ratio + sickbeard.TORRENTDAY_RATIO = config.to_int(torrentday_ratio) sickbeard.TORRENTDAY_FREELEECH = config.checkbox_to_value(torrentday_freeleech) sickbeard.SCC_USERNAME = scc_username.strip() sickbeard.SCC_PASSWORD = scc_password.strip() - sickbeard.SCC_RATIO = scc_ratio + sickbeard.SCC_RATIO = config.to_int(scc_ratio) sickbeard.HDTORRENTS_USERNAME = hdtorrents_username.strip() sickbeard.HDTORRENTS_PASSWORD = hdtorrents_password.strip() - sickbeard.HDTORRENTS_RATIO = hdtorrents_ratio + sickbeard.HDTORRENTS_RATIO = config.to_int(hdtorrents_ratio) sickbeard.HDBITS_USERNAME = hdbits_username.strip() sickbeard.HDBITS_PASSKEY = hdbits_passkey.strip() - sickbeard.HDBITS_RATIO = hdbits_ratio + sickbeard.HDBITS_RATIO = config.to_int(hdbits_ratio) sickbeard.OMGWTFNZBS_USERNAME = omgwtfnzbs_username.strip() sickbeard.OMGWTFNZBS_APIKEY = omgwtfnzbs_apikey.strip() sickbeard.NEXTGEN_USERNAME = nextgen_username.strip() sickbeard.NEXTGEN_PASSWORD = nextgen_password.strip() - sickbeard.NEXTGEN_RATIO = nextgen_ratio + sickbeard.NEXTGEN_RATIO = config.to_int(nextgen_ratio) sickbeard.SPEEDCD_USERNAME = speedcd_username.strip() sickbeard.SPEEDCD_PASSWORD = speedcd_password.strip() - sickbeard.SPEEDCD_RATIO = speedcd_ratio + sickbeard.SPEEDCD_RATIO = config.to_int(speedcd_ratio) sickbeard.SPEEDCD_FREELEECH = config.checkbox_to_value(speedcd_freeleech) sickbeard.NEWZNAB_DATA = '!!!'.join([x.configStr() for x in sickbeard.newznabProviderList]) From 31297b9069ba67668bf05ee6ce206b88709813fe Mon Sep 17 00:00:00 2001 From: echel0n Date: Mon, 12 May 2014 01:52:14 -0700 Subject: [PATCH 4/6] Added RSS Cache updater with user-settable interval from config section of web interface, updates the cache so that searches can be more instant when looking for snatches. Updated backlog search code to re-set skipped or missed episodes to wanted. --- .../interfaces/default/config_search.tmpl | 2 +- sickbeard/__init__.py | 42 ++++++++++++------- sickbeard/generic_queue.py | 8 +--- sickbeard/helpers.py | 28 ++++++++----- sickbeard/providers/generic.py | 10 ----- sickbeard/providers/newznab.py | 3 +- sickbeard/{searchCurrent.py => rssupdater.py} | 12 +++--- sickbeard/search_queue.py | 33 +++++++++++++++ sickbeard/tvcache.py | 23 ++++------ 9 files changed, 97 insertions(+), 64 deletions(-) rename sickbeard/{searchCurrent.py => rssupdater.py} (75%) diff --git a/gui/slick/interfaces/default/config_search.tmpl b/gui/slick/interfaces/default/config_search.tmpl index 3bf76b1b..14b25415 100644 --- a/gui/slick/interfaces/default/config_search.tmpl +++ b/gui/slick/interfaces/default/config_search.tmpl @@ -47,7 +47,7 @@
- + +
+ + +
+