Skip to content

TORRENT Watch directories

jtitosky edited this page Apr 14, 2019 · 8 revisions

Watch Directories


To load torrent files dropped into special folders (by direct download, DropBox, scp, sshfs, and so on), you can extend your configuration with scheduled checks trying to load new files from these folders.

Watch Directory Schedules

These examples load items from different directories, in started state or idle. The 3rd example shows how to set a non-default download path, using a post-load command.

schedule2 = watch_directory_foo, 20, 10, "load.start_verbose=~/watch_foo/*.torrent"
schedule2 = watch_directory_bar, 21, 10, "load.verbose=~/watch_bar/*.torrent"
schedule2 = watch_directory_baz, 22, 10, "load.verbose=~/watch_baz/*.torrent,"

The used verbose load commands log any problems to the console. Be aware though that half-written files can lead to spurious warnings, especially if your schedules have an interval like only 1 second. Use the load.start or load.normal commands instead if you do not want any diagnostics.

Also note that the start times are incremental, to spread the load caused by scanning the watch directories.

Dynamic Start Behaviour

Sometimes you want to easily change whether an item loaded by a watch is started immediately or not. This is especially useful when combined with automatic downloaders like FlexGet or autodl-irssi. Usually, newly added items are started immediately – that is the whole point of automation.

In some cases though, you might want to disable that and delay downloading until later. Testing configuration changes is a typical reason, because an innocent mistake could swamp you with lots of downloads. If they stay dormant at first, that is easily fixed.

See Watches With Dynamic Start Behaviour for how to set this up.

Tied Files

# Either use this…
schedule2 = tied_directory, 10, 10, start_tied=
schedule2 = untied_directory, 10, 10, stop_untied=

# OR one of these, the combination does not make sense
schedule2 = untied_directory, 10, 10, close_untied=
schedule2 = untied_directory, 10, 10, remove_untied=

When a download is created the torrent file's original path is associated with the download. When the commands '*_untied' are called the respective actions (stop, close, remove) are called for downloads if their original torrent file is not found.

The reverse happens if 'start_tied' is called.


On Linux and using v0.9.7+, you may use inotify to watch a directory, and the provided command is called with the the full path of new files as the first argument. Use method.insert to define more complex multi-command inotify handlers, or when you want to pass additional parameters to a handler command. = "~/Download/watch/", load.start

Here is an example using inotify to watch multiple directories and move the files to a different subdirectory based on the watch directory. It will also set the rutorrent category to match the watch directory.

method.insert = load_television, simple|private, "load.start_verbose=(argument.0), d.custom1.set=television" = "/downloads/watched/television/","load_television"

method.insert = load_movies, simple|private, "load.start_verbose=(argument.0), d.custom1.set=movies" = "/downloads/watched/movies/","load_movies"

method.insert = d.get_finished_dir,simple,"cat=/downloads/completed/,$d.custom1="
method.insert = d.update_dir,simple,"$d.get_finished_dir="
method.insert = d.move_torrent_data,simple,"execute=mkdir,-p,$d.get_finished_dir=;execute=mv,-f,$d.base_path=,$d.get_finished_dir=;"
method.set_key =,move_complete,"d.update_dir=;d.move_torrent_data=;d.save_full_session="