rTorrent is a text-based BitTorrent client, which
makes it convenient to leave running in a screen
or
tmux
session, so you don't have to leave a terminal window
open and you can access it remotely over ssh
. It also has an API
for web frontends if you don't like text.
Basic setup#
You can set it up to automatically start and stop downloads based on
placing .torrent
files into a watch/
directory by putting the following
in your ~/.rtorrent.rc
:
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = ./session
# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=./watch/*.torrent
Those settings also use a session directory to keep track of torrents across runs of rTorrent, which is useful if you have a lot of torrents and want to be able to restart rTorrent, say, after rebooting your computer. Note rTorrent will complain if the session directory doesn't already exist, so your first run will look like
$ screen
$ mkdir session watch
$ rtorrent
That configuration uses relative paths for watch/
and session/
so
you can have multiple instances of rTorrent in different directories.
magnet:
links#
In additional to .torrent
files, BitTorrent also supports
magnet:
links as a way to join a torrent without needing a
file. There is built-in support for magnet:
links in rTorrent,
but it requires a little extra work to make clicking one in a web browser
start the download in rTorrent. Here's a script for doing so
along with instructions for having your web browser use it to handle
magnet:
links. I modified it to handle multiple watch/
directories:
#!/bin/bash
DEFAULT_WATCH='/path/to/your/watch'
if [[ $# -ge 2 ]]
then
WATCH="$2"
else
if [[ -z "$DISPLAY" ]]
then
WATCH="$DEFAULT_WATCH"
else
WATCH=$(zenity --file-selection --directory --title="Select rtorrent watch directory" --filename="$DEFAULT_WATCH")
[[ "$(basename "$WATCH")" = watch ]] || exit;
fi
fi
cd "$WATCH"
[[ $1 =~ xt=urn:btih:([^&/]+) ]] || exit;
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"
This script uses bash
because it uses the bash
-only
=~
operator for regular expression matching.
This script has a hard-coded default directory to use, but supports
either specifying a different directory as the second argument or
will use zenity
to show a dialog asking the user to
select a watch/
directory. zenity
is quite useful for easily
adding interactivity to shell scripts, especially for something like a
directory chooser which doesn't work as well in text.
Comments
Have something to add? Post a comment by sending an email to comments@aweirdimagination.net. You may use Markdown for formatting.
There are no comments yet.