After failing with other programs, I was able to deploy this one and it was even quite pleasant.
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.karmorra.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.)
lxc-start --name transfeed_lxc
lxc-attach --name transfeed_lxc
sudo apt install nano
sudo apt install git
git clone https://github.com/paprikodlak/transmission-rss
cd transmission-rss
sudo apt-get install rubygems ruby-dev
bundle
gem build transmission-rss.gemspec
gem install transmission-rss-*.gem
nano /etc/transmission-rss.conf
crontab -e
feeds:
- url: https://showrss.info/user/xxx.rss?magnets=true&namespaces=true&name=clean&quality=fhd&re=yes
seed_ratio_limit: 0
add_paused: false
server:
host: 10.0.0.7
port: 9091
Add to first line:
MAILTO=""
Append at the end to run every 10 minutes:
*/10 * * * * /usr/local/bin/transmission-rss -s >> /root/transmission-rss/log/cronLog 2>&1
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
.)
It should at least contain a list of feeds:
feeds:
- url: http://example.com/feed1
- url: http://example.com/feed2
Feed 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_path: /home/user/Downloads
Setting the seed ratio limit is supported per feed:
feeds:
- url: http://example.com/feed1
seed_ratio_limit: 0
Configurable certificate validation, good for self-signed certificates. Default is true:
feeds:
- url: http://example.com/feed1
validate_cert: false
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
- 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_path: /home/user/match1
- matcher: match2
download_path: /home/user/match2
- url: http://example.com/feed9
validate_cert: false
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/seen
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.target
The 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
.
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