leecher 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -42,6 +42,24 @@ module Leecher
42
42
  @foreground = v
43
43
  end
44
44
 
45
+ o.on("-q", "--print-queue",
46
+ "Print the active queue") do |v|
47
+ do_print_queue()
48
+ Kernel.exit!(RC_OK)
49
+ end
50
+
51
+ o.on("-p", "--pause",
52
+ "Pause downloads") do |v|
53
+ do_pause()
54
+ Kernel.exit!(RC_OK)
55
+ end
56
+
57
+ o.on("-r", "--unpause",
58
+ "Unpause downloads") do |v|
59
+ do_unpause()
60
+ Kernel.exit!(RC_OK)
61
+ end
62
+
45
63
  o.separator("")
46
64
  o.on("-h", "--help", "You're reading it :-)") do
47
65
  puts o
@@ -91,6 +109,58 @@ module Leecher
91
109
  log.info("Looking good, now take us for a real spin!")
92
110
  end
93
111
 
112
+ # Somewhat lifted from
113
+ # http://sourceforge.net/apps/trac/aria2/browser/trunk/doc/xmlrpc/aria2mon
114
+ def do_print_queue()
115
+ config = load_config(@config_dirname)
116
+ client = make_client(config, @log)
117
+ log.info("Asking aria2 about it's active downloads ..")
118
+ active = client.call_rpc("aria2.tellActive")
119
+ active.each do |entry|
120
+ gid = entry["gid"]
121
+ complete, total, speed = [
122
+ "completedLength",
123
+ "totalLength",
124
+ "downloadSpeed",
125
+ ].map do |field|
126
+ entry[field].to_i
127
+ end
128
+ remaining = total - complete
129
+ eta_str = if speed == 0
130
+ "N/A"
131
+ else
132
+ remsec = remaining/speed
133
+ hr = remsec/3600
134
+ remsec = remsec%3600
135
+ min = remsec/60
136
+ remsec = remsec%60
137
+ result = ""
138
+ result += "#{hr}h" if hr > 0
139
+ result += "#{min}m" if min > 0
140
+ result += "#{remsec}s"
141
+ end
142
+ no_files = entry["files"].size
143
+ first_file = entry["files"].first["uris"].first["uri"]
144
+ log.info("##{gid}: #{no_files} file(s) (currently: #{File.basename(first_file)}). "\
145
+ "#{complete}/#{total} (#{"%.2f" % (complete.to_f * 100 / total)}%). "\
146
+ "ETA: #{eta_str}")
147
+ end
148
+ end
149
+
150
+ def do_pause()
151
+ config = load_config(@config_dirname)
152
+ client = make_client(config, @log)
153
+ log.info("Asking aria2 to pause ..")
154
+ log.debug(client.call_rpc("aria2.pauseAll"))
155
+ end
156
+
157
+ def do_unpause()
158
+ config = load_config(@config_dirname)
159
+ client = make_client(config, @log)
160
+ log.info("Asking aria2 to pause ..")
161
+ log.debug(client.call_rpc("aria2.unpauseAll"))
162
+ end
163
+
94
164
  def get_user_input(question, default)
95
165
  default_text = case default
96
166
  when :required, :password; nil
@@ -136,12 +206,7 @@ module Leecher
136
206
  log.info("Fading into the ether ..")
137
207
  make_daemon(config[:daemon])
138
208
  end
139
- client = Leecher::Client.new(config[:username],
140
- config[:password],
141
- config[:metalink_queue_name],
142
- config[:bunny_opts],
143
- config[:aria2_opts],
144
- @log)
209
+ client = make_client(config, @log)
145
210
  client.run()
146
211
  Kernel.exit(RC_OK)
147
212
  end
@@ -188,6 +253,15 @@ module Leecher
188
253
  end
189
254
  end
190
255
  end
256
+
257
+ def make_client(config, log)
258
+ Leecher::Client.new(config[:username],
259
+ config[:password],
260
+ config[:metalink_queue_name],
261
+ config[:bunny_opts],
262
+ config[:aria2_opts],
263
+ log)
264
+ end
191
265
  end
192
266
  end
193
267
 
@@ -118,7 +118,7 @@ module Leecher
118
118
  # FIXME: is it possible something can go wrong but not throw an exception?
119
119
  begin
120
120
  uris, options = Yajl::Parser.parse(msg)
121
- call_aria(uris, options)
121
+ enqueue_with_aria(uris, options)
122
122
  true
123
123
  rescue Exception => e
124
124
  log.error("Failed to add uri to aria2c: #{e.message}")
@@ -129,7 +129,7 @@ module Leecher
129
129
  end
130
130
  end
131
131
 
132
- def call_aria(uris, options)
132
+ def enqueue_with_aria(uris, options)
133
133
  rewrite_aria_dir_opt(options)
134
134
  log.info("Will call aria2.addUri(#{uris.inspect()}, #{options.inspect()})")
135
135
  status = call_rpc("aria2.addUri", uris, options)
@@ -1,3 +1,3 @@
1
1
  module Leecher
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leecher
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marc Bowes
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-30 00:00:00 +02:00
18
+ date: 2011-08-22 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency