transmission-rss
transmission-rss is basically a workaround for transmission's lack of the ability to monitor RSS feeds and automatically add enclosed torrent links.
It works with transmission-daemon and transmission-gtk (if the web frontend is enabled in the settings dialog). Sites like showrss.info and ezrss.it or self-hosted seriesly instances are suited well as feed sources.
A tool called transmission-add-file is also included for mass adding of torrent files.
As it's done with poems, I devote this very artful and romantic piece of code to the single most delightful human being: Ann.
The minimum supported Ruby version is 2.1. (You will need rbenv if your
os does not support Ruby >= 2.1, e.g. on Debian wheezy.)
Note, that this README is for the current development branch! You can find a link to a suitable README for your version on the releases page.
Installation
Latest stable version from rubygems.org
gem install transmission-rssFrom source
git clone https://github.com/nning/transmission-rss
cd transmission-rss
bundle
gem build transmission-rss.gemspec
gem install transmission-rss-*.gemVia Docker
docker run -t \
-v $(pwd)/transmission-rss.conf:/etc/transmission-rss.conf \
nning2/transmission-rss:v1.2.1Go Version
There is a preview version of transmission-rss written in Go in the "go" subfolder. It has a separate README and supports a similar configuration format with some caveats but does not implement nearly as many features as the Ruby version (on purpose). It comes with CLI utilities for adding torrents by file or magnet link, and to add torrents from eztv by imdb ID.
Install from the repository:
make installConfiguration
A yaml formatted config file is expected at /etc/transmission-rss.conf. Users
can override some options for their transmission-rss instances by providing a
config at ~/.config/transmission-rss/config.yml (or in $XDG_CONFIG_HOME
instead of ~/.config).
WARNING: If you want to override a nested option like log.target you also
have to explicitly specify the others like log.level. (True for categories
server, login, log, privileges, and client.)
Minimal example
It should at least contain a list of feeds:
feeds:
- url: http://example.com/feed1
- url: http://example.com/feed2Feed item titles can be filtered by a regular expression:
feeds:
- url: http://example.com/feed1
regexp: foo
- url: http://example.com/feed2
regexp: (foo|bar)Feeds can also be configured to download files to specific directory:
feeds:
- url: http://example.com/feed1
download_dir: /home/user/DownloadsSetting the seed ratio limit is supported per feed:
feeds:
- url: http://example.com/feed1
seed_ratio_limit: 0Configurable certificate validation, good for self-signed certificates. Default is true:
feeds:
- url: http://example.com/feed1
validate_cert: falseUsing the GUID instead of the link for tracking seen torrents is also available, useful for changing URLs such as Prowlarr's proxy links. Default is false:
feeds:
- url: http://example.com/feed1
seen_by_guid: trueAll available options
The following configuration file example contains every existing option
(although update_interval, add_paused, server, log, fork, single, and
pid_file are default values and could be omitted). The default log.target is
STDERR. privileges is not defined by default, so the script runs as current
user/group. login is also not defined by default. It has to be defined, if
transmission is configured for HTTP basic authentication.
See ./transmission-rss.conf.example for more documentation.
feeds:
- url: http://example.com/feed1
- url: http://example.com/feed2
- url: http://example.com/feed3
regexp: match1
- url: http://example.com/feed4
regexp: (match1|match2)
- url: http://example.com/feed5
download_path: /home/user/Downloads
delay_time: 2
- url: http://example.com/feed6
seed_ratio_limit: 1
- url: http://example.com/feed7
regexp:
- match1
- match2
- url: http://example.com/feed8
regexp:
- matcher: match1
download_dir: /home/user/match1
- matcher: match2
download_dir: /home/user/match2
- url: http://example.com/feed9
validate_cert: false
seen_by_guid: true
update_interval: 600
add_paused: false
server:
host: localhost
port: 9091
tls: false
rpc_path: /transmission/rpc
login:
username: transmission
password: transmission
log:
target: /var/log/transmissiond-rss.log
level: debug
privileges:
user: nobody
group: nobody
client:
timeout: 5
fork: false
single: false
pid_file: false
seen_file: ~/.config/transmission/seenDaemonized Startup
As a systemd service
The following content can be saved into
/etc/systemd/system/transmission-rss.service to create a systemd unit.
Remember checking the path in ExecStart.
[Unit]
Description=Transmission RSS daemon.
After=network.target transmission-daemon.service
[Service]
Type=forking
ExecStart=/usr/local/bin/transmission-rss -f
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.targetThe unit files are reloaded by systemctl daemon-reload. You can then start
transmission-rss by running systemctl start transmission-rss. Starting on
boot, can be enabled systemctl enable transmission-rss.
As a cronjob
transmission-rss can also be started in a single run mode, in which it runs a single loop and then exits. To do so, transmission-rss needs to be started with the -s flag. An example crontab line for running every 10 minutes can be:
*/10 * * * * /usr/local/bin/transmission-rss -s