• Stars
    star
    438
  • Rank 99,453 (Top 2 %)
  • Language
    Ruby
  • License
    GNU General Publi...
  • Created about 11 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Adds torrents from RSS feeds to Transmission web frontend

transmission-rss

Gem Version Build Status Coverage Status Code Climate Docker Hub Build Status

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.)

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-rss

From source

git clone https://github.com/nning/transmission-rss
cd transmission-rss
bundle
gem build transmission-rss.gemspec
gem install transmission-rss-*.gem

Via Docker

docker run -t \
  -v $(pwd)/transmission-rss.conf:/etc/transmission-rss.conf \
  nning2/transmission-rss:v1.2.1

Configuration

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/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

Using 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: true

All 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
  - 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
    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/seen

Daemonized 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.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.

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

More Repositories

1

svelte-rails

Svelte integration for Ruby on Rails
Ruby
61
star
2

david

CoAP server with Rack interface.
Ruby
37
star
3

protonutils

CLI tool providing utilities for Proton: List games by version, Download/update GE/Luxtorpeda, clean unused runtimes, clean unused compatdata, ...
Go
35
star
4

moeil

Møil is an open source administration user interface for database backed mail servers (postfix/dovecot).
Ruby
26
star
5

linux-grsec

Arch Linux package for the Linux Kernel and modules with grsecurity/PaX patches.
Shell
19
star
6

imgshr

Simple image gallery sharing web application.
Ruby
7
star
7

linux-pax-flags

Deactivates PaX flags for several binaries to work with PaX enabled kernels.
Ruby
7
star
8

pongo

Rudimentary Pong game with network multiplayer
Go
3
star
9

core-rd

CoRE Resource Directory
Ruby
3
star
10

linux-pax

Arch Linux package for the Linux Kernel and modules with PaX patches.
Shell
2
star
11

pineapple-update

Go
2
star
12

review_nagger

Nag people about pending GitLab Merge Request reviews via Slack
Ruby
2
star
13

thesis

A CoAP Server with a Rack Interface for Use of Web Frameworks such as Ruby on Rails in the Internet of Things
TeX
2
star
14

powerdns_dyndns

DynDNS web application for PowerDNS database schema.
Ruby
2
star
15

vigenere_jorin

Quick POC of an idea for a Vigenere variant, my 6 year old son came up with
Go
2
star
16

docker-truffleruby

Simple Docker image to try out TruffleRuby on GraalVM
1
star
17

svelte-rails-demo

Minimal Rails project that demonstrates integration of svelte-rails
Ruby
1
star
18

rails5-websocket-angular

Prototype for server push with ActionCable and AngularJS
Ruby
1
star
19

soap-bubble

Go
1
star
20

qmk_firmware_keychron

C
1
star
21

powerdns_db_cli

Minimal command-line interface for PowerDNS database administration.
PLpgSQL
1
star
22

paxctld

Arch Linux package for PaX flags maintenance daemon
Shell
1
star
23

pinglog

Small tool to ping continuously and save log as JSON
Go
1
star
24

gradm

Arch Linux package for the administrative interface for the grsecurity Role Based Access Control system.
Shell
1
star
25

deck-verified

Keeps track of Steam Deck Verifications. On first run, it reports all games with their respective Steam Deck Verification status. On subsequent runs, the tool will report newly tested and updated games.
Go
1
star