transmission-rss 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/bin/transmission-rss +2 -1
- data/lib/transmission-rss/aggregator.rb +7 -4
- data/lib/transmission-rss/client.rb +10 -4
- data/lib/transmission-rss/feed.rb +18 -5
- data/lib/transmission-rss/version.rb +1 -1
- data/transmission-rss.conf.example +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c08a8eb75a7ce3cfebf177e7aab2c0e90306ade0ba55160f3a15aeedf564ec
|
4
|
+
data.tar.gz: c438995f60f9ebb6bf4f58545872e2e951fb73fdffe8ea291cc134982b4102d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec075911c8d8580a1717f70e960fba7962467ba1f51dad18a9a515b29c8442be4c22d5c5a868f879b97268fd1e5ee1cbf6b961738a5a9577798c420590827703
|
7
|
+
data.tar.gz: d8376330285b34ea11186bef4b74dc39e6ace47b27c5cee36647d595d0d7533619828625ffe52ca310aba3cdd0aa6a24caa15327a77a0e33b07771861dd8404d
|
data/README.md
CHANGED
@@ -51,7 +51,7 @@ gem install transmission-rss-*.gem
|
|
51
51
|
```sh
|
52
52
|
docker run -t \
|
53
53
|
-v $(pwd)/transmission-rss.conf:/etc/transmission-rss.conf \
|
54
|
-
nning2/transmission-rss:v1.
|
54
|
+
nning2/transmission-rss:v1.2.1
|
55
55
|
```
|
56
56
|
|
57
57
|
Configuration
|
@@ -114,6 +114,15 @@ feeds:
|
|
114
114
|
validate_cert: false
|
115
115
|
```
|
116
116
|
|
117
|
+
Using the GUID instead of the link for tracking seen torrents is also available,
|
118
|
+
useful for changing URLs such as Prowlarr's proxy links. Default is false:
|
119
|
+
|
120
|
+
```yaml
|
121
|
+
feeds:
|
122
|
+
- url: http://example.com/feed1
|
123
|
+
seen_by_guid: true
|
124
|
+
```
|
125
|
+
|
117
126
|
### All available options
|
118
127
|
|
119
128
|
The following configuration file example contains every existing option
|
@@ -150,6 +159,7 @@ feeds:
|
|
150
159
|
download_path: /home/user/match2
|
151
160
|
- url: http://example.com/feed9
|
152
161
|
validate_cert: false
|
162
|
+
seen_by_guid: true
|
153
163
|
|
154
164
|
update_interval: 600
|
155
165
|
|
data/bin/transmission-rss
CHANGED
@@ -133,7 +133,8 @@ unless config.privileges.empty?
|
|
133
133
|
':' +
|
134
134
|
config.privileges.group
|
135
135
|
else
|
136
|
-
|
136
|
+
user = Etc.getpwuid(Process.euid).name
|
137
|
+
log.debug('no privilege dropping, running as user ' + user)
|
137
138
|
end
|
138
139
|
|
139
140
|
# Warn if no feeds are given.
|
@@ -112,11 +112,14 @@ module TransmissionRSS
|
|
112
112
|
# Link is not a String directly.
|
113
113
|
link = link.href if link.class != String
|
114
114
|
|
115
|
+
# Determine whether to use guid or link as seen hash
|
116
|
+
seen_value = feed.seen_by_guid ? (item.guid.content rescue item.guid || link).to_s : link
|
117
|
+
|
115
118
|
# The link is not in +@seen+ Array.
|
116
|
-
unless @seen.include?(
|
119
|
+
unless @seen.include?(seen_value)
|
117
120
|
# Skip if filter defined and not matching.
|
118
|
-
unless feed.matches_regexp?(item.title)
|
119
|
-
@seen.add(
|
121
|
+
unless feed.matches_regexp?(item.title) && !feed.exclude?(item.title)
|
122
|
+
@seen.add(seen_value)
|
120
123
|
return
|
121
124
|
end
|
122
125
|
|
@@ -129,7 +132,7 @@ module TransmissionRSS
|
|
129
132
|
rescue Client::Unauthorized, Errno::ECONNREFUSED, Timeout::Error
|
130
133
|
@log.debug('not added to seen file ' + link)
|
131
134
|
else
|
132
|
-
@seen.add(
|
135
|
+
@seen.add(seen_value)
|
133
136
|
end
|
134
137
|
end
|
135
138
|
|
@@ -64,10 +64,16 @@ module TransmissionRSS
|
|
64
64
|
@log.debug(log_message)
|
65
65
|
|
66
66
|
if id && options[:seed_ratio_limit]
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
if options[:seed_ratio_limit].to_f < 0
|
68
|
+
set_torrent(id, {
|
69
|
+
'seedRatioMode' => 2
|
70
|
+
})
|
71
|
+
else
|
72
|
+
set_torrent(id, {
|
73
|
+
'seedRatioLimit' => options[:seed_ratio_limit].to_f,
|
74
|
+
'seedRatioMode' => 1
|
75
|
+
})
|
76
|
+
end
|
71
77
|
end
|
72
78
|
|
73
79
|
response
|
@@ -1,18 +1,18 @@
|
|
1
1
|
module TransmissionRSS
|
2
2
|
class Feed
|
3
|
-
attr_reader :url, :regexp, :config, :validate_cert
|
3
|
+
attr_reader :url, :regexp, :config, :validate_cert, :seen_by_guid
|
4
4
|
|
5
5
|
def initialize(config = {})
|
6
6
|
@download_paths = {}
|
7
|
+
@excludes = {}
|
7
8
|
|
8
9
|
case config
|
9
10
|
when Hash
|
10
11
|
@config = config
|
11
12
|
|
12
|
-
@url = URI.escape(config['url'] || config.keys.first)
|
13
|
+
@url = URI.escape(URI.unescape(config['url'] || config.keys.first))
|
13
14
|
|
14
15
|
@download_path = config['download_path']
|
15
|
-
@validate_cert = config['validate_cert'].nil? || config['validate_cert']
|
16
16
|
|
17
17
|
matchers = Array(config['regexp']).map do |e|
|
18
18
|
e.is_a?(String) ? e : e['matcher']
|
@@ -20,11 +20,14 @@ module TransmissionRSS
|
|
20
20
|
|
21
21
|
@regexp = build_regexp(matchers)
|
22
22
|
|
23
|
-
|
23
|
+
initialize_download_paths_and_excludes(config['regexp'])
|
24
24
|
else
|
25
25
|
@config = {}
|
26
26
|
@url = config.to_s
|
27
27
|
end
|
28
|
+
|
29
|
+
@validate_cert = @config['validate_cert'].nil? || !!@config['validate_cert']
|
30
|
+
@seen_by_guid = !!@config['seen_by_guid']
|
28
31
|
end
|
29
32
|
|
30
33
|
def download_path(title = nil)
|
@@ -41,6 +44,14 @@ module TransmissionRSS
|
|
41
44
|
@regexp.nil? || !(title =~ @regexp).nil?
|
42
45
|
end
|
43
46
|
|
47
|
+
def exclude?(title)
|
48
|
+
@excludes.each do |regexp, exclude|
|
49
|
+
return true if title =~ to_regexp(exclude)
|
50
|
+
end
|
51
|
+
|
52
|
+
return false
|
53
|
+
end
|
54
|
+
|
44
55
|
private
|
45
56
|
|
46
57
|
def build_regexp(matchers)
|
@@ -48,14 +59,16 @@ module TransmissionRSS
|
|
48
59
|
matchers.empty? ? nil : Regexp.union(matchers)
|
49
60
|
end
|
50
61
|
|
51
|
-
def
|
62
|
+
def initialize_download_paths_and_excludes(regexps)
|
52
63
|
return unless regexps.is_a?(Array)
|
53
64
|
|
54
65
|
regexps.each do |regexp|
|
55
66
|
matcher = regexp['matcher']
|
56
67
|
path = regexp['download_path']
|
68
|
+
exclude = regexp['exclude']
|
57
69
|
|
58
70
|
@download_paths[matcher] = path if matcher && path
|
71
|
+
@excludes[matcher] = exclude if matcher && exclude
|
59
72
|
end
|
60
73
|
end
|
61
74
|
|
@@ -27,10 +27,12 @@ feeds:
|
|
27
27
|
regexp:
|
28
28
|
- matcher: match1
|
29
29
|
download_path: /home/user/match1
|
30
|
+
exclude: dontmatch
|
30
31
|
- matcher: match2
|
31
32
|
download_path: /home/user/match2
|
32
33
|
- url: http://example.com/feed8
|
33
34
|
validate_cert: false
|
35
|
+
seen_by_guid: true
|
34
36
|
|
35
37
|
# Feed probing interval in seconds. Default is 600.
|
36
38
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: transmission-rss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- henning mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rss
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
120
|
+
rubygems_version: 3.3.7
|
121
121
|
signing_key:
|
122
122
|
specification_version: 4
|
123
123
|
summary: Adds torrents from rss feeds to transmission web frontend.
|