From 458da420b1df7e395eb55b446780c1dac05d35de Mon Sep 17 00:00:00 2001
From: supergonkas <duramato@users.noreply.github.com>
Date: Sun, 22 Nov 2015 15:05:43 +0000
Subject: [PATCH] Make trackers not hardcoded ,and add as an option

---
 gui/slick/views/config_search.mako    | 12 ++++++++++++
 sickbeard/__init__.py                 |  5 ++++-
 sickbeard/providers/btdigg.py         |  4 +++-
 sickbeard/providers/generic.py        |  4 ++++
 sickbeard/providers/torrentproject.py |  3 ++-
 sickbeard/providers/torrentz.py       |  3 ++-
 sickbeard/webserve.py                 |  3 ++-
 7 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/gui/slick/views/config_search.mako b/gui/slick/views/config_search.mako
index 6e4359754..8beab44b5 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 af912e0ea..765cb7626 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 f688b7185..553e7e320 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 37c992b75..b1c59d065 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 7e53ac314..b9c52266d 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 bc93864ec..f1dd3e8ff 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 c11ddf7e7..aa77da599 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 ""
 
-- 
GitLab