saber 0.0.7 → 1.0.0

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.
Files changed (76) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +4 -0
  3. data/CHANGELOG.md +3 -0
  4. data/Gemfile +18 -8
  5. data/Gemfile.lock +72 -33
  6. data/Guardfile +4 -0
  7. data/README.md +192 -52
  8. data/Rakefile +46 -0
  9. data/bin/1saber +5 -3
  10. data/bin/saber +4 -0
  11. data/bin/saber.bib +3 -0
  12. data/bin/saber.what +3 -0
  13. data/extconf.rb +4 -1
  14. data/lib/saber.rb +7 -13
  15. data/lib/saber/autofetcher.rb +8 -0
  16. data/lib/saber/autofetcher/client.rb +66 -0
  17. data/lib/saber/autofetcher/server.rb +78 -0
  18. data/lib/saber/cli.rb +65 -26
  19. data/lib/saber/{downloader.rb → fetcher.rb} +9 -11
  20. data/lib/saber/mechanize_ext.rb +136 -0
  21. data/lib/saber/rc.rb +3 -21
  22. data/lib/saber/task.rb +26 -11
  23. data/lib/saber/task/base.rb +18 -0
  24. data/lib/saber/task/clean.rb +18 -0
  25. data/lib/saber/task/generate.rb +38 -0
  26. data/lib/saber/task/make.rb +44 -0
  27. data/lib/saber/task/send.rb +21 -0
  28. data/lib/saber/task/upload.rb +37 -0
  29. data/lib/saber/tracker.rb +28 -0
  30. data/lib/saber/tracker/base.rb +115 -2
  31. data/lib/saber/tracker/bb.rb +244 -0
  32. data/lib/saber/tracker/bib.rb +225 -0
  33. data/lib/saber/tracker/ptp.rb +100 -0
  34. data/lib/saber/tracker/what.rb +55 -7
  35. data/lib/saber/ui.rb +65 -22
  36. data/lib/saber/version.rb +1 -1
  37. data/rutorrent/init.js +8 -9
  38. data/rutorrent/plugin.info +1 -1
  39. data/saber.gemspec +14 -10
  40. data/spec/data/_saber/.gitkeep +0 -0
  41. data/spec/saber/downloader_spec.rb +5 -2
  42. data/spec/saber/task_spec.rb +16 -0
  43. data/spec/saber/tracker/bib_spec.rb +24 -0
  44. data/spec/spec_helper.rb +25 -0
  45. data/templates/_saberrc +36 -0
  46. data/templates/bb/anime.yml +6 -0
  47. data/templates/bb/application.yml +7 -0
  48. data/templates/bb/audiobook.yml +12 -0
  49. data/templates/bb/comic.yml +7 -0
  50. data/templates/bb/documentary.yml +26 -0
  51. data/templates/bb/ebook.yml +8 -0
  52. data/templates/bb/elearning_video.yml +7 -0
  53. data/templates/bb/game_console.yml +6 -0
  54. data/templates/bb/game_pc.yml +6 -0
  55. data/templates/bb/magazine.yml +6 -0
  56. data/templates/bb/misc.yml +6 -0
  57. data/templates/bb/movie.yml +26 -0
  58. data/templates/bb/music.yml +21 -0
  59. data/templates/bb/tv.yml +6 -0
  60. data/templates/bib/application.yml +9 -0
  61. data/templates/bib/article.yml +18 -0
  62. data/templates/bib/audiobook.yml +17 -0
  63. data/templates/bib/comic.yml +22 -0
  64. data/templates/bib/ebook.yml +20 -0
  65. data/templates/bib/journal.yml +18 -0
  66. data/templates/bib/magazine.yml +18 -0
  67. data/templates/ptp/movie.yml +63 -0
  68. data/templates/ptp/movie_add.yml +35 -0
  69. data/templates/what/ebook.yml +6 -0
  70. data/templates/what/music.yml +2 -0
  71. data/templates/what/music_add.yml +2 -0
  72. metadata +182 -26
  73. data/doc/Development.md +0 -3
  74. data/lib/saber/client.rb +0 -58
  75. data/lib/saber/server.rb +0 -70
  76. data/saber.watchr +0 -23
@@ -0,0 +1,35 @@
1
+ group_id:
2
+
3
+ # Not Main Movie
4
+ # Check this only if it does NOT contain the main movie.
5
+ # Examples: ONLY contains extras, Rifftrax, Workprints
6
+ special:
7
+
8
+ # Edition Information
9
+ # Check this box if this torrent is a special edition.
10
+ # Examples: "Director's Cut", "3D", "The Criterion Collection", "Rifftrax", "Dual Audio", "Remux".
11
+ remaster:
12
+
13
+ # Scene:
14
+ # Check this only if this is a 'scene release'. If you ripped it yourself, it is not a scene release.
15
+ # You can double check by searching the file name on orlydb.com.
16
+ scene:
17
+
18
+ # CAM TC TS R5 DVD-Screener VHS DVD TV HDTV HD-DVD Blu-ray Other
19
+ source: REQUIRED
20
+
21
+ # nil(Auto-detect) XviD DivX H.264 x264 DVD5 DVD9 BD25 BD50 Other
22
+ codec:
23
+
24
+ # nil(Auto-detect) AVI, MPG, MKV, MP4, VOB IFO, ISO, m2ts, Other
25
+ container:
26
+
27
+ # nil(Auto-detect) NTSC PAL 480p 576p 720p 1080i 1080p Other
28
+ resolution:
29
+
30
+ # Release Description
31
+ release_desc:
32
+
33
+ # Subtitles
34
+ # No Subtitles is 44.
35
+ subtitles[]: required
@@ -0,0 +1,6 @@
1
+ type: E-Books
2
+ # Author - Title
3
+ title: REQUIRED
4
+ tags: REQUIRED
5
+ image: REQUIRED
6
+ desc: REQUIRED
@@ -0,0 +1,2 @@
1
+ file_input:
2
+ type: Music
@@ -0,0 +1,2 @@
1
+ file_input:
2
+ type: Music
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,33 +9,75 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-26 00:00:00.000000000 Z
12
+ date: 2012-09-09 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pd
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: tagen
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.0.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.0.1
14
46
  - !ruby/object:Gem::Dependency
15
47
  name: optimism
16
- requirement: &13063220 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
17
49
  none: false
18
50
  requirements:
19
51
  - - ~>
20
52
  - !ruby/object:Gem::Version
21
- version: 3.1.2
53
+ version: 3.3.1
22
54
  type: :runtime
23
55
  prerelease: false
24
- version_requirements: *13063220
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.3.1
25
62
  - !ruby/object:Gem::Dependency
26
63
  name: pa
27
- requirement: &13061860 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
28
65
  none: false
29
66
  requirements:
30
67
  - - ~>
31
68
  - !ruby/object:Gem::Version
32
- version: 1.2.3
69
+ version: 1.3.2
33
70
  type: :runtime
34
71
  prerelease: false
35
- version_requirements: *13061860
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.3.2
36
78
  - !ruby/object:Gem::Dependency
37
79
  name: retort
38
- requirement: &13061200 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
39
81
  none: false
40
82
  requirements:
41
83
  - - ~>
@@ -43,41 +85,109 @@ dependencies:
43
85
  version: 0.0.6
44
86
  type: :runtime
45
87
  prerelease: false
46
- version_requirements: *13061200
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.6
47
94
  - !ruby/object:Gem::Dependency
48
95
  name: thor
49
- requirement: &13060560 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
50
97
  none: false
51
98
  requirements:
52
99
  - - ~>
53
100
  - !ruby/object:Gem::Version
54
- version: 0.14.6
101
+ version: 0.16.0
55
102
  type: :runtime
56
103
  prerelease: false
57
- version_requirements: *13060560
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.16.0
58
110
  - !ruby/object:Gem::Dependency
59
111
  name: net-ssh
60
- requirement: &13059240 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
61
113
  none: false
62
114
  requirements:
63
115
  - - ~>
64
116
  - !ruby/object:Gem::Version
65
- version: 2.3.0
117
+ version: 2.5.2
66
118
  type: :runtime
67
119
  prerelease: false
68
- version_requirements: *13059240
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 2.5.2
69
126
  - !ruby/object:Gem::Dependency
70
127
  name: xmpp4r
71
- requirement: &13057300 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '0.5'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
72
137
  none: false
73
138
  requirements:
74
139
  - - ~>
75
140
  - !ruby/object:Gem::Version
76
141
  version: '0.5'
142
+ - !ruby/object:Gem::Dependency
143
+ name: mechanize
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 2.5.1
77
150
  type: :runtime
78
151
  prerelease: false
79
- version_requirements: *13057300
80
- description: ! 'the saber
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 2.5.1
158
+ - !ruby/object:Gem::Dependency
159
+ name: highline
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 1.6.14
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 1.6.14
174
+ - !ruby/object:Gem::Dependency
175
+ name: reverse_markdown
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: 0.3.0
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 0.3.0
190
+ description: ! 'A complete solution for PT users.
81
191
 
82
192
  '
83
193
  email: ywzhaifei@gmail.com
@@ -89,23 +199,40 @@ extra_rdoc_files: []
89
199
  files:
90
200
  - .gitignore
91
201
  - .rspec
202
+ - .travis.yml
203
+ - CHANGELOG.md
92
204
  - Gemfile
93
205
  - Gemfile.lock
206
+ - Guardfile
94
207
  - README.md
95
208
  - Ragfile
209
+ - Rakefile
96
210
  - bin/1saber
97
211
  - bin/saber
98
212
  - bin/saber-drb_add
99
- - doc/Development.md
213
+ - bin/saber.bib
214
+ - bin/saber.what
100
215
  - extconf.rb
101
216
  - lib/saber.rb
217
+ - lib/saber/autofetcher.rb
218
+ - lib/saber/autofetcher/client.rb
219
+ - lib/saber/autofetcher/server.rb
102
220
  - lib/saber/cli.rb
103
- - lib/saber/client.rb
104
- - lib/saber/downloader.rb
221
+ - lib/saber/fetcher.rb
222
+ - lib/saber/mechanize_ext.rb
105
223
  - lib/saber/rc.rb
106
- - lib/saber/server.rb
107
224
  - lib/saber/task.rb
225
+ - lib/saber/task/base.rb
226
+ - lib/saber/task/clean.rb
227
+ - lib/saber/task/generate.rb
228
+ - lib/saber/task/make.rb
229
+ - lib/saber/task/send.rb
230
+ - lib/saber/task/upload.rb
231
+ - lib/saber/tracker.rb
108
232
  - lib/saber/tracker/base.rb
233
+ - lib/saber/tracker/bb.rb
234
+ - lib/saber/tracker/bib.rb
235
+ - lib/saber/tracker/ptp.rb
109
236
  - lib/saber/tracker/what.rb
110
237
  - lib/saber/ui.rb
111
238
  - lib/saber/version.rb
@@ -114,7 +241,7 @@ files:
114
241
  - rutorrent/init.php
115
242
  - rutorrent/plugin.info
116
243
  - saber.gemspec
117
- - saber.watchr
244
+ - spec/data/_saber/.gitkeep
118
245
  - spec/data/bt/lost.mkv
119
246
  - spec/data/bt/lost/01.lost.mkv
120
247
  - spec/data/bt/lost/02.lost.mkv
@@ -127,7 +254,36 @@ files:
127
254
  - spec/saber/client_spec.rb
128
255
  - spec/saber/downloader_spec.rb
129
256
  - spec/saber/server_spec.rb
257
+ - spec/saber/task_spec.rb
258
+ - spec/saber/tracker/bib_spec.rb
130
259
  - spec/spec_helper.rb
260
+ - templates/_saberrc
261
+ - templates/bb/anime.yml
262
+ - templates/bb/application.yml
263
+ - templates/bb/audiobook.yml
264
+ - templates/bb/comic.yml
265
+ - templates/bb/documentary.yml
266
+ - templates/bb/ebook.yml
267
+ - templates/bb/elearning_video.yml
268
+ - templates/bb/game_console.yml
269
+ - templates/bb/game_pc.yml
270
+ - templates/bb/magazine.yml
271
+ - templates/bb/misc.yml
272
+ - templates/bb/movie.yml
273
+ - templates/bb/music.yml
274
+ - templates/bb/tv.yml
275
+ - templates/bib/application.yml
276
+ - templates/bib/article.yml
277
+ - templates/bib/audiobook.yml
278
+ - templates/bib/comic.yml
279
+ - templates/bib/ebook.yml
280
+ - templates/bib/journal.yml
281
+ - templates/bib/magazine.yml
282
+ - templates/ptp/movie.yml
283
+ - templates/ptp/movie_add.yml
284
+ - templates/what/ebook.yml
285
+ - templates/what/music.yml
286
+ - templates/what/music_add.yml
131
287
  homepage: http://github.com/GutenYe/saber
132
288
  licenses: []
133
289
  post_install_message:
@@ -148,9 +304,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
304
  version: '0'
149
305
  requirements: []
150
306
  rubyforge_project: xx
151
- rubygems_version: 1.8.11
307
+ rubygems_version: 1.8.24
152
308
  signing_key:
153
309
  specification_version: 3
154
- summary: the saber
310
+ summary: A complete solution for PT users.
155
311
  test_files: []
156
312
  has_rdoc:
@@ -1,3 +0,0 @@
1
-
2
- $ saber client -V --pid a.pid
3
- # stay foreground. and print to STDOUT.
@@ -1,58 +0,0 @@
1
- require "xmpp4r/client"
2
- require "drb"
3
-
4
- module Saber
5
- class Client
6
- class << self
7
- def start
8
- client = Client.new
9
- client.start
10
-
11
- Thread.list.each {|v| v.join}
12
- end
13
- end
14
-
15
- attr_reader :client, :downloader
16
-
17
- def initialize
18
- @client = Jabber::Client.new(Jabber::JID.new(Rc.client.xmpp.jid))
19
- @downloader = Downloader.new
20
- end
21
-
22
- def start
23
- client.connect Rc.client.xmpp.host, Rc.client.xmpp.port
24
- client.auth Rc.client.xmpp.password
25
-
26
- client.add_message_callback { |msg|
27
- pd msg.from.bare
28
- if msg.from.bare == Rc.server.xmpp.jid
29
- files = msg.body.split("\n")
30
- $log.debug "RECV #{files}"
31
- downloader.add *files
32
- end
33
- }
34
-
35
- client.send Jabber::Presence.new
36
- Saber.ui.say ">> Connected to xmpp with #{Rc.client.xmpp.jid}"
37
- end
38
-
39
- def stop
40
- @client.close!
41
- end
42
- end
43
-
44
- class DRbClient
45
- attr_reader :server
46
-
47
- def initialize
48
- DRb.start_service
49
- @server = DRbObject.new_with_uri(Rc.drb_uri)
50
- Saber.ui.say ">> DRbClient connected to #{Rc.drb_uri}"
51
- end
52
-
53
- def add(*names)
54
- Saber.ui.say "ADD #{names}"
55
- server.add(*names)
56
- end
57
- end
58
- end
@@ -1,70 +0,0 @@
1
- require "xmpp4r/client"
2
- require "drb"
3
-
4
- module Saber
5
- class Server
6
- def self.start
7
- # register on_finished event.
8
- Retort::Service.call("system.method.set_key", "event.download.finished", "saber-download", "execute= /usr/bin/saber-drb_add, $d.get_hash=, $d.get_custom1=")
9
-
10
- s = Server.new
11
- DRbServer.start(s)
12
- s.start
13
-
14
- Thread.list.each {|v| v.join}
15
- end
16
-
17
- attr_reader :client
18
-
19
- def initialize
20
- @client = Jabber::Client.new(Jabber::JID.new(Rc.server.xmpp.jid))
21
- end
22
-
23
- def start
24
- client.connect Rc.server.xmpp.host, Rc.server.xmpp.port
25
- client.auth Rc.server.xmpp.password
26
- client.send Jabber::Presence.new
27
- Saber.ui.say ">> Connected to xmpp with #{Rc.server.xmpp.jid}"
28
- end
29
-
30
- def send(files)
31
- $log.debug "SEND #{files}"
32
- client.send Jabber::Message.new(Rc.client.xmpp.jid, files.join("\n"))
33
- end
34
- end
35
-
36
- class DRbServer
37
- class << self
38
- def start(saber_server)
39
- DRbServer.new(saber_server).start
40
- end
41
- end
42
-
43
- attr_reader :saber_server
44
-
45
- # @params [Server] server
46
- def initialize(saber_server)
47
- @saber_server = saber_server
48
- end
49
-
50
- def start
51
- DRb.start_service Rc.drb_uri, self
52
- Saber.ui.say ">> DRbSever listening on #{Rc.drb_uri}"
53
- end
54
-
55
- # drb. add a complete torrent.
56
- def add(*names)
57
- $log.debug "DRbServer-ADD #{names.inspect}"
58
- files = build_files(*names)
59
-
60
- saber_server.send(files)
61
- end
62
-
63
- private
64
-
65
- # ["filea", "foo/filea", "foo/fileb"]
66
- def build_files(*names)
67
- Pa.ls2_r(*names, :base_dir => Rc.server.download, :file => true, :include => true) { |path| not Pa.directory?(path) }
68
- end
69
- end
70
- end