Feature Request: Max active downloads/uploads

Suggestions and discussion of future versions
Post Reply
zhark
New User
New User
Posts: 5
Joined: Fri Jan 25, 2008 5:46 pm

Feature Request: Max active downloads/uploads

Post by zhark »

Hello!

I would like to suggest that the "Maximum number of active torrents" under the Downloads tab i split into two variables, one for downloads&uploads (total) and one for only downloads. The way it is now, if I set the variable to 1, it will seed/leech the first torrent in queue, but all the finished torrents will also stop seeding.
I would like to be able to always seed finished downloads, but at the same time also be able to limit the number of concurrent downloads.

I'm sorry if this has been posted before.

Best regards and thanks for all the hard work on Deluge!
ajaxas
Member
Member
Posts: 11
Joined: Mon Jan 21, 2008 12:40 pm
Location: Novosibirsk, Russia
Contact:

Re: Feature Request: Max active downloads/uploads

Post by ajaxas »

I second that. A useful and long-awaited (for me) feature.
Frosty
Member
Member
Posts: 27
Joined: Fri Nov 16, 2007 4:28 am

Re: Feature Request: Max active downloads/uploads

Post by Frosty »

+1 to request, it's really needed.
yozik
New User
New User
Posts: 4
Joined: Sun Jun 29, 2008 10:58 pm

Re: Feature Request: Max active downloads/uploads

Post by yozik »

sounds like this will be a new feature in 0.6

http://forum.deluge-torrent.org/viewtop ... +downloads

and for those of you who cannot wait till 0.6 comes out, I have a little hack on the 0.5.9.2 release

it requires that you have
"Settings->Seeding->Queue torrents to bottom when they begin seeding" checked
and
"Settings->Seeding->Queue new torrents above completed ones" checked

what I have done is modified core.py to not count seeding torrents as "active" and thus you can now set "Downloads->Torrents->Maximum simultaneous active torrents" to what ever you desire as the max active downloading

the file I have changed is located (under Debian linux, your location may vary) /usr/share/python-support/deluge-torrent/deluge/core.py

Code: Select all

--- core.py     2008-06-29 13:53:53.000000000 -0700
+++ deluge-torrent/deluge/core.py       2008-06-29 15:29:56.000000000 -0700
@@ -613,18 +613,20 @@ class Manager:
             
             if not torrent_state['is_paused'] or \
                (torrent_state['is_paused'] and not \
-                self.is_user_paused(unique_ID)):
-                active_torrent_cnt += 1 
-            
+                self.is_user_paused(unique_ID)) and not \
+                               torrent_state['is_seed']:
+                       active_torrent_cnt += 1
+                                
+            #resume seeding torrents
+            if torrent_state['is_finished'] and not \
+                               self.is_user_paused(unique_ID):
+                       self.resume(unique_ID)
+                       continue
+
             if (active_torrent_cnt <= self.get_pref('max_active_torrents') or \
                 self.get_pref('max_active_torrents') == -1) and \
-               torrent_state['is_paused'] and not \
-               self.is_user_paused(unique_ID):
-                # This torrent is a seed so skip all the free space checking
-                if torrent_state['is_finished']:
-                    self.resume(unique_ID)
-                    continue
-                    
+                torrent_state['is_paused'] and not \
+                self.is_user_paused(unique_ID):        
                 # Before we resume, we should check if the torrent is using Full Allocation 
                 # and if there is enough space on to finish this file.
                 if not self.unique_IDs[unique_ID].compact:
@@ -651,6 +653,7 @@ Space:") + " " + nice_free)
                 else: #We're using compact allocation so lets just resume
                     self.resume(unique_ID)
             elif not torrent_state['is_paused'] and \
+                               not (torrent_state["is_seed"] and not self.is_user_paused(unique_ID))  and \
                  ((active_torrent_cnt > self.get_pref('max_active_torrents') and \
                    self.get_pref('max_active_torrents') != -1) or \
                   self.is_user_paused(unique_ID)):
yozik
New User
New User
Posts: 4
Joined: Sun Jun 29, 2008 10:58 pm

Re: Feature Request: Max active downloads/uploads

Post by yozik »

Moderators, there's prob a better place for these

with the 0.5.9.2 release I noticed that the status of the torrents were not getting updated when I did force recheck (initial thought was my changes in my previous post borked something, so I was off to fix them only to find out that the original install I had had the same issue)

here is a patch that fixes that (or attempts to)

I'm sure there's prob a more elegant way of coding this logic

Code: Select all

--- interface.py	2008-06-29 17:27:48.000000000 -0700
+++ deluge-torrent/deluge/interface.py	2008-06-29 20:41:47.000000000 -0700
@@ -954,18 +954,18 @@ window, please enter your password"))
         is_paused = torrent_state['is_paused']
         progress = torrent_state['progress']
         progress = '%d%%' % (progress * 100)
-        if is_paused:
-            if self.manager.is_user_paused(unique_id):
-                message = _("Paused %s") % progress
-            else:
-                message = _("Queued %s") % progress
-        else:
-            try:
-                message = core.STATE_MESSAGES[state]
-                if state in (1, 3, 4, 7):
-                    message = '%s %s' % (message, progress)
-            except IndexError:
-                message = ''
+        message = ''
+        try:
+			message = core.STATE_MESSAGES[state]
+			if state in (1, 3, 4, 5, 6, 7):
+				if self.manager.is_user_paused(unique_id):
+					message = _("Paused %s") % progress
+				elif is_paused == 1 and state != 1:
+					message = _("Queued %s") % progress
+				else:
+					message = '%s %s' % (message, progress)
+        except IndexError:
+        	message = ''
         return message
     
     # UID, Q#, Name, Size, Progress, Message, Seeders, Peers, DL, UL, ETA, 
Post Reply