def canAddTorrentRssProvider(name, url, cookies, titleTAG): if not name: return json.dumps({"error": "Invalid name specified"}) url = config.clean_url(url) tempProvider = rsstorrent.TorrentRssProvider(name, url, cookies, titleTAG) if tempProvider.get_id() in (x.get_id() for x in settings.torrentRssProviderList): return json.dumps({"error": "Exists as " + tempProvider.name}) else: (succ, errMsg) = tempProvider.validateRSS() if succ: return json.dumps({"success": tempProvider.get_id()}) else: return json.dumps({"error": errMsg})
def saveProviders(self, newznab_string="", torrentrss_string="", provider_order=None, **kwargs): newznabProviderDict = { x.get_id(): x for x in settings.newznabProviderList } finished_names = [] # add all the newznab info we got into our list # if not newznab_string: # logger.debug('No newznab_string passed to saveProviders') for curNewznabProviderStr in newznab_string.split("!!!"): if not curNewznabProviderStr: continue cur_name, cur_url, cur_key, cur_cat = curNewznabProviderStr.split( "|") cur_url = config.clean_url(cur_url) cur_id = GenericProvider.make_id(cur_name) # if it does not already exist then add it if cur_id not in newznabProviderDict: new_provider = newznab.NewznabProvider(cur_name, cur_url, key=cur_key, catIDs=cur_cat) settings.newznabProviderList.append(new_provider) newznabProviderDict[cur_id] = new_provider # set all params newznabProviderDict[cur_id].name = cur_name newznabProviderDict[cur_id].url = cur_url newznabProviderDict[cur_id].key = cur_key newznabProviderDict[cur_id].catIDs = cur_cat # a 0 in the key spot indicates that no key is needed newznabProviderDict[cur_id].needs_auth = cur_key and cur_key != "0" newznabProviderDict[cur_id].search_mode = str( kwargs.get(cur_id + "_search_mode", "eponly")).strip() newznabProviderDict[ cur_id].search_fallback = config.checkbox_to_value(kwargs.get( cur_id + "search_fallback", 0), value_on=1, value_off=0) newznabProviderDict[ cur_id].enable_daily = config.checkbox_to_value(kwargs.get( cur_id + "enable_daily", 0), value_on=1, value_off=0) newznabProviderDict[ cur_id].enable_backlog = config.checkbox_to_value(kwargs.get( cur_id + "enable_backlog", 0), value_on=1, value_off=0) # mark it finished finished_names.append(cur_id) # delete anything that is in the list that was not processed just now if newznab_string: for curProvider in settings.newznabProviderList: if curProvider.get_id() not in finished_names: settings.newznabProviderList.remove(curProvider) del newznabProviderDict[curProvider.get_id()] # if not torrentrss_string: # logger.debug('No torrentrss_string passed to saveProviders') torrentRssProviderDict = { x.get_id(): x for x in settings.torrentRssProviderList } finished_names = [] if torrentrss_string: for curTorrentRssProviderStr in torrentrss_string.split("!!!"): if not curTorrentRssProviderStr: continue cur_name, cur_url, cur_cookies, cur_title_tag = curTorrentRssProviderStr.split( "|") cur_url = config.clean_url(cur_url) cur_id = GenericProvider.make_id(cur_name) # if it does not already exist then create it if cur_id not in torrentRssProviderDict: new_provider = rsstorrent.TorrentRssProvider( cur_name, cur_url, cur_cookies, cur_title_tag) settings.torrentRssProviderList.append(new_provider) torrentRssProviderDict[cur_id] = new_provider # update values torrentRssProviderDict[cur_id].name = cur_name torrentRssProviderDict[cur_id].url = cur_url torrentRssProviderDict[cur_id].cookies = cur_cookies torrentRssProviderDict[cur_id].cur_title_tag = cur_title_tag # mark it finished finished_names.append(cur_id) # delete anything that is in the list that was not processed just now if torrentrss_string: for curProvider in settings.torrentRssProviderList: if curProvider.get_id() not in finished_names: settings.torrentRssProviderList.remove(curProvider) del torrentRssProviderDict[curProvider.get_id()] # do the enable/disable enabled_provider_list = [] disabled_provider_list = [] for cur_id, cur_enabled in ( cur_provider_str.split(":") for cur_provider_str in provider_order.split()): cur_enabled = bool(try_int(cur_enabled)) cur_provider_obj = [ x for x in sickchill.oldbeard.providers.sortedProviderList() if x.get_id() == cur_id and hasattr(x, "enabled") ] if cur_provider_obj: cur_provider_obj[0].enabled = cur_enabled if cur_enabled: enabled_provider_list.append(cur_id) else: disabled_provider_list.append(cur_id) if cur_id in newznabProviderDict: newznabProviderDict[cur_id].enabled = cur_enabled elif cur_id in torrentRssProviderDict: torrentRssProviderDict[cur_id].enabled = cur_enabled # dynamically load provider settings for curProvider in sickchill.oldbeard.providers.sortedProviderList(): if hasattr(curProvider, "custom_url"): curProvider.custom_url = str( kwargs.get(curProvider.get_id("_custom_url"), "")).strip() if hasattr(curProvider, "minseed"): curProvider.minseed = int( str(kwargs.get(curProvider.get_id("_minseed"), 0)).strip()) if hasattr(curProvider, "minleech"): curProvider.minleech = int( str(kwargs.get(curProvider.get_id("_minleech"), 0)).strip()) if hasattr(curProvider, "ratio"): if curProvider.get_id("_ratio") in kwargs: ratio = str(kwargs.get( curProvider.get_id("_ratio"))).strip() if ratio in ("None", None, ""): curProvider.ratio = None else: curProvider.ratio = max(float(ratio), -1) else: curProvider.ratio = None if hasattr(curProvider, "digest"): curProvider.digest = str( kwargs.get(curProvider.get_id("_digest"), "")).strip() or None if hasattr(curProvider, "hash"): curProvider.hash = str( kwargs.get(curProvider.get_id("_hash"), "")).strip() or None if hasattr(curProvider, "api_key"): curProvider.api_key = str( kwargs.get(curProvider.get_id("_api_key"), "")).strip() or None if hasattr(curProvider, "username"): curProvider.username = str( kwargs.get(curProvider.get_id("_username"), "")).strip() or None if hasattr(curProvider, "password"): curProvider.password = filters.unhide( curProvider.password, str(kwargs.get(curProvider.get_id("_password"), "")).strip()) if hasattr(curProvider, "passkey"): curProvider.passkey = filters.unhide( curProvider.passkey, str(kwargs.get(curProvider.get_id("_passkey"), "")).strip()) if hasattr(curProvider, "pin"): curProvider.pin = filters.unhide( curProvider.pin, str(kwargs.get(curProvider.get_id("_pin"), "")).strip()) if hasattr(curProvider, "confirmed"): curProvider.confirmed = config.checkbox_to_value( kwargs.get(curProvider.get_id("_confirmed"))) if hasattr(curProvider, "ranked"): curProvider.ranked = config.checkbox_to_value( kwargs.get(curProvider.get_id("_ranked"))) if hasattr(curProvider, "engrelease"): curProvider.engrelease = config.checkbox_to_value( kwargs.get(curProvider.get_id("_engrelease"))) if hasattr(curProvider, "onlyspasearch"): curProvider.onlyspasearch = config.checkbox_to_value( kwargs.get(curProvider.get_id("_onlyspasearch"))) if hasattr(curProvider, "sorting"): curProvider.sorting = str( kwargs.get(curProvider.get_id("_sorting"), "seeders")).strip() if hasattr(curProvider, "freeleech"): curProvider.freeleech = config.checkbox_to_value( kwargs.get(curProvider.get_id("_freeleech"))) if hasattr(curProvider, "search_mode"): curProvider.search_mode = str( kwargs.get(curProvider.get_id("_search_mode"), "eponly")).strip() if hasattr(curProvider, "search_fallback"): curProvider.search_fallback = config.checkbox_to_value( kwargs.get(curProvider.get_id("_search_fallback"))) if hasattr(curProvider, "enable_daily"): curProvider.enable_daily = curProvider.can_daily and config.checkbox_to_value( kwargs.get(curProvider.get_id("_enable_daily"))) if hasattr(curProvider, "enable_backlog"): curProvider.enable_backlog = curProvider.can_backlog and config.checkbox_to_value( kwargs.get(curProvider.get_id("_enable_backlog"))) if hasattr(curProvider, "cat"): curProvider.cat = int( str(kwargs.get(curProvider.get_id("_cat"), 0)).strip()) if hasattr(curProvider, "subtitle"): curProvider.subtitle = config.checkbox_to_value( kwargs.get(curProvider.get_id("_subtitle"))) if curProvider.enable_cookies: curProvider.cookies = str( kwargs.get(curProvider.get_id("_cookies"))).strip() settings.NEWZNAB_DATA = "!!!".join( [x.configStr() for x in settings.newznabProviderList]) settings.PROVIDER_ORDER = enabled_provider_list + disabled_provider_list sickchill.start.save_config() # Add a site_message if no providers are enabled for daily and/or backlog sickchill.oldbeard.providers.check_enabled_providers() ui.notifications.message(_("Configuration Saved"), os.path.join(settings.CONFIG_FILE)) return self.redirect("/config/providers/")