Go to file
Tony Blyler 838d0aa3a9 Use Go 1.7 for Travis and builds 2016-08-20 18:26:02 -04:00
cmd/hoarder Change defer to explicit function call before os.Exit() 2016-07-07 21:56:44 -04:00
metainfo Use vendoring 2016-06-15 20:41:31 -04:00
queue Add a backoff timeout to checking diskspace and logging about it 2016-07-28 22:11:22 -04:00
.gitignore Rewrote hoarder in Bash. 2015-02-06 22:20:06 -05:00
.gitmodules Add ability to prevent downloads based off of available disk space 2016-07-23 17:23:36 -04:00
.travis.yml Use Go 1.7 for Travis and builds 2016-08-20 18:26:02 -04:00
LICENSE Project is now in Go 2014-12-23 17:38:01 -05:00
README.md Add ability to prevent downloads based off of available disk space 2016-07-23 17:23:36 -04:00
hoarder.sh Only look at .torrent files in the bash implementation 2016-05-16 09:55:56 -04:00

README.md

Build Status

Hoarder

Uploads .torrent files from a local "blackhole" to a remote (SSH) rtorrent watch folder. From there, rtorrent is polled over XMLRPC as to whether the torrent is completed. Finally, the files are downloaded over a multithreaded SSH connection and saved to the local machine. The blackhole is used as a queue and will have its .torrent files deleted.

Installation

Manual

  1. Install Go for your Operating System
  2. Run $ go get -u github.com/tblyler/hoarder/cmd/hoarder
  3. If your GOPATH is in your PATH, run $ hoarder -config $PATH_TO_HOARDER_CONF

Precompiled

  1. Go to the Hoarder releases page
  2. Look at whichever release you're interested in
  3. Download a precompiled binary for the given operating system of your choice
  4. Make the binary executable and run

Configuration

Example

# The file mode to use for downloaded files and directories
file_download_filemode: 0777

# The correlation of .torrent file paths and where their contents should be downloaded to"
watch_to_download_paths:
  /home/tblyler/torrent_files/tv: /home/tblyler/Downloads/tv
  /home/tblyler/torrent_files/movies: /home/tblyler/Downloads/movies
  /home/tblyler/torrent_files: /home/tblyler/Downloads

# The root path to temporarily download to and then move to the folder in the setting above. The destination path is created underneath the temp_download_path
temp_download_path: /home/tblyler/tempDownloads

# If defined, the finished .torrent files finished are moved to their respected path here. Otherwise, they are deleted.
watch_to_finish_path:
  /home/tblyler/torrent_files/tv: /home/tblyler/completed_torrent_files/tv
  /home/tblyler/torrent_files: /home/tblyler/completed_torrent_files

# The time in nano seconds to update the list of torrents and their statuses in rTorrent
rtorrent_update_interval: 60000000000

# The number of concurrent completed torrent downloads to have at one time
download_jobs: 2

# Whether or not to attempt to resume a previously interrupted download
resume_downloads: true

# Path to the unix socket file that hoarder uses for RPC
rpc_socket_path: /tmp/hoarder.sock

# Whether or not to see if there is enough disk space before starting a download
check_disk_space: true

# (must have check_disk_space set to true) Minimum disk space to have after completed downloads (measured in bytes, 0 to disable check)
min_disk_space: 5368709120

rtorrent:
  # The address to the rtorrent XMLRPC endpoint
  addr: https://mycoolrtorrentserver.com/XMLRPC

  # true to ignore the certificate authenticity; false to honor it
  insecure_cert: false

  # The HTTP Basic auth username to use for rtorrent's XMLRPC
  username: JohnDoe

  # The HTTP Basic auth password to use for rtorrent's XMLRPC
  password: "correct horse battery staple"

ssh:
  # The ssh username to use for getting finished torrents from the remote host
  username: JohnDoe

  # You may choose to use an ssh key or ssh password. If both are supplied, the password will not be used.

  # The SSH password to use for SSH authentication
  password: "correct horse battery staple SSH"

  # The path to the private SSH key for SSH authentication
  privkey_path: /home/tblyler/.ssh/id_rsa

  # The SSH address to connect to
  addr: "mysshserver.com:22"

  # The time in nano seconds to wait for an SSH connection attempt
  connect_timeout: 30000000000