Opened 12 years ago

Closed 11 years ago

#4231 closed Enhancement (duplicate)

Allow for multiple watch-dirs and also then multiple download-dirs

Reported by: sprawl Owned by:
Priority: Normal Milestone: None Set
Component: Daemon Version: 2.22
Severity: Normal Keywords:


I am using transmission together with SickBeard? and CouchPotato?, both those tools support post processing, meaning when the torrent is finished downloading (it appears in the download dir) the application will pick it up and do some renaming and moving the file to the designated place.

However the different applications seem to step on each other's toes so sometime CouchPotato? finds the downloaded files from SickBeard? and renames them wrongly and put them in the wrong place.

This is obviously not a problem with Transmission but a nice feature would be if there can be more than one watch-dir and a corresponding download-dir.

The attached patch has a solution to this so when configuring a watch-dir like: /torrents/incoming if enabled it then also will find files in any other directory starting with the same name, like: /torrents/incoming-sickbeard /torrents/incoming-couchpotato

also then when there is a download dir like, /torrents/completed the patch will change the download-dir to match then incoming dir so they will be put in /torrents/completed-sickbeard /torrents/completed-couchpotato

this is enabled by putting: "watch-dir-suffix-enabled": true in settings.json

I would be happy if you would consider putting this patch into trunk.

Attachments (1)

transmission-multiple-watchdirs.patch (6.9 KB) - added by sprawl 12 years ago.
Path file

Download all attachments as: .zip

Change History (6)

Changed 12 years ago by sprawl

Path file

comment:1 Changed 12 years ago by livings124

  • Component changed from Transmission to Daemon

comment:2 Changed 12 years ago by mgbastard

sprawl, interesting idea, but your implementation would be subject to user confusion; it gets turned on, either forgotten about or misunderstood, and the user experiences unexplained behavior. I think it would look like a low-quality bug.

it's just toooo hacky!

but here's an idea:

I'd recommend that you refactor your patch such that each watch-dir and download-dir pair is created by a json setting, in an array.

"watch-dir-pairs": [ 
    {"watch-dir": "/path/to/incoming-couchpotato", "download-dir": "/path/to/download-couchpotato"},
    {"watch-dir": "/path/to/incoming-sickbeard", "download-dir": "/path/to/download-sickbeard"},
    {"watch-dir": "/path/to/incoming-yatool", "download-dir": "/path/to/download-yatool"}

But still, enable/disable it with the setting:

"watch-dir-pairs-enabled": true

comment:3 Changed 12 years ago by sprawl

mgbastard, thanks for your feedback. I did some more research on how other tools are doing this after I submitted my patch and I found that sabnzbd is doing it in a bit similar (but cleaner) way than my proposal.

You can read at under the section Sub Folders that if there are sub-folders under the incoming directory which match the name of a Category jobs are taken from there and allocated to that category. This could be made in a similar way for transmission with the discussed feature group. Then we can have different settings per group like download-dir (and priority, ...).

I don't know the current state of thoughts / progress in the area of tags / groups and therefore maybe your suggestion would be better to go with, nothing says that we couldn't add a piece of information in the watch-dir setting to indicate with tags / group a torrent should belong to at a later stage.

How do you propose that I should continue?

comment:4 Changed 12 years ago by jordan

  • Version changed from 2.22+ to 2.22

Changing version from 2.22+ to 2.22... the '+' is for post-2.22 regressions.

This seems like it would be good for libtransmission rather than the Daemon s.t. non-daemon clients could use the feature too... especially since transmission-gtk and transmission-daemon share the same settings.json format. But that opens the question of whether or not we would want to move watch.[ch] into libtransmission and add Mac / GIO #ifdefs for it... right now libtransmission doesn't have any GIO hooks at all. I'm not sure what the Right Thing would be there.

comment:5 Changed 11 years ago by livings124

  • Resolution set to duplicate
  • Status changed from new to closed

This is a duplicate of #3811 and #3607

Note: See TracTickets for help on using tickets.