Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Look at this img: enter image description here

Generally, Transmission tries to download all of items which are defined in a torrent file, concurrently. For example, if we have 10 item in a torrent file, after 1 hour, they can be in a range of 15% - 50% of progress (depending to the rate of download).

Is it possible to force Transmission to download items one by one: alphabetically or by sizes, etc. I know I can check/uncheck items manually as you see in the above image, but I'm asking for a way to do it automatically.

share|improve this question
    
Maybe you can try deluge that allows you to prioritize files and there's even a plugin that allows you to download sequentially all pieces (by prioritization) –  Braiam Jul 20 at 21:32
    
@Braiam, I need to run the client on GDM, without login and Transmission-Daemon can do it while graphical torrent clients such as deluge need login to Desktop! –  mini Jul 21 at 2:25
    
Are you sure? I can have deluged as daemon running on boot without even login. –  Braiam Jul 21 at 2:38
    
Wow, Deluge vs Deluged; so I'll try it in Cron. –  mini Jul 21 at 10:12
    
Cron? Why cron? Just set it up to start at the system startup. –  Braiam Jul 21 at 14:36

1 Answer 1

libtransmission has a python API, so you could script anything you want... but no, that feature is not baked in.

Here's a working example

#!/usr/bin/env python3

import transmissionrpc

tc = transmissionrpc.Client('localhost', port=(9091))

torrents = tc.get_torrents()
for torrent in torrents:
  if torrent.status == 'downloading':
    low = []
    torrent_files = torrent.files()
    for item in torrent_files:
      low.append(item)
    high = []
    for item in sorted(torrent_files, key=lambda x: torrent_files[x]['name']):
      if torrent_files[item]['size'] - torrent_files[item]['completed'] > 0:
        high.append(item)
        break
    try:
      low.pop(low.index(high[0]))
    except:
      pass
    tc.change(torrent.id, priority_high=high, priority_low=low)    

I put together a desktop widget to do this for me here.

share|improve this answer
    
Is this script just using port 9091? –  mini Aug 20 at 11:30
    
Yes. It's the default transmission-rpc port that only accepts connections from 127.0.0.1 if enabled without auth and no trusted hosts are specified. –  hbdgaf Aug 20 at 13:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.