rtorrent_xmlrpc 0.1 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e970b5dddb523638d1ea5f441ae458ecae5922aa
4
- data.tar.gz: 68b65a6be40657e357d2f12165b278a8a84a6750
3
+ metadata.gz: aec5bd8704d971c6eed048549bcb34ab77c1f203
4
+ data.tar.gz: dcb43f75567b59bb2d7527765f8466e2e19d7553
5
5
  SHA512:
6
- metadata.gz: 3126a3f7e45654edafa139b673867e4b6413f955994597defc9269f14509a29c701a31b52cd6d8e954a74132111ee7ae8c449640c984e233a1c0a9057eea510f
7
- data.tar.gz: c0fd3a6a085cf20e679faf37232a2a53a594dfff3d11639a4101f9f3bd86a352fffd0c148b01e80ddb844a9e725a5abda904a78d0ca05277b9dc2a3bc33195cd
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)
@@ -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 has_label(label)
12
- @labels.include? label.to_s
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 + @hash.green
35
- puts " name: ".blue + @name.green
36
- puts " labels: ".blue + @labels.join(', ').green
37
- puts " completed: ".blue + @completed.to_s.green
38
- puts "base_filename: ".blue + @base_filename.green
39
- puts " base_path: ".blue + @base_path.green
40
- puts "is_multi_file: ".blue + @is_multi_file.to_s.green
41
- puts " tied_to_file: ".blue + @tied_to_file.green
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
- @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=').each do |stats|
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(label) }
229
+ @torrents.each { |torrent| result << torrent if torrent.has_label? label }
135
230
  return result
136
231
  end
137
232
  end
@@ -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-02'
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: '0.1'
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-02 00:00:00.000000000 Z
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