diff --git a/gui/slick/views/config_search.mako b/gui/slick/views/config_search.mako index 6e4359754d78c95179c3fbd1c561561b767f040e..8beab44b50b58c03bfb4e521465188ef95c2a202 100644 --- a/gui/slick/views/config_search.mako +++ b/gui/slick/views/config_search.mako @@ -125,6 +125,18 @@ </label> </div> + <div class="field-pair"> + <label> + <span class="component-title">Trackers list</span> + <span class="component-desc"> + <input type="text" name="trackers_list" value="${sickbeard.TRACKERS_LIST}" class="form-control input-sm input350" /> + <div class="clear-left">Trackers that will be added to magnets without trackers<br> + separate trackers with a comma, e.g. "tracker1,tracker2,tracker3" + </div> + </span> + </label> + </div> + <div class="field-pair"> <label> <span class="component-title">Ignore language names in subbed results</span> diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index af912e0ea988391570c7c44195defd7bcb474168..765cb7626f51adc6a439087e0f43185bb0fce420 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -537,6 +537,7 @@ DELETE_FAILED = False EXTRA_SCRIPTS = [] IGNORE_WORDS = "german,french,core2hd,dutch,swedish,reenc,MrLss" +TRACKERS_LIST = "udp://coppersurfer.tk:6969/announce,udp://open.demonii.com:1337,udp://exodus.desync.com:6969,udp://9.rarbg.me:2710/announce,udp://glotorrents.pw:6969/announce,udp://tracker.openbittorrent.com:80/announce,udp://9.rarbg.to:2710/announce" REQUIRE_WORDS = "" IGNORED_SUBS_LIST = "dk,fin,heb,kor,nor,nordic,pl,swe" SYNC_FILES = "!sync,lftp-pget-status,part,bts,!qb" @@ -606,7 +607,7 @@ def initialize(consoleLogging=True): NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, MOVE_ASSOCIATED_FILES, SYNC_FILES, POSTPONE_IF_SYNC_FILES, POSTPONE_IF_NO_SUBS, dailySearchScheduler, NFO_RENAME, \ GUI_NAME, HOME_LAYOUT, HISTORY_LAYOUT, DISPLAY_SHOW_SPECIALS, COMING_EPS_LAYOUT, COMING_EPS_SORT, COMING_EPS_DISPLAY_PAUSED, COMING_EPS_MISSED_RANGE, FUZZY_DATING, TRIM_ZERO, DATE_PRESET, TIME_PRESET, TIME_PRESET_W_SECONDS, THEME_NAME, FILTER_ROW, \ POSTER_SORTBY, POSTER_SORTDIR, HISTORY_LIMIT, CREATE_MISSING_SHOW_DIRS, ADD_SHOWS_WO_DIR, \ - METADATA_WDTV, METADATA_TIVO, METADATA_MEDE8ER, IGNORE_WORDS, IGNORED_SUBS_LIST, REQUIRE_WORDS, CALENDAR_UNPROTECTED, CALENDAR_ICONS, NO_RESTART, \ + METADATA_WDTV, METADATA_TIVO, METADATA_MEDE8ER, IGNORE_WORDS, TRACKERS_LIST, IGNORED_SUBS_LIST, REQUIRE_WORDS, CALENDAR_UNPROTECTED, CALENDAR_ICONS, NO_RESTART, \ USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_SERVICES_LIST, SUBTITLES_SERVICES_ENABLED, SUBTITLES_HISTORY, SUBTITLES_FINDER_FREQUENCY, SUBTITLES_MULTI, EMBEDDED_SUBTITLES_ALL, SUBTITLES_EXTRA_SCRIPTS, subtitlesFinderScheduler, \ SUBTITLES_HEARING_IMPAIRED, ADDIC7ED_USER, ADDIC7ED_PASS, LEGENDASTV_USER, LEGENDASTV_PASS, OPENSUBTITLES_USER, OPENSUBTITLES_PASS, \ USE_FAILED_DOWNLOADS, DELETE_FAILED, ANON_REDIRECT, LOCALHOST_IP, DEBUG, DEFAULT_PAGE, PROXY_SETTING, PROXY_INDEXERS, \ @@ -1162,6 +1163,7 @@ def initialize(consoleLogging=True): GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') IGNORE_WORDS = check_setting_str(CFG, 'General', 'ignore_words', IGNORE_WORDS) + TRACKERS_LIST = check_setting_str(CFG, 'General', 'trackers_list', TRACKERS_LIST) REQUIRE_WORDS = check_setting_str(CFG, 'General', 'require_words', REQUIRE_WORDS) IGNORED_SUBS_LIST = check_setting_str(CFG, 'General', 'ignored_subs_list', IGNORED_SUBS_LIST) @@ -1766,6 +1768,7 @@ def save_config(): new_config['General']['extra_scripts'] = '|'.join(EXTRA_SCRIPTS) new_config['General']['git_path'] = GIT_PATH new_config['General']['ignore_words'] = IGNORE_WORDS + new_config['General']['trackers_list'] = TRACKERS_LIST new_config['General']['require_words'] = REQUIRE_WORDS new_config['General']['ignored_subs_list'] = IGNORED_SUBS_LIST new_config['General']['calendar_unprotected'] = int(CALENDAR_UNPROTECTED) diff --git a/sickbeard/providers/btdigg.py b/sickbeard/providers/btdigg.py index f688b7185bb6116d3f63655083ecb8b8cb5309fd..553e7e320bfcd1a66395b6c964a350d9e31e5ca2 100644 --- a/sickbeard/providers/btdigg.py +++ b/sickbeard/providers/btdigg.py @@ -19,11 +19,13 @@ # You should have received a copy of the GNU General Public License # along with SickRage. If not, see <http://www.gnu.org/licenses/>. + from sickbeard.providers import generic from urllib import urlencode from sickbeard import logger from sickbeard import tvcache + class BTDIGGProvider(generic.TorrentProvider): def __init__(self): @@ -70,7 +72,7 @@ class BTDIGGProvider(generic.TorrentProvider): for torrent in jdata: if not torrent['ff']: title = torrent['name'] - download_url = torrent['magnet'] + "&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://open.demonii.com:1337&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://exodus.desync.com:6969" + download_url = torrent['magnet'] + self._custom_trackers size = torrent['size'] # FIXME seeders = 1 diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 37c992b75956101ae95fcbe510ec56d0d9095392..b1c59d0650abde589970abfedd7a5c95d33fc5cb 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -639,6 +639,10 @@ class TorrentProvider(GenericProvider): def _clean_title_from_provider(title): return (title or '').replace(' ', '.') + @property + def _custom_trackers(self): + return ('', '&tr=' + '&tr='.join(set([x.strip() for x in sickbeard.TRACKERS_LIST.split(',') if x.strip()])))[self.public] if sickbeard.TRACKERS_LIST else '' + def findPropers(self, search_date=datetime.datetime.today()): results = [] diff --git a/sickbeard/providers/torrentproject.py b/sickbeard/providers/torrentproject.py index 7e53ac31459e9e05cf688e9fa2b09015596f766f..b9c52266d88910d4ea7ab80137ec22b5279499cc 100644 --- a/sickbeard/providers/torrentproject.py +++ b/sickbeard/providers/torrentproject.py @@ -24,6 +24,7 @@ from sickbeard import helpers from sickbeard.providers import generic from sickbeard.common import USER_AGENT + class TORRENTPROJECTProvider(generic.TorrentProvider): def __init__(self): @@ -83,7 +84,7 @@ class TORRENTPROJECTProvider(generic.TorrentProvider): assert jdata is not "maintenance" download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + "".join(["&tr=" + s for s in jdata]) except (Exception, AssertionError): - download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + "&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://open.demonii.com:1337&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://exodus.desync.com:6969" + download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + self._custom_trackers if not all([title, download_url]): continue diff --git a/sickbeard/providers/torrentz.py b/sickbeard/providers/torrentz.py index bc93864ec303f17aafd2a6421f2c3c83da408822..f1dd3e8ffaba848dfced0340fdbe8c4e770df8c5 100644 --- a/sickbeard/providers/torrentz.py +++ b/sickbeard/providers/torrentz.py @@ -30,6 +30,7 @@ from sickbeard import tvcache from sickbeard.providers import generic from sickbeard.common import cpu_presets + class TORRENTZProvider(generic.TorrentProvider): def __init__(self): @@ -106,7 +107,7 @@ class TORRENTZProvider(generic.TorrentProvider): continue # TODO: Add method to generic provider for building magnet from hash. - download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + "&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://open.demonii.com:1337&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://exodus.desync.com:6969" + download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + self._custom_trackers size, seeders, leechers = self._split_description(item.get('description', '')) # Filter unseeded torrent diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index c11ddf7e76ece02fc54dacbc4384478be26700a7..aa77da5998dcb2ab195bdc83840c8b19f50bdd93 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -3844,7 +3844,7 @@ class ConfigSearch(Config): torrent_dir=None, torrent_username=None, torrent_password=None, torrent_host=None, torrent_label=None, torrent_label_anime=None, torrent_path=None, torrent_verify_cert=None, torrent_seed_time=None, torrent_paused=None, torrent_high_bandwidth=None, - torrent_rpcurl=None, torrent_auth_type=None, ignore_words=None, require_words=None, ignored_subs_list=None): + torrent_rpcurl=None, torrent_auth_type=None, ignore_words=None, trackers_list=None, require_words=None, ignored_subs_list=None): results = [] @@ -3867,6 +3867,7 @@ class ConfigSearch(Config): sickbeard.USENET_RETENTION = config.to_int(usenet_retention, default=500) sickbeard.IGNORE_WORDS = ignore_words if ignore_words else "" + sickbeard.TRACKERS_LIST = trackers_list if trackers_list else "" sickbeard.REQUIRE_WORDS = require_words if require_words else "" sickbeard.IGNORED_SUBS_LIST = ignored_subs_list if ignored_subs_list else ""