rtorrent_xmlrpc 0.1 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -0
- data/lib/rtorrent_xmlrpc.rb +113 -18
- data/rtorrent_xmlrpc.gemspec +3 -2
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aec5bd8704d971c6eed048549bcb34ab77c1f203
|
4
|
+
data.tar.gz: dcb43f75567b59bb2d7527765f8466e2e19d7553
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 774572a3be0c2293acb2bf20808ebef6260f120905e1e36816b6bfa7cfe674c61274a806378af820984fa8912c8f80b809bdc4600b31f72ef29f9040f6ccc5fb
|
7
|
+
data.tar.gz: df05f889605f03f46efa6b4c739c2dd78c3cca46cbc55aa50bb570c2218897fc7c41be5db6cb5690c567a9940667d9303f467d1ca016555a7cb682bb52d3d23c
|
data/Gemfile.lock
CHANGED
@@ -3,6 +3,7 @@ PATH
|
|
3
3
|
specs:
|
4
4
|
rtorrent_xmlrpc (0.1)
|
5
5
|
colorize (~> 0.7, >= 0.7.7)
|
6
|
+
filesize (~> 0.1, >= 0.1.0)
|
6
7
|
hashie (~> 3.4, >= 3.4.2)
|
7
8
|
thor (~> 0.19, >= 0.19.1)
|
8
9
|
|
@@ -10,6 +11,7 @@ GEM
|
|
10
11
|
remote: https://rubygems.org/
|
11
12
|
specs:
|
12
13
|
colorize (0.7.7)
|
14
|
+
filesize (0.1.0)
|
13
15
|
hashie (3.4.2)
|
14
16
|
rake (10.4.2)
|
15
17
|
thor (0.19.1)
|
data/lib/rtorrent_xmlrpc.rb
CHANGED
@@ -1,45 +1,117 @@
|
|
1
1
|
require 'colorize'
|
2
|
+
require 'filesize'
|
2
3
|
require 'hashie'
|
3
4
|
require 'xmlrpc/client'
|
4
5
|
|
5
6
|
module RTorrent
|
6
7
|
|
7
8
|
class Torrent
|
9
|
+
|
10
|
+
# Attributes
|
8
11
|
attr_accessor :hash, :name, :completed, :base_filename, :base_path, :is_multi_file, :tied_to_file
|
9
|
-
attr_reader :labels
|
12
|
+
attr_reader :down_total, :labels, :priority, :ratio, :size, :up_total
|
10
13
|
|
11
|
-
def
|
12
|
-
@
|
14
|
+
def down_total=(down_total) # :nodoc:
|
15
|
+
@down_total = Filesize.new(down_total)
|
13
16
|
end
|
14
17
|
|
15
|
-
def labels=(labels)
|
18
|
+
def labels=(labels) # :nodoc:
|
16
19
|
@labels = labels.split(',')
|
20
|
+
@labels.map! { |label| label.chomp }
|
21
|
+
end
|
22
|
+
|
23
|
+
def labels_str
|
24
|
+
@labels.join(', ')
|
25
|
+
end
|
26
|
+
|
27
|
+
def priority=(priority) # :nodoc:
|
28
|
+
begin
|
29
|
+
@priority = priority.to_i
|
30
|
+
rescue
|
31
|
+
@priority = 2
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Return priority converted to a human readable string
|
36
|
+
def priority_str
|
37
|
+
case @priority
|
38
|
+
when 0
|
39
|
+
"Off"
|
40
|
+
when 1
|
41
|
+
"Low"
|
42
|
+
when 2
|
43
|
+
"Normal"
|
44
|
+
when 3
|
45
|
+
"High"
|
46
|
+
else
|
47
|
+
"Unknown"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def ratio=(ratio) # :nodoc:
|
52
|
+
begin
|
53
|
+
@ratio = ratio.to_f
|
54
|
+
rescue
|
55
|
+
@ratio = 0.0
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def size=(size) # :nodoc:
|
60
|
+
@size = Filesize.new(size)
|
61
|
+
end
|
62
|
+
|
63
|
+
def up_total=(up_total) # :nodoc:
|
64
|
+
@up_total = Filesize.new(up_total)
|
17
65
|
end
|
18
66
|
|
67
|
+
# Return hash of all values in Torrent
|
19
68
|
def to_h
|
20
69
|
{
|
21
|
-
hash: @hash,
|
22
|
-
name: @name,
|
23
|
-
labels: @labels,
|
24
|
-
completed: @completed,
|
25
70
|
base_filename: @base_filename,
|
26
71
|
base_path: @base_path,
|
72
|
+
completed: @completed,
|
73
|
+
hash: @hash,
|
27
74
|
is_multi_file: @is_multi_file,
|
75
|
+
labels: @labels,
|
76
|
+
name: @name,
|
77
|
+
priority: @priority,
|
78
|
+
ratio: @ratio,
|
79
|
+
size: @size,
|
28
80
|
tied_to_file: @tied_to_file,
|
29
81
|
}
|
30
82
|
end
|
31
83
|
|
84
|
+
# Single line header
|
85
|
+
def self.header
|
86
|
+
"hash : name : size : down : up : ratio : labels"
|
87
|
+
end
|
88
|
+
|
89
|
+
# All torrent data in a single string for output to screen
|
90
|
+
def to_s
|
91
|
+
"#{self.hash} : #{self.name} : #{self.size.pretty} : #{self.down_total.pretty} : #{self.up_total.pretty} : #{self.ratio} : #{self.labels_str}"
|
92
|
+
end
|
93
|
+
|
94
|
+
# All torrent data dumped to screen in color
|
32
95
|
def pp
|
33
96
|
puts "-------------- ".red
|
34
|
-
puts " hash: ".blue +
|
35
|
-
puts " name: ".blue +
|
36
|
-
puts "
|
37
|
-
puts "
|
38
|
-
puts "
|
39
|
-
puts "
|
40
|
-
puts "
|
41
|
-
puts "
|
97
|
+
puts " hash: ".blue + self.hash.green
|
98
|
+
puts " name: ".blue + self.name.green
|
99
|
+
puts " size: ".blue + self.size.pretty.green
|
100
|
+
puts " downloaded: ".blue + self.down_total.pretty.green
|
101
|
+
puts " uploaded: ".blue + self.up_total.pretty.green
|
102
|
+
puts " ratio: ".blue + self.ratio.to_s.green
|
103
|
+
puts " priority: ".blue + self.priority_str.green
|
104
|
+
puts " labels: ".blue + self.labels_str.green
|
105
|
+
puts " completed: ".blue + self.completed.to_s.green
|
106
|
+
end
|
107
|
+
|
108
|
+
# FILTERS
|
109
|
+
|
110
|
+
# Test if torrent has a specific label
|
111
|
+
def has_label?(label)
|
112
|
+
@labels.include? label.to_s
|
42
113
|
end
|
114
|
+
|
43
115
|
end
|
44
116
|
|
45
117
|
class XMLRPC
|
@@ -85,7 +157,25 @@ module RTorrent
|
|
85
157
|
def fetch_torrents
|
86
158
|
self.connect unless @status == :connected
|
87
159
|
@torrents = []
|
88
|
-
|
160
|
+
args = [
|
161
|
+
'd.multicall',
|
162
|
+
'main',
|
163
|
+
'd.hash=',
|
164
|
+
'd.name=',
|
165
|
+
'd.custom1=',
|
166
|
+
'd.complete=',
|
167
|
+
'd.base_filename=',
|
168
|
+
'd.base_path=',
|
169
|
+
'd.is_multi_file=',
|
170
|
+
'd.tied_to_file=',
|
171
|
+
'd.get_size_bytes=',
|
172
|
+
'd.get_down_total=',
|
173
|
+
'd.get_up_total=',
|
174
|
+
'd.get_ratio=',
|
175
|
+
'd.get_priority=',
|
176
|
+
]
|
177
|
+
#@server.call('d.multicall', 'main', 'd.hash=', 'd.name=', 'd.custom1=', 'd.complete=', 'd.base_filename=', 'd.base_path=', 'd.is_multi_file=', 'd.tied_to_file=', 'd.get_size').each do |stats|
|
178
|
+
@server.call(*args).each do |stats|
|
89
179
|
torrent = RTorrent::Torrent.new
|
90
180
|
torrent.hash = stats[0]
|
91
181
|
torrent.name = stats[1]
|
@@ -95,6 +185,11 @@ module RTorrent
|
|
95
185
|
torrent.base_path = stats[5]
|
96
186
|
torrent.is_multi_file = stats[6] == 1 ? true: false
|
97
187
|
torrent.tied_to_file = stats[7]
|
188
|
+
torrent.size = stats[8]
|
189
|
+
torrent.down_total = stats[9]
|
190
|
+
torrent.up_total = stats[10]
|
191
|
+
torrent.ratio = stats[11].to_f / 1000
|
192
|
+
torrent.priority = stats[12]
|
98
193
|
@torrents << torrent
|
99
194
|
end
|
100
195
|
end
|
@@ -131,7 +226,7 @@ module RTorrent
|
|
131
226
|
# Get a list of torrents with label
|
132
227
|
def with_label(label)
|
133
228
|
result = []
|
134
|
-
@torrents.each { |torrent| result << torrent if torrent.has_label
|
229
|
+
@torrents.each { |torrent| result << torrent if torrent.has_label? label }
|
135
230
|
return result
|
136
231
|
end
|
137
232
|
end
|
data/rtorrent_xmlrpc.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'rtorrent_xmlrpc'
|
3
|
-
s.version = '0.1'
|
4
|
-
s.date = '2015-07-
|
3
|
+
s.version = '0.1.1'
|
4
|
+
s.date = '2015-07-03'
|
5
5
|
s.summary = 'A library and tool to query an rtorrent xmlrpc service.'
|
6
6
|
s.authors = ['Zan Loy']
|
7
7
|
s.email = 'zan.loy@gmail.com'
|
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
|
13
13
|
s.add_dependency 'colorize', '~> 0.7', '>= 0.7.7'
|
14
14
|
s.add_dependency 'hashie', '~> 3.4', '>= 3.4.2'
|
15
|
+
s.add_dependency 'filesize', '~> 0.1', '>= 0.1.0'
|
15
16
|
s.add_dependency 'thor', '~> 0.19', '>= 0.19.1'
|
16
17
|
|
17
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtorrent_xmlrpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zan Loy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -50,6 +50,26 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 3.4.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: filesize
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.1'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.1.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.1'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.1.0
|
53
73
|
- !ruby/object:Gem::Dependency
|
54
74
|
name: thor
|
55
75
|
requirement: !ruby/object:Gem::Requirement
|