Module: deluge
Branch: master
Commit: 8ae26c368edd7526b18c460e8a7c1b49e099bb83

Author: Calum Lind <[email protected]>
Date:   Tue Jun 28 01:34:58 2011 +0100

Add #890: If added torrent already exists, append extra trackers to it

---

 deluge/core/torrentmanager.py |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py
index a3b8ca6..d844f18 100644
--- a/deluge/core/torrentmanager.py
+++ b/deluge/core/torrentmanager.py
@@ -440,6 +440,34 @@ class TorrentManager(component.Component):
         add_torrent_params["auto_managed"] = False
         add_torrent_params["duplicate_is_error"] = True
 
+        # If torrent already exists just append any extra trackers.
+        if state is None:
+            add_torrent_id = str(add_torrent_params["ti"].info_hash())
+            if add_torrent_id in self.get_torrent_list():
+                log.debug("Torrent (%s) exists, checking for trackers to 
add...", add_torrent_id)
+                add_torrent_trackers = []
+                for value in add_torrent_params["ti"].trackers():
+                    tracker = {}
+                    tracker["url"] = value.url
+                    tracker["tier"] = value.tier
+                    add_torrent_trackers.append(tracker)
+
+                torrent_trackers = {}
+                tracker_list = []
+                for tracker in  
self[add_torrent_id].get_status(["trackers"])["trackers"]:
+                    torrent_trackers[(tracker["url"])] = tracker
+                    tracker_list.append(tracker)
+
+                added_tracker = False
+                for tracker in add_torrent_trackers:
+                    if tracker['url'] not in torrent_trackers:
+                        tracker_list.append(tracker)
+                        added_tracker = True
+
+                if added_tracker:
+                    self[add_torrent_id].set_trackers(tracker_list)
+                return
+
         # We need to pause the AlertManager momentarily to prevent alerts
         # for this torrent being generated before a Torrent object is created.
         component.pause("AlertManager")

-- 
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en.

Reply via email to