bencview 0.0.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.
data/README.rdoc ADDED
@@ -0,0 +1,9 @@
1
+ bencview suite contains several utils to manage .torrent files.
2
+
3
+ bencview:: Torrent file viewer.
4
+
5
+ bencview_clean:: Cleans a list of announce trackers & replaces
6
+ main announce tracker (to be able to cheat,
7
+ for example, http://rutracker.org, ha-ha).
8
+
9
+ Read about them in corresponding <tt>*.rdoc</tt> files.
data/Rakefile ADDED
@@ -0,0 +1,46 @@
1
+ # -*-ruby-*-
2
+
3
+ require 'rake'
4
+ require 'rake/gempackagetask'
5
+ require 'rake/clean'
6
+ require 'rake/rdoctask'
7
+ require 'rake/testtask'
8
+
9
+ require_relative 'test/rake_git'
10
+
11
+ spec = Gem::Specification.new {|i|
12
+ i.name = 'bencview'
13
+ i.version = `bin/#{i.name} -V`
14
+ i.summary = 'Torrent file viewer & metadata cleaner'
15
+ i.author = 'Alexander Gromnitsky'
16
+ i.email = 'alexander.gromnitsky@gmail.com'
17
+ i.homepage = "http://github.com/gromnitsky/#{i.name}"
18
+ i.platform = Gem::Platform::RUBY
19
+ i.required_ruby_version = '>= 1.9.2'
20
+ i.files = git_ls('.')
21
+
22
+ i.executables = FileList['bin/*'].gsub(/^bin\//, '')
23
+ i.default_executable = i.name
24
+
25
+ i.test_files = FileList['test/test_*.rb']
26
+
27
+ i.rdoc_options << '-m' << 'doc/README.rdoc'
28
+ i.extra_rdoc_files = FileList['doc/*']
29
+
30
+ i.add_dependency('open4', '>= 1.0.1')
31
+ i.add_dependency('bencode', '>= 0.6.0')
32
+ }
33
+
34
+ Rake::GemPackageTask.new(spec).define
35
+
36
+ task default: [:repackage]
37
+
38
+ Rake::RDocTask.new('doc') {|i|
39
+ i.main = 'doc/README.rdoc'
40
+ i.rdoc_files = FileList['doc/*', 'lib/**/*.rb']
41
+ # i.rdoc_files.exclude("lib/**/some-nasty-staff")
42
+ }
43
+
44
+ Rake::TestTask.new {|i|
45
+ i.test_files = FileList['test/test_*.rb']
46
+ }
data/bin/bencview ADDED
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env ruby
2
+ # -*-ruby-*-
3
+
4
+ require 'bencode'
5
+ require_relative '../lib/bencview/trestle.rb'
6
+
7
+ include Bencview
8
+
9
+ $conf = Hash.new
10
+ u = Trestle.new($conf)
11
+
12
+ $conf[:banner] = "Usage: #{File.basename($0)} [options] file [file ...]"
13
+ $conf[:dump] = false
14
+
15
+ # Return a string--human redable number, e.g. 123456 becomes '123,456'.
16
+ def dn(n)
17
+ return n.to_s if n.to_i/1000.0 < 1
18
+ n.to_s.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
19
+ end
20
+
21
+ # Convert _s_ from _enc_ to the default external encoding.
22
+ def ds(s, enc)
23
+ s = s.to_s
24
+ return s if (enc == Encoding.default_external || enc == "" || !enc)
25
+ return dn(s) if s.match /^[0-9]+$/
26
+ s.encode(Encoding.default_external, enc,
27
+ :undef => :replace,
28
+ :invalid => :replace)
29
+ end
30
+
31
+ # Read _s_ as a number of seconds from the Epoch and return a human
32
+ # readable date string.
33
+ def ddate(s)
34
+ DateTime.strptime(s.to_s, '%s').rfc2822
35
+ end
36
+
37
+ # --[ main ]------------------------------------------------------------
38
+
39
+ u.config_parse(['foobar']) {|src|
40
+ o = u.cl_parse(src) # create an OptionParser object
41
+ o.on('-d', 'Dump all as raw hash') {|i| $conf[:dump] = true }
42
+ u.cl_parse(src, o) # run cl parser
43
+ }
44
+
45
+ # print our env
46
+ if $conf[:verbose] >= 2
47
+ puts 'Libs dir: ' + Trestle.gem_libdir
48
+ pp $conf
49
+ end
50
+
51
+ Trestle.errx(1, $conf[:banner]) if ARGV.size == 0
52
+
53
+ ec = 0
54
+ visfilesep = ARGV.size > 1 ? "\n" : "" # visual file separator
55
+ ARGV.each {|i|
56
+ begin
57
+ t = BEncode.load_file i
58
+ rescue
59
+ STDERR.puts "#{File.basename i}: #{$!}"
60
+ ec += 1
61
+ next
62
+ end
63
+
64
+ puts visfilesep + 'FILE: ' + File.basename(i)
65
+ if $conf[:dump]
66
+ pp t
67
+ next
68
+ end
69
+ enc = t['encoding'].to_s
70
+
71
+ t.each {|k,v|
72
+ case k
73
+ when "announce-list"
74
+ puts k + (v.size == 0 ? ':' : ":\n\t" + v.join("\n\t"))
75
+ when "info"
76
+ v.each {|info, infoval|
77
+ case info
78
+ when /piece/
79
+ next # a big unredable blob
80
+ when "files"
81
+ total = 0
82
+ puts "files (#{infoval.size}): "
83
+
84
+ biggest = 0
85
+ infoval.each {|i|
86
+ biggest = i['length'] if biggest < i['length']
87
+ total += i['length']
88
+ }
89
+ biggest = dn(biggest)
90
+
91
+ infoval.each {|i|
92
+ printf(" %#{biggest.size}s %s\n",
93
+ dn(i['length']), ds(i['path'].join('/'), enc))
94
+ }
95
+ puts 'length: ' + dn(total)
96
+ else
97
+ puts info + ': ' + ds(infoval, enc)
98
+ end
99
+ }
100
+ when /date/
101
+ puts k + ': ' + ddate(v)
102
+ else
103
+ puts k + ': ' + ds(v, enc)
104
+ end
105
+ }
106
+ }
107
+ exit ec
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ # -*-ruby-*-
3
+
4
+ require 'bencode'
5
+ require_relative '../lib/bencview/trestle.rb'
6
+
7
+ include Bencview
8
+
9
+ $conf = Hash.new
10
+ u = Trestle.new($conf)
11
+
12
+ $conf[:banner] = "Usage: #{File.basename($0)} [options] file [file ...]"
13
+ $conf[:a] = 'http://tracker.openbittorrent.com/announce'
14
+
15
+
16
+ # --[ main ]------------------------------------------------------------
17
+
18
+ u.config_parse(['foobar']) {|src|
19
+ o = u.cl_parse(src) # create an OptionParser object
20
+ o.on('-a STR', 'An announce tracker URL') {|i|
21
+ $conf[:a] = i
22
+ }
23
+ u.cl_parse(src, o) # run cl parser
24
+ }
25
+
26
+ # print our env
27
+ if $conf[:verbose] >= 2
28
+ puts 'Libs dir: ' + Trestle.gem_libdir
29
+ pp $conf
30
+ end
31
+
32
+ Trestle.errx(1, $conf[:banner]) if ARGV.size == 0
33
+
34
+ ec = 0
35
+ ARGV.each {|i|
36
+ begin
37
+ t = BEncode.load_file i
38
+ rescue
39
+ STDERR.puts "#{File.basename i}: #{$!}"
40
+ ec += 1
41
+ next
42
+ end
43
+
44
+ t['comment'] = 'Leech without any rating!'
45
+ t['announce'] = $conf[:a]
46
+ t['announce-list'] = []
47
+
48
+ out = "" if (out = File.dirname(i) + '/') == "./"
49
+ out = out + File.basename(i, File.extname(i)) + '.CLEANED' + File.extname(i)
50
+ u.veputs(1, out)
51
+ begin
52
+ open(out, 'w+') {|fp| fp.write(BEncode.dump(t)) }
53
+ rescue
54
+ STDERR.puts $!.to_s
55
+ ec += 1
56
+ end
57
+ }
58
+ exit ec
data/doc/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2010 Alexander Gromnitsky.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/doc/NEWS.rdoc ADDED
@@ -0,0 +1,5 @@
1
+ === 0.0.1
2
+
3
+ Fri, 31 Dec 2010 10:54:08 +0200
4
+
5
+ - Created a first skeleton.
data/doc/README.rdoc ADDED
@@ -0,0 +1,9 @@
1
+ bencview suite contains several utils to manage .torrent files.
2
+
3
+ bencview:: Torrent file viewer.
4
+
5
+ bencview_clean:: Cleans a list of announce trackers & replaces
6
+ main announce tracker (to be able to cheat,
7
+ for example, http://rutracker.org, ha-ha).
8
+
9
+ Read about them in corresponding <tt>*.rdoc</tt> files.
data/doc/bencview.rdoc ADDED
@@ -0,0 +1,59 @@
1
+ =Name
2
+
3
+ bencview--torrent file viewer.
4
+
5
+
6
+ ==Synopsis
7
+
8
+ bencview [options] file [file ...]
9
+
10
+
11
+ ==Description
12
+
13
+ The bencview utility reads torrent files and prints their metadata to
14
+ stdout.
15
+
16
+ The options are as follows:
17
+
18
+ -d:: Dump all as raw hash.
19
+
20
+ --config-dirs:: List all possible locations for the
21
+ configuration file. The first found wins.
22
+
23
+ --config NAME:: The name of the configuration file. If
24
+ it contains <tt>/</tt> in it, the list from
25
+ <tt>--config-dirs</tt> is ignored.
26
+
27
+ -V:: Show version and exit.
28
+
29
+ -v:: Be more verbose. You can supply it several
30
+ times, viz. <tt>-vv</tt> dumps even more
31
+ debug info.
32
+
33
+ ==Configuration
34
+
35
+ bencview looks for its configuration at 3 places at start up.
36
+
37
+ 1. At <tt>BENCVIEW_CONF</tt> env variable.
38
+ (Its format is exactly similar to CL options.)
39
+
40
+ 2. At the configuration file. Its default name is
41
+ <tt>bencview.yaml</tt> and it can be stored in several
42
+ system directories which are observable by <tt>--config--dirs</tt> CL
43
+ option.
44
+
45
+ 3. At command line.
46
+
47
+ Higher number levels overrides the values from lower number levels.
48
+
49
+ The configuration file must be in YAML format. Look into <tt>`gem env
50
+ gemdir`/gems/bencview-x.y.z/etc/</tt> directory for samples.
51
+
52
+
53
+ ==Examples
54
+
55
+ % bencview foo.torrent bar.torrent
56
+
57
+ ==See Also
58
+
59
+ {bencview_clean}[link:doc/bencview_clean_rdoc.html]
@@ -0,0 +1,75 @@
1
+ =Name
2
+
3
+ bencview_clean--cleans a list of announce trackers & replaces main
4
+ announce tracker.
5
+
6
+
7
+ ==Synopsis
8
+
9
+ bencview [options] file [file ...]
10
+
11
+
12
+ ==Description
13
+
14
+ The bencview_clean utility reads a torrent file and creates a 'cleaner'
15
+ copy of it (with <tt>.CLEANED.torrent</tt> extension) to give you an
16
+ ability to download staff from such idiotic bittorent trackers which
17
+ require 'rating' or other bullshit to participate. (For example, see
18
+ http://rutracker.org)
19
+
20
+ If a creator of the torrent file has disabled DHT (because he is a
21
+ moron), you will not able to use 'cleaner' version of the torrent
22
+ file. Sorry.
23
+
24
+ The options are as follows:
25
+
26
+ -a URL:: An announce tracker URL.
27
+
28
+ --config-dirs:: List all possible locations for the
29
+ configuration file. The first found wins.
30
+
31
+ --config NAME:: The name of the configuration file. If
32
+ it contains <tt>/</tt> in it, the list from
33
+ <tt>--config-dirs</tt> is ignored.
34
+
35
+ -V:: Show version and exit.
36
+
37
+ -v:: Be more verbose. You can supply it several
38
+ times, viz. <tt>-vv</tt> dumps even more
39
+ debug info.
40
+
41
+
42
+ ==Configuration
43
+
44
+ bencview_clean looks for its configuration at 3 places at start up.
45
+
46
+ 1. At <tt>BENCVIEW_CONF</tt> env variable.
47
+ (Its format is exactly similar to CL options.)
48
+
49
+ 2. At the configuration file. Its default name is
50
+ <tt>bencview.yaml</tt> and it can be stored in several
51
+ system directories which are observable by <tt>--config--dirs</tt> CL
52
+ option.
53
+
54
+ 3. At command line.
55
+
56
+ Higher number levels overrides the values from lower number levels.
57
+
58
+ The configuration file must be in YAML format. Look into <tt>`gem env
59
+ gemdir`/gems/bencview-x.y.z/etc/</tt> directory for samples.
60
+
61
+ ==Exit Status
62
+
63
+ The utility exits 0 on success, and >0 if an error occurs. For example,
64
+ if it read 3 files and 2 of them were invalid, the exit status will be 2
65
+ (the number of failures).
66
+
67
+ ==Examples
68
+
69
+ % bencview_clean foo.torrent bar.torrent
70
+ % bencview_clean -v foobar.torrent
71
+ % bencview_clean -a 'http://tracker.example.org' foobar.torrent
72
+
73
+ ==See Also
74
+
75
+ {bencview}[link:doc/bencview_rdoc.html]
data/etc/bencview.yaml ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ :foobar: foobar
@@ -0,0 +1,6 @@
1
+ module Bencview
2
+ module Meta
3
+ NAME = 'bencview'
4
+ VERSION = '0.0.1'
5
+ end
6
+ end
@@ -0,0 +1,216 @@
1
+ # :erb:
2
+ require 'yaml'
3
+ require 'shellwords.rb'
4
+ require 'optparse'
5
+ require 'pp'
6
+ require 'open4'
7
+
8
+ require_relative 'meta'
9
+
10
+ # :include: ../../README.rdoc
11
+ module Bencview
12
+
13
+ class Trestle
14
+
15
+ # Execute _cmd_ and return a list [exit_status, stderr,
16
+ # stdout]. Very handy.
17
+ def self.cmd_run(cmd)
18
+ so = sr = ''
19
+ status = Open4::popen4(cmd) { |pid, stdin, stdout, stderr|
20
+ so = stdout.read
21
+ sr = stderr.read
22
+ }
23
+ [status.exitstatus, sr, so]
24
+ end
25
+
26
+ # Return a directory with program libraries.
27
+ def self.gem_libdir
28
+ t = ["#{File.dirname(File.expand_path($0))}/../lib/#{Bencview::Meta::NAME}",
29
+ "#{Gem.dir}/gems/#{Bencview::Meta::NAME}-#{Bencview::Meta::VERSION}/lib/#{Bencview::Meta::NAME}",
30
+ "lib/#{Bencview::Meta::NAME}"]
31
+ t.each {|i| return i if File.readable?(i) }
32
+ fail "all paths are invalid: #{t}"
33
+ end
34
+
35
+ # Analogue to shell command +which+.
36
+ def self.in_path?(file)
37
+ return true if file =~ %r%\A/% and File.exist? file
38
+
39
+ ENV['PATH'].split(File::PATH_SEPARATOR).any? do |path|
40
+ File.exist? File.join(path, file)
41
+ end
42
+ end
43
+
44
+ # Print an error message _t_ and exit if _ec_ > 0.
45
+ def self.errx(ec, t)
46
+ STDERR.puts File.basename($0) + ' error: ' + t.to_s
47
+ exit ec if ec > 0
48
+ end
49
+
50
+ # Print a warning.
51
+ def self.warnx(t)
52
+ STDERR.puts File.basename($0) + ' warning: ' + t.to_s
53
+ end
54
+
55
+ # #veputs uses this to decide to put a newline or not to put.
56
+ NNL_MARK = '__NNL__'
57
+
58
+ # Use this in your CL options to check if modifying some variable is
59
+ # not an idempotent act.
60
+ attr_reader :cl_opt_protect
61
+
62
+ # [conf] Typically must be a reference to some global variable.
63
+ def initialize(conf)
64
+ @conf = conf
65
+ @conf[:verbose] = 0
66
+ @conf[:banner] = "Usage: #{File.basename($0)} [options]"
67
+ @conf[:config] = Meta::NAME + '.yaml'
68
+ @conf[:config_dirs] = [ENV['HOME']+'/.'+Meta::NAME,
69
+ File.absolute_path("#{File.dirname(File.expand_path($0))}/../etc"),
70
+ '/usr/etc', '/usr/local/etc', '/etc',
71
+ "#{Gem.dir}/gems/#{Meta::NAME}-#{Meta::VERSION}/etc"
72
+ ]
73
+ @conf[:config_env] = [Meta::NAME.upcase + '_CONF']
74
+
75
+ @cl_parsing_times = 0 # not used
76
+ @cl_opt_protect = false
77
+ end
78
+
79
+ # [level] A verbose level.
80
+ # [t] A string to print.
81
+ #
82
+ # Don't print _t_ with a newline if it contains NNL_MARK at the end.
83
+ def veputs(level, t)
84
+ t = t.dup
85
+ nnl = nil
86
+ if t.match(/#{NNL_MARK}$/)
87
+ t.sub!(/#{$&}/, '')
88
+ nnl = 1
89
+ end
90
+
91
+ if @conf[:verbose] >= level
92
+ nnl ? print(t) : puts(t)
93
+ STDOUT.flush
94
+ end
95
+ end
96
+
97
+ # Run all configuration parsing in a batch.
98
+ #
99
+ # [rvars] A list of variable names which must be in the
100
+ # configuration file.
101
+ #
102
+ # If no block is given, only standard CL options will be analysed.
103
+ def config_parse(rvars, &block)
104
+ cb = ->(b, src) {
105
+ if b
106
+ block.call src
107
+ else
108
+ # very basic default options
109
+ cl_parse(src, nil, true)
110
+ end
111
+ }
112
+
113
+ # 1. parse env
114
+ @conf[:config_env].each {|i|
115
+ # puts '0 run:'
116
+ cb.call(block_given?, ENV[i].shellsplit) if ENV.key?(i)
117
+ }
118
+
119
+ # 2. parse CL in case of '--config' option
120
+ # puts "\n1 run"
121
+ @cl_opt_protect = true
122
+ cb.call(block_given?, ARGV.dup)
123
+ @cl_opt_protect = false
124
+
125
+ # 3. load the configuration file & do the final CL parsing
126
+ begin
127
+ # puts "\n2 run"
128
+ r = config_flat_load(rvars)
129
+ rescue
130
+ Trestle.errx(1, "cannot load config: #{$!}")
131
+ end
132
+ veputs(1, "Loaded config: #{r}")
133
+ cb.call(block_given?, ARGV)
134
+ end
135
+
136
+ # Load a config file immediately if it contains '/' in its name,
137
+ # otherwise search through several dirs for it.
138
+ #
139
+ # [rvars] a list of requied variables in the config
140
+ #
141
+ # Return a loaded filename or nil on error.
142
+ def config_flat_load(rvars)
143
+ p = ->(f) {
144
+ if File.readable?(f)
145
+ begin
146
+ myconf = YAML.load_file(f)
147
+ rescue
148
+ abort("cannot parse #{f}: #{$!}")
149
+ end
150
+ rvars.each { |i|
151
+ fail "missing or nil '#{i}' in #{f}" if ! myconf.key?(i.to_sym) || ! myconf[i.to_sym]
152
+ }
153
+ @conf.merge!(myconf)
154
+ return @conf[:config]
155
+ end
156
+ return nil
157
+ }
158
+
159
+ if @conf[:config].index('/')
160
+ return p.call(@config[:config])
161
+ else
162
+ @conf[:config_dirs].each {|dir|
163
+ return dir+'/'+@conf[:config] if p.call(dir + '/' + @conf[:config])
164
+ }
165
+ end
166
+
167
+ return nil
168
+ end
169
+
170
+
171
+ # Parses CL-like options.
172
+ #
173
+ # [src] An array of options (usually +ARGV+).
174
+ #
175
+ # If _o_ is non nil function parses _src_ immediately, otherwise it
176
+ # only creates +OptionParser+ object and return it (if _simple_ is
177
+ # false).
178
+ def cl_parse(src, o = nil, simple = false)
179
+ if ! o then
180
+ # puts "NEW o (#{cl_opt_protect})" + src.to_s
181
+ o = OptionParser.new
182
+ o.banner = @conf[:banner]
183
+ o.on('-v', 'Be more verbose.') { |i|
184
+ # puts "cl_parsing_times "+cl_parsing_times.to_s
185
+ @conf[:verbose] += 1 unless cl_opt_protect
186
+ }
187
+ o.on('-V', 'Show version & exit.') { |i|
188
+ puts Meta::VERSION
189
+ exit 0
190
+ }
191
+ o.on('--config NAME', "Set a config name (default is #{@conf[:config]})") {|i|
192
+ @conf[:config] = i
193
+ }
194
+ o.on('--config-dirs', 'Show possible config locations') {
195
+ @conf[:config_dirs].each { |j|
196
+ f = j + '/' + @conf[:config]
197
+ puts (File.readable?(f) ? '* ' : ' ') + f
198
+ }
199
+ exit 0
200
+ }
201
+
202
+ return o if ! simple
203
+ end
204
+
205
+ begin
206
+ o.parse!(src)
207
+ @cl_parsing_times += 1
208
+ rescue
209
+ Trestle.errx(1, $!.to_s)
210
+ end
211
+ end
212
+
213
+ end # trestle
214
+ end
215
+
216
+ # Don't remove this: falsework/0.2.2/naive/2010-12-26T04:50:00+02:00
data/test/helper.rb ADDED
@@ -0,0 +1,4 @@
1
+ # This is supposed to be your helper for all your test. Feel free to
2
+ # add staff here.
3
+
4
+ require_relative 'helper_trestle'
@@ -0,0 +1,37 @@
1
+ # :erb:
2
+ # Various staff for minitest. Include this file into your 'helper.rb'.
3
+
4
+ require 'fileutils'
5
+ include FileUtils
6
+
7
+ require_relative '../lib/bencview/trestle'
8
+ include Bencview
9
+
10
+ # don't run tests automatically if they were invoked as 'gem check -t ...'
11
+ if $0 =~ /gem/
12
+ require 'minitest/unit'
13
+ else
14
+ require 'minitest/autorun'
15
+ end
16
+
17
+ # Return the right directory for (probably executable) _c_.
18
+ def cmd(c)
19
+ case File.basename(Dir.pwd)
20
+ when Meta::NAME.downcase
21
+ # test probably is executed from the Rakefile
22
+ Dir.chdir('test')
23
+ when 'test'
24
+ # we are in the test directory, there is nothing special to do
25
+ else
26
+ # tests were invoked by 'gem check -t bencview'
27
+ begin
28
+ Dir.chdir(Trestle.gem_libdir + '/../../test')
29
+ rescue
30
+ raise "running tests from '#{Dir.pwd}' isn't supported: #{$!}"
31
+ end
32
+ end
33
+
34
+ '../bin/' + c
35
+ end
36
+
37
+ # Don't remove this: falsework/0.2.2/naive/2010-12-26T04:50:00+02:00
data/test/rake_git.rb ADDED
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # -*-ruby-*-
3
+ # :erb:
4
+
5
+ # This is a helper for your Rakefile. Read the comments for each
6
+ # function.
7
+
8
+ require 'git'
9
+ require 'pp'
10
+
11
+ # Return a list of files in a git repository _repdir_.
12
+ #
13
+ # Add this to your gem spec:
14
+ #
15
+ # spec = Gem::Specification.new {|i|
16
+ # i.files = git_ls('.')
17
+ # }
18
+ #
19
+ # What it does is just collecting the list of the files from the git
20
+ # repository. The idea is to use that list for the gem spec. No more
21
+ # missing or redundant files in gems!
22
+ def git_ls(repdir, ignore_some = true)
23
+ ignore = ['/?\.gitignore$']
24
+
25
+ r = []
26
+ g = Git.open repdir
27
+ g.ls_files.each {|i, v|
28
+ next if ignore_some && ignore.index {|ign| i.match(/#{ign}/) }
29
+ r << i
30
+ }
31
+ r
32
+ end
33
+
34
+ pp git_ls('.') if __FILE__ == $0
35
+
36
+ # Don't remove this: falsework/0.2.2/naive/2010-12-26T04:50:00+02:00
@@ -0,0 +1,43 @@
1
+ require_relative 'helper'
2
+ require 'bencode'
3
+ require 'digest/md5'
4
+
5
+ class TestBencview_1272419217 < MiniTest::Unit::TestCase
6
+ CMD = cmd('bencview') # get path to the exe & cd to tests directory
7
+
8
+ def setup
9
+ # this runs every time before test_*
10
+ end
11
+
12
+ def test_cleaner
13
+ c = cmd('bencview_clean')
14
+ r = Trestle.cmd_run "#{c} qwerty asdfgh"
15
+ assert_equal(2, r[0])
16
+ assert_match(/No such file or directory/, r[1])
17
+
18
+ r = Trestle.cmd_run "#{c} -v torrent/[rutracker.org]2642547.torrent"
19
+ assert_equal(0, r[0])
20
+
21
+ t = BEncode.load_file r[2].strip
22
+ assert_equal('Leech without any rating!', t['comment'])
23
+ assert_equal([], t['announce-list'])
24
+ assert_equal('http://tracker.openbittorrent.com/announce', t['announce'])
25
+ end
26
+
27
+ def test_viewer
28
+ r = Trestle.cmd_run "#{CMD} qwerty asdfgh"
29
+ assert_equal(2, r[0])
30
+ assert_match(/No such file or directory/, r[1])
31
+
32
+ r = Trestle.cmd_run "#{CMD} torrent/*.torrent"
33
+ assert_equal(0, r[0])
34
+ refute_equal(0, r[2].size)
35
+
36
+ r = Trestle.cmd_run "#{CMD} torrent/[rutracker.org]314407.torrent torrent/[rutracker.org].t3128973.torrent"
37
+ assert_equal(0, r[0])
38
+ achieved = Digest::MD5.hexdigest(r[2].encode('UTF-8', Encoding.default_external))
39
+ expected = Digest::MD5.hexdigest(File.read('viewer_output_01.txt').encode('UTF-8', 'KOI8-U'))
40
+ assert_equal(expected, achieved)
41
+ end
42
+
43
+ end
@@ -0,0 +1,58 @@
1
+ d8:announce42:http://bt3.rutracker.org/ann?uk=tw1zpEDJVl13:announce-listll42:http://bt3.rutracker.org/ann?uk=tw1zpEDJVlel31:http://retracker.local/announceel42:http://ix3.rutracker.net/ann?uk=tw1zpEDJVlee7:comment50:http://rutracker.org/forum/viewtopic.php?t=312897310:created by13:uTorrent/220013:creation datei1292607230e8:encoding5:UTF-84:infod5:filesld6:lengthi51602766e4:pathl48:Компьютерное Обозрение 200864:Компьютерное Обозрение №8 (625), 2008.pdfeed6:lengthi48813982e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №10 (627), 2008.pdfeed6:lengthi48385930e4:pathl48:Компьютерное Обозрение 200864:Компьютерное Обозрение №9 (626), 2008.pdfeed6:lengthi47711474e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №11 (628), 2008.pdfeed6:lengthi44442774e4:pathl48:Компьютерное Обозрение 200864:Компьютерное Обозрение №7 (624), 2008.pdfeed6:lengthi35666544e4:pathl48:Компьютерное Обозрение 200864:Компьютерное Обозрение №5 (622), 2008.pdfeed6:lengthi35384777e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №3-4 (621), 2008.pdfeed6:lengthi35352416e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №1-2 (619), 2008.pdfeed6:lengthi33912571e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №34 (651), 2008.djvueed6:lengthi32774942e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №12 (629), 2008.pdfeed6:lengthi32335669e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №49 (666), 2008.djvueed6:lengthi31869761e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №14 (631), 2008.pdfeed6:lengthi31495280e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №13 (630), 2008.pdfeed6:lengthi31124315e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №19 (636), 2008.pdfeed6:lengthi30935654e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №21 (638), 2008.pdfeed6:lengthi30613503e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №44 (661), 2008.pdfeed6:lengthi30590085e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №15 (632), 2008.pdfeed6:lengthi30576013e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №35 (652), 2008.djvueed6:lengthi30304566e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №20 (637), 2008.pdfeed6:lengthi30004826e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №46 (663), 2008.pdfeed6:lengthi28482200e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №47 (664), 2008.pdfeed6:lengthi28285303e4:pathl48:Компьютерное Обозрение 200864:Компьютерное Обозрение №6 (623), 2008.pdfeed6:lengthi28213065e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №42 (659), 2008.pdfeed6:lengthi28006411e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №36 (653), 2008.djvueed6:lengthi27915732e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №40 (657), 2008.pdfeed6:lengthi27631366e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №43 (660), 2008.pdfeed6:lengthi27434470e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №48 (665), 2008.pdfeed6:lengthi27236989e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №39 (656), 2008.pdfeed6:lengthi27126079e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №31 (648), 2008.pdfeed6:lengthi27125928e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №28 (645), 2008.pdfeed6:lengthi26619508e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №16 (633), 2008.pdfeed6:lengthi26469866e4:pathl48:Компьютерное Обозрение 200868:Компьютерное Обозрение №17-18 (635), 2008.pdfeed6:lengthi26052938e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №38 (655), 2008.pdfeed6:lengthi25620262e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №45 (662), 2008.pdfeed6:lengthi25076866e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №24 (641), 2008.pdfeed6:lengthi25014881e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №25 (642), 2008.pdfeed6:lengthi24916827e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №32 (649), 2008.pdfeed6:lengthi24916260e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №26 (643), 2008.pdfeed6:lengthi24901292e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №27 (644), 2008.pdfeed6:lengthi24771735e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №33 (650), 2008.pdfeed6:lengthi24574721e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №22 (639), 2008.pdfeed6:lengthi24476886e4:pathl48:Компьютерное Обозрение 200868:Компьютерное Обозрение №29-30 (647), 2008.pdfeed6:lengthi21582092e4:pathl48:Компьютерное Обозрение 200865:Компьютерное Обозрение №23 (640), 2008.pdfeed6:lengthi6482959e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №41 (658), 2008.djvueed6:lengthi5606346e4:pathl48:Компьютерное Обозрение 200866:Компьютерное Обозрение №37 (654), 2008.djvueed6:lengthi48812542e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №31 (697), 2009.pdfeed6:lengthi47026084e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №23 (689), 2009.pdfeed6:lengthi46714677e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №4 (670), 2009.pdfeed6:lengthi44656616e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №24 (690), 2009.pdfeed6:lengthi44513550e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №6 (672), 2009.pdfeed6:lengthi44437135e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №3 (669), 2009.pdfeed6:lengthi44191967e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №5 (671), 2009.pdfeed6:lengthi44059471e4:pathl48:Компьютерное Обозрение 200966:Компьютерное Обозрение №1-2 (668), 2009.pdfeed6:lengthi43802109e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №25 (691), 2009.pdfeed6:lengthi43637181e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №7 (673), 2009.pdfeed6:lengthi42954382e4:pathl48:Компьютерное Обозрение 200968:Компьютерное Обозрение №27-28 (694), 2009.pdfeed6:lengthi41663772e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №8 (674), 2009.pdfeed6:lengthi39781630e4:pathl48:Компьютерное Обозрение 200964:Компьютерное Обозрение №9 (675), 2009.pdfeed6:lengthi35998621e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №22 (688), 2009.pdfeed6:lengthi35802626e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №11 (677), 2009.pdfeed6:lengthi35446833e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №29 (695), 2009.pdfeed6:lengthi34598284e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №13 (679), 2009.pdfeed6:lengthi34545477e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №15 (681), 2009.pdfeed6:lengthi31974941e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №21 (687), 2009.pdfeed6:lengthi31735108e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №10 (676), 2009.pdfeed6:lengthi31667357e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №12 (678), 2009.pdfeed6:lengthi31570164e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №26 (692), 2009.pdfeed6:lengthi30792264e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №14 (680), 2009.pdfeed6:lengthi30425844e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №20 (686), 2009.pdfeed6:lengthi29857045e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №18 (684), 2009.pdfeed6:lengthi28885357e4:pathl48:Компьютерное Обозрение 200968:Компьютерное Обозрение №16-17 (683), 2009.pdfeed6:lengthi28708936e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №19 (685), 2009.pdfeed6:lengthi27456018e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №32 (698), 2009.pdfeed6:lengthi26772047e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №30 (696), 2009.pdfeed6:lengthi12953380e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №42 (708), 2009.pdfeed6:lengthi11101376e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №38 (704), 2009.pdfeed6:lengthi10058268e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №43 (709), 2009.pdfeed6:lengthi9379670e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №35 (701), 2009.pdfeed6:lengthi9340928e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №37 (703), 2009.pdfeed6:lengthi8611359e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №45 (711), 2009.pdfeed6:lengthi8591158e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №36 (702), 2009.pdfeed6:lengthi8575740e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №41 (707), 2009.pdfeed6:lengthi8355734e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №33 (699), 2009.pdfeed6:lengthi8248623e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №46 (712), 2009.pdfeed6:lengthi8022575e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №40 (706), 2009.pdfeed6:lengthi7480906e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №39 (705), 2009.pdfeed6:lengthi6953849e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №34 (700), 2009.pdfeed6:lengthi6950915e4:pathl48:Компьютерное Обозрение 200965:Компьютерное Обозрение №44 (710), 2009.pdfeed6:lengthi73376381e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №22 (733), 2010.pdfeed6:lengthi73063718e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №24 (735), 2010.pdfeed6:lengthi64694321e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №26 (737), 2010.pdfeed6:lengthi62282073e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №25 (736), 2010.pdfeed6:lengthi34076730e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №43 (753), 2010.pdfeed6:lengthi32357242e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №38 (748), 2010.pdfeed6:lengthi28314864e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №31 (741), 2010.pdfeed6:lengthi26681235e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №29 (739), 2010.pdfeed6:lengthi26453758e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №45 (755), 2010.pdfeed6:lengthi21164260e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №5 (716), 2010.pdfeed6:lengthi18892373e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №32 (742), 2010.pdfeed6:lengthi17023035e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №19 (730), 2010.pdfeed6:lengthi16063083e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №20 (731), 2010.pdfeed6:lengthi15429511e4:pathl48:Компьютерное Обозрение 201068:Компьютерное Обозрение №16-17 (728), 2010.pdfeed6:lengthi15171294e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №18 (729), 2010.pdfeed6:lengthi15061966e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №21 (732), 2010.pdfeed6:lengthi12253598e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №44 (754), 2010.pdfeed6:lengthi10932678e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №12 (723), 2010.pdfeed6:lengthi10877949e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №33 (743), 2010.pdfeed6:lengthi10615059e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №6 (717), 2010.pdfeed6:lengthi10520411e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №42 (752), 2010.pdfeed6:lengthi10391349e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №34 (744), 2010.pdfeed6:lengthi9850404e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №8 (719), 2010.pdfeed6:lengthi9798702e4:pathl48:Компьютерное Обозрение 201068:Компьютерное Обозрение №27-28 (738), 2010.pdfeed6:lengthi9526783e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №41 (751), 2010.pdfeed6:lengthi9501934e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №7 (718), 2010.pdfeed6:lengthi9367473e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №23 (734), 2010.pdfeed6:lengthi8923074e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №15 (726), 2010.pdfeed6:lengthi8847955e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №11 (722), 2010.pdfeed6:lengthi8765107e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №14 (725), 2010.pdfeed6:lengthi8724399e4:pathl48:Компьютерное Обозрение 201066:Компьютерное Обозрение №1-2 (713), 2010.pdfeed6:lengthi8670444e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №30 (740), 2010.pdfeed6:lengthi8596412e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №4 (715), 2010.pdfeed6:lengthi8346588e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №36 (746), 2010.pdfeed6:lengthi8206889e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №37 (747), 2010.pdfeed6:lengthi7822123e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №39 (749), 2010.pdfeed6:lengthi7807458e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №40 (750), 2010.pdfeed6:lengthi7777601e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №35 (745), 2010.pdfeed6:lengthi7229626e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №10 (721), 2010.pdfeed6:lengthi7086258e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №9 (720), 2010.pdfeed6:lengthi6887748e4:pathl48:Компьютерное Обозрение 201064:Компьютерное Обозрение №3 (714), 2010.pdfeed6:lengthi6474351e4:pathl48:Компьютерное Обозрение 201065:Компьютерное Обозрение №13 (724), 2010.pdfeee4:name43:Компьютерное Обозрение12:piece lengthi4194304e6:pieces15840:���U��.h}K2�Yq�����O���O}l,� �v�)k��Q|���<ڣ �[H/e bd�_H�P�֜v�7���;WC��9��g���up3jq
2
+ �=��:�iϿ�F֋|�2uðM5���pR|0>u�8dP�[�rTd�sXƗ���ÿ����Bϕ�?�`�����4�k��K��zا���f��OV��jf���:b�F��Ar�O����]\^.R ��n����}��5��:Be��\���������]�ۀdE�F-pP�Mt���E,_G� ��$�?�;��pe��=��h�n�JX�K��lgo���?}9򨯒*�a<0�;5;Q��P��v8}�f����a�B���,3@�u�nHP��|���N!"]̥{� }��KN�8�9����k�xB�O�r���������[��i�SEq��c�삻�R�9.�tA�LJ�Zx�˟�����_�|�x��
3
+ @%�S@dbf>R;�q� ���%�T��ٿ�(3�`�f_޴�YԱ1`�Ә`H�r�"�+������~�#��d����WKד||�~��5��Fgc�z���J�+n ��Á����h�%�g)���dޣձ/�{�l� �%E���
4
+ >��KRS������_�?J���t�>���M�]6w����A�N�m��_�nW ��>����v18�Aq�r�T�_I���.
5
+ V���X�`�ǂ��g���W��B�i� *�\�k�y�<F!�q[�g�SP7����y#�)�l���uNGO &�w+qN$�
6
+ Q<��^73�AL����U,7������K�t;�&=�y��3���:8��������<��|����p[qQ}ͽ, ����-�5>7�?j�2e�l��r<[�i��nܧ+�Œ��q����`L׹�l�kaY�H��+D_<%Vh~!Rڿɸ�&A���e�d\��M+J��w��<�?���'��@d�xf��
7
+ +�Jg�$�W�q7�_K�tvY!= #��Ն���'q%�Vຳ*H<�`PX�e�G�f�]� �^�; ��g����9F~�r�� �3���^Bn\Hے��t�"��}��:��/!&�W�o�:���% �',h�,��>.�p/��3��t�N�Z�ҡv���$q��� ��*��o�O�e h����3��Fζ˅K�[�������h�=cG~���K�_͡�v��͏} 3��SmB[/�wl��F*Dm��僣y�"�z;<�!,��MZ$+d�X�Y�2�JH6N�:�G��b_��+�����^ӏY
8
+ n��|��Z2��)G���`�؏�F�Kc�:s�n�܂��'����y^����'��m{>��M��ՙ�4I ��B,~!U!�ްu!�ه�'I���@fzFY�a�d"�ݍ�ƽ��&ˁ�ޯ����Fg�i�r�']��Յ ��߬���Խ��<b���O�yɊä]#�#�S ����
9
+ ���%�v�� � �żU粅�&��+G~"<J��/��k�<��Y�q� ��l����=��O�XH���Ĥ�6���<�`�� %G���Ш-�Ϧ<WϏ���\oa*�O� �O3
10
+ Ν���c�hq�D1K�H(q|0}L��%t����P3-4e@y��F}��k�\�d��Su~r�š�%�����4����^��8�F���1ܔ� �b|j�C�Q׾�F����kD�����P1"�p�.�tsY�%���*��=�+jbX�Y\"���6�e:��f��ވ W|fJ��5��.W�� �=�l9} ,��c���jzX�!��@��n1��uY����s�x�^��?� ����-&��O�FL�5
11
+ �^�!�~
12
+ ���C��M�uu8�I�!�z��w\�,�f{��>�C?u��;��*�`q3&Oy�oi�8���n� � �⚭v ۘd�M���B��(�sZ��
13
+ ]A�E
14
+ �*]-+p~խ�� ��w�A���J=�~�B���s�R��z_p���l�d��g�,��W�e%Mg�2vhn�s�CfX3S�:��{�R�ܲ����n����PAB&��\�1�*'lH�PI(����ɥ��ֹA�8�o��᥷zt����k��J��c}uصڋ=�ѷ�ӧ\�A�?�^�
15
+ ǧj�@ �v ���E�=���(j�gI,���q�r��g��)4�p٭�X����%^&��'3��ᬊ�=��b'D�v#BC ������U9\gԡJ:�O3�v�w���i�zh����o��K[.ϔ��|�t��Vi��o:��n����`Y�|�U�C8�oJ,ם��r�>�Dl��Z]���g|&&CM�d ��.�����e���6��G��"�CT(bY]���zg�XDB�ݗK)��ޗY �����b$��Y5��V�+6��`)�Jc��<�#�BЁ"��"����a�&�7N��a����o�O�2S���!�]��B[:g:M��TBq�Z
16
+ �(hs�e�2�����}"�{.[ ��&�_���YF���Iza84�hwbԔ�@~�/Wq���=�Xc�*}4�ڽ*t/ο�k�uX�Yo��H���� -��^�C��lr�X�--x�R���e3�Q��r&�� ��
17
+ �t�r< G��yO���w�Y~&OLs������� �y�|=׾5���U�z�b
18
+ L�:�R*���A?F�mDXqo���Y/rH�weo�?/�%�z"*=�ڑ��"����<=hE����慨��c���$Vp�4zs��i�+ &s��U��̆G*��U8�J\����kk�J�ͼ6͚�9 �ؾ!nO^�����u�%A��<� 䢕\��٭�ߢ���|�ӒQ�Jf�XѦ�����H�j�K�Ԯ�;�^�1��,o<d/F�*����F$ǀ�S?<�pي�D�f]�Fjřj͇;����� ���T����$�R��A����vc�:/�� �?�(���ͧp���t��5�y������ׇ4JV� �.� {��}�{�[����C�4�[~�ʑ�L��!3��&��6
19
+ ؼ�ˮ)�S�&]��"��l�^���|'����~��S���HO@v-C�������:� N�e��x��ʙ/�w�*��Mʜ��}������r!����ֵ ���4���%�
20
+ |�H]ˉV5�({G�&`�MT��w
21
+ [�,:����{��$ ݐ��Z�`FNp�S�x�cN�-�]�A�A�d�@��V�<�7tK��ݶ�#�V��w�f��d��f-s�������U���݉�
22
+ | �� ���yA�u?/�M$�p�IܦX{�qgtq����<vT�����%�i���p����3<5L���C���΂w�+��8�\�K�û��6�D����a�I���#ڹ���~���O槢��M�ŪBGz�s�zX'���ڎ���w?��R�v�ƚKk������[��:� �=H��E�$�����˖+�l��2 f^k ;w��I�9$��jE- �XofTb�+D杇�AsS��=����%�(�[�v`L��ڨ�
23
+ �^���b| ��&�]�!&�E�B��j��~�`ѷ.��t�
24
+ �:\!��%�x�o?Bv�ŷ>��v7�VsB��q#0Eٛ$E6���JC�3 #@�Oz c����k ���<�o��m4"@M��M��m�Oɤ/�\�ah�O��ס��WC��.-�c��l~�ï�h�8By�<Q�K�.������s�J3�r�l�p�|��p��̈��V'��/�|i�anE�ԯ�{����Ny����K�EW5�P�YI �Z(D�\5[3��,.v$�/dV&_�����M�"�,^`F꠩�p�]��?~��1�Ľ�F~�]z_l�f���#���Z��
25
+ ��J��U!�a#�t�O�NL?!�A'�ˇ>��`�YIx*6K3_�o6�����ۤ/���>��ۺ,ʥ@Hn.���R:)��>��$3��i��[jc��x����]u�^�o�6Q� ����<�4��?��6)����~G����r����<� ,�E�G=���c1���Z /�h�PT��3&p�=�yw(">,�.n�+1<XAf[0�F�ҡ�T���s9�ӌ���]bY����G���!آ�a�&"q���<*���st'�Z�aZ�� k��7��m�
26
+ d�a���\�##�x
27
+ j_�fs�cAL�i �^�2�,?�TD�"gy|��S
28
+ ����D�^ N��� ���{�s����tט�iw��hV���� l�m�m
29
+ ��ނ;�Q�g�� N��N��MM�-�5>o�H�G
30
+ �?51!(��Vۚ&�u�����<6�C����lİ�"���/d�lg����"c����Q�\A�k�*
31
+ ��q�b��@oW��匟�� �t��5Z�2���[
32
+ ���D��_ݎ-cws�1�Ȉ����F���L)O@����t uP%t��Gw�#mSv��� �4=�섾�ལś���&��d��F]�O~;��C$��q-�96�TB�8� Q@0"��V���6!3�=��!�E<V�
33
+ �Z���"�!~�y�ع���F�E�U�+=�P�BnJi��O͞n�-���1�[#ޱ��b�lQs �������g�!`r.��^��L�i����X�ɶv��"%}fm�#͏�x�)%���>4�A��x���S7���&�Z,n�`~�w��&?S�|,e<��G+x;'mfIjS��|*>uN� ����w�����|
34
+ Vu7Md���q��B5���)j<����'d�?��8��[�!�@W�d�hZ�`K�$��Y�I��������@8���9�MP�Ƽ���H)
35
+ Η�`lw��|�ƹ{J�2�""�\��<6�\'�)"�J�#w%���0���DÐ�BL���(+�w�0�g(��
36
+ ~�l�B�d�z���;`<VG���gs� }�_����V���{����ʓd�%�щC���bJ�85@�|
37
+ z�z1�M\�ߊA@�'ʼn�v�2����u�Bz�x��?���Vf:o)�Q�s�4�YP�A�V���Emu���a8*
38
+ !�5,����q+UDR�L��*�pY����Y��WlŅTXNZ^���Е4h�Tչ9\�ҋ�N�](��C>�!�.�1i��~�D>L��+���%�����+�������2� 5��J�"#��F)Bv�y��2�����v+%y[;�z��<-y�T��u�����l�}l�
39
+ P⢏P����m��Abj�т���Q�+C6��8tW���g�g�м����0:�g��G;�-�e"Ș]ž*�����kQn��7
40
+ Ѧ���� IT�Sq�$;е��#آl�g
41
+ vp$�i����<�XrG~q�.m�vݢ�8�,��ۥ2X�����\k �cJC��c�϶�i����>�\�U���hZ7�i`x4�
42
+ ��tY�V,�ZC�i4RfZ�b{p��^<L�A��wW��8<��Af�Q6z��=�U!���?�:O�I�T�n��;k���?�4��9f?��K�K�܇�>�&�X�=��^�K�i�-ّ�L
43
+ �?��c�U;�,]�t�m9���b�&��P����L�pFW��\�>O��ph;TB��Ї��щPJ�Xֺ����4u��}7��v*M�� ��4��}�s���V�m���F�`0�栄�8jɺ�j���x!���10����Ф�����:u��>j��M)%gEN�97n�� `��t��r&�|/�J> �+��
44
+ �/����n����rg�>U�S���mL����wlK�7��>?p�/H7ZV ��>n��)5}��|2J��m��8�U����q��Sʀ����h �Y���I�?�� ��T��
45
+ ����V����S�.��̶��ɘ+~c [Lp�ԋ��!��K2�f�k8�(�𺝑͂�³��cs� \
46
+ �e������i��w��ի��ހ!��U��u�/�r"0q��sw\�Q�T"i^���u\�0�Ɣ �lM��L����E"��}�V#�K߶�+�!R�0�G���
47
+ �7 !�P4� a��v ��.�(�8���}߼��/�f�IWT&�tf���H���9E�!aǙ!U�#U�>$���ɬ3FM�eb ��z��6
48
+ VtN_���Jn��|�Қ�l�
49
+ �O���b�K��8��/�>`9_{�0S��#�* b�Y{�ck�'�dL��sF1X���_ɋ���Ɋ� R(Z���YσC��$G�j7��i�� �|#��c�b�Dd_�Wh��3� ��������x���Q7����r�_x�?f2G��x��Z��@]��͕)$�|����.�j�����ַI�?=�T'3�c�����j���#@���֓���}��9La3;CШ���u��X�V���^��
50
+ ��ZwD��5ڼ�Es#*�� aZ�t���;ɯ��^-���^>2�}�?}�2M�C� �ߗ Aܽ�\�����-x����\A �4?��Z��;�BS5�%��ޑN���:׽���h��Fߊ�������AN�m���+��Zx�>��] �_q�Si= g���GT�E�3Y�8����?�����UiM@�Pp�b�
51
+ MN���WS|�J�n���b("6
52
+ i��������s�CӅ��m�N����´�V!��hz�_|�%s��f]��>��5A�Kœؕ)']
53
+ {�Z�F��K
54
+ tf3����w�m 94�)��iQ�|�Y��{ �y���q����ųiر�wA�=��*v��+SK~q�s�ENr=j�2 K�q��[S/�
55
+ #1i=M�:���0Ev]ѝ�+��� Q�ޘwi}F��Y���m%���&z4�c�&5$��Wy�Cb�>GC=G���p��ἦNЪ�T���2��Y��w�.� ���Z~�A��ł� ��$�����I'\s� E|[LH*E��J<Q�s�,lƝב���IWx�G�E1�|k��|"6p�����'�Hy��Ob��e��H(�?�C���l�D���R�#��P�pi�D��ԯ�fX�+z�R���LӔh���Q��{�]j�[Hl9�#v����e�k������X6����D��eZOo�P��9��]�x��B�9�*ъ�a6Ի�ҫ��`3����ZA~}D� ���~�l!�
56
+ &�6k"�D��&�i����V'�*�^މ��_�8�Ȳ�^���Kq�M��(-P([G���b���\��߆��Ё�c�P�#_4Ÿ7J;C:ÿ���-��x��������:�w��k͢�ˆ溟5�8�����q���U�oJgM򕯳���*%� �N��E�����,�J�{ ���*v~*ۂ&9~��W�T��5���c3��I{Y� %�Pك��d-����_JLA����<�u���<�#�G,k�k&��X �=���
57
+ ���|I���_GB��*D 3@��#ZY�f)�Qh�'�
58
+ ��e��� Y��7e�R�4\$Z�p'd�7ܥMĂ�0H+;L|b���?Xq6�/G���śN�Yvo��{�F���n6���!"9��7h�1�r(_7E����C&�a�+�!�C�Ϝ1�Ya�) �M<ߴ�"��^�>B��ឬ\S�(�G-[�`�jq����\4\B� ��Ƿ��/u�K��c&Imw�z:㿄����Ë% �8"�Y2�GC�.>b�y�� U܋��r���� ���6�~��4,F ,�ے2%׃��g�����8�������8?:vG�̯_�x0W~mBF�J�쏋#M�?ư�F��䜁�����U<G��C���(��IԹ�=�{,!C���Et����>��l�Zi$@6�z��*�VH9�Fm����ԭ���f5��˱�X�
@@ -0,0 +1,175 @@
1
+
2
+ FILE: [rutracker.org]314407.torrent
3
+ announce: http://bt.rutracker.org/ann?uk=H8gWSAe89F
4
+ announce-list:
5
+ http://bt.rutracker.org/ann?uk=H8gWSAe89F
6
+ http://retracker.local/announce
7
+ http://ix.rutracker.net/ann?uk=H8gWSAe89F
8
+ comment: http://rutracker.org/forum/viewtopic.php?t=314407
9
+ created by: BitComet/0.63
10
+ creation date: Fri, 13 Jul 2007 19:13:01 +0000
11
+ encoding: UTF-8
12
+ files (12):
13
+ 51,607 ����� ��� ���������/DjVu Solo 3.1ru.zip
14
+ 2,228,336 ����� ��� ���������/DjVuSolo3.1.exe
15
+ 4,736,368 ��� 1 ��������/������������� ������. ��� 1. ��������.djv
16
+ 11,701,949 ��� 10 ���������� ��������/������������� ������. ��� 10. ���������� ��������.djv
17
+ 12,873,519 ��� 2 ������ ����/������������� ������. ��� 2. ������ ����.djv
18
+ 20,051,292 ��� 3 ���������������� ������/������������� ������. ��� 3. ���������������� ������.djv
19
+ 16,896,044 ��� 4 ��������� ���������������/������������� ������. ��� 4. ��������� ���������������.djv
20
+ 14,087,602 ��� 5 �������������� ������/������������� ������. ��� 5. �������������� ������.djv
21
+ 17,574,268 ��� 6 �������������/������������� ������. ��� 6. �������������.djv
22
+ 6,439,257 ��� 7 ������ ���������/������������� ������. ��� 7. ������ ���������.djv
23
+ 11,763,060 ��� 8 ��������������� �������� ����/������������� ������. ��� 8. ��������������� �������� ����.djv
24
+ 8,961,726 ��� 9 �������������� ������/������������� ������. ��� 9. �������������� ������.djv
25
+ length: 127,365,028
26
+ name: ������������� ������
27
+ name.utf-8: ������������� ������
28
+ publisher: rutracker.org
29
+ publisher-url: http://rutracker.org/forum/viewtopic.php?t=314407
30
+
31
+ FILE: [rutracker.org].t3128973.torrent
32
+ announce: http://bt3.rutracker.org/ann?uk=tw1zpEDJVl
33
+ announce-list:
34
+ http://bt3.rutracker.org/ann?uk=tw1zpEDJVl
35
+ http://retracker.local/announce
36
+ http://ix3.rutracker.net/ann?uk=tw1zpEDJVl
37
+ comment: http://rutracker.org/forum/viewtopic.php?t=3128973
38
+ created by: uTorrent/2200
39
+ creation date: Fri, 17 Dec 2010 17:33:50 +0000
40
+ encoding: UTF-8
41
+ files (130):
42
+ 51,602,766 ������������ ��������� 2008/������������ ��������� ?8 (625), 2008.pdf
43
+ 48,813,982 ������������ ��������� 2008/������������ ��������� ?10 (627), 2008.pdf
44
+ 48,385,930 ������������ ��������� 2008/������������ ��������� ?9 (626), 2008.pdf
45
+ 47,711,474 ������������ ��������� 2008/������������ ��������� ?11 (628), 2008.pdf
46
+ 44,442,774 ������������ ��������� 2008/������������ ��������� ?7 (624), 2008.pdf
47
+ 35,666,544 ������������ ��������� 2008/������������ ��������� ?5 (622), 2008.pdf
48
+ 35,384,777 ������������ ��������� 2008/������������ ��������� ?3-4 (621), 2008.pdf
49
+ 35,352,416 ������������ ��������� 2008/������������ ��������� ?1-2 (619), 2008.pdf
50
+ 33,912,571 ������������ ��������� 2008/������������ ��������� ?34 (651), 2008.djvu
51
+ 32,774,942 ������������ ��������� 2008/������������ ��������� ?12 (629), 2008.pdf
52
+ 32,335,669 ������������ ��������� 2008/������������ ��������� ?49 (666), 2008.djvu
53
+ 31,869,761 ������������ ��������� 2008/������������ ��������� ?14 (631), 2008.pdf
54
+ 31,495,280 ������������ ��������� 2008/������������ ��������� ?13 (630), 2008.pdf
55
+ 31,124,315 ������������ ��������� 2008/������������ ��������� ?19 (636), 2008.pdf
56
+ 30,935,654 ������������ ��������� 2008/������������ ��������� ?21 (638), 2008.pdf
57
+ 30,613,503 ������������ ��������� 2008/������������ ��������� ?44 (661), 2008.pdf
58
+ 30,590,085 ������������ ��������� 2008/������������ ��������� ?15 (632), 2008.pdf
59
+ 30,576,013 ������������ ��������� 2008/������������ ��������� ?35 (652), 2008.djvu
60
+ 30,304,566 ������������ ��������� 2008/������������ ��������� ?20 (637), 2008.pdf
61
+ 30,004,826 ������������ ��������� 2008/������������ ��������� ?46 (663), 2008.pdf
62
+ 28,482,200 ������������ ��������� 2008/������������ ��������� ?47 (664), 2008.pdf
63
+ 28,285,303 ������������ ��������� 2008/������������ ��������� ?6 (623), 2008.pdf
64
+ 28,213,065 ������������ ��������� 2008/������������ ��������� ?42 (659), 2008.pdf
65
+ 28,006,411 ������������ ��������� 2008/������������ ��������� ?36 (653), 2008.djvu
66
+ 27,915,732 ������������ ��������� 2008/������������ ��������� ?40 (657), 2008.pdf
67
+ 27,631,366 ������������ ��������� 2008/������������ ��������� ?43 (660), 2008.pdf
68
+ 27,434,470 ������������ ��������� 2008/������������ ��������� ?48 (665), 2008.pdf
69
+ 27,236,989 ������������ ��������� 2008/������������ ��������� ?39 (656), 2008.pdf
70
+ 27,126,079 ������������ ��������� 2008/������������ ��������� ?31 (648), 2008.pdf
71
+ 27,125,928 ������������ ��������� 2008/������������ ��������� ?28 (645), 2008.pdf
72
+ 26,619,508 ������������ ��������� 2008/������������ ��������� ?16 (633), 2008.pdf
73
+ 26,469,866 ������������ ��������� 2008/������������ ��������� ?17-18 (635), 2008.pdf
74
+ 26,052,938 ������������ ��������� 2008/������������ ��������� ?38 (655), 2008.pdf
75
+ 25,620,262 ������������ ��������� 2008/������������ ��������� ?45 (662), 2008.pdf
76
+ 25,076,866 ������������ ��������� 2008/������������ ��������� ?24 (641), 2008.pdf
77
+ 25,014,881 ������������ ��������� 2008/������������ ��������� ?25 (642), 2008.pdf
78
+ 24,916,827 ������������ ��������� 2008/������������ ��������� ?32 (649), 2008.pdf
79
+ 24,916,260 ������������ ��������� 2008/������������ ��������� ?26 (643), 2008.pdf
80
+ 24,901,292 ������������ ��������� 2008/������������ ��������� ?27 (644), 2008.pdf
81
+ 24,771,735 ������������ ��������� 2008/������������ ��������� ?33 (650), 2008.pdf
82
+ 24,574,721 ������������ ��������� 2008/������������ ��������� ?22 (639), 2008.pdf
83
+ 24,476,886 ������������ ��������� 2008/������������ ��������� ?29-30 (647), 2008.pdf
84
+ 21,582,092 ������������ ��������� 2008/������������ ��������� ?23 (640), 2008.pdf
85
+ 6,482,959 ������������ ��������� 2008/������������ ��������� ?41 (658), 2008.djvu
86
+ 5,606,346 ������������ ��������� 2008/������������ ��������� ?37 (654), 2008.djvu
87
+ 48,812,542 ������������ ��������� 2009/������������ ��������� ?31 (697), 2009.pdf
88
+ 47,026,084 ������������ ��������� 2009/������������ ��������� ?23 (689), 2009.pdf
89
+ 46,714,677 ������������ ��������� 2009/������������ ��������� ?4 (670), 2009.pdf
90
+ 44,656,616 ������������ ��������� 2009/������������ ��������� ?24 (690), 2009.pdf
91
+ 44,513,550 ������������ ��������� 2009/������������ ��������� ?6 (672), 2009.pdf
92
+ 44,437,135 ������������ ��������� 2009/������������ ��������� ?3 (669), 2009.pdf
93
+ 44,191,967 ������������ ��������� 2009/������������ ��������� ?5 (671), 2009.pdf
94
+ 44,059,471 ������������ ��������� 2009/������������ ��������� ?1-2 (668), 2009.pdf
95
+ 43,802,109 ������������ ��������� 2009/������������ ��������� ?25 (691), 2009.pdf
96
+ 43,637,181 ������������ ��������� 2009/������������ ��������� ?7 (673), 2009.pdf
97
+ 42,954,382 ������������ ��������� 2009/������������ ��������� ?27-28 (694), 2009.pdf
98
+ 41,663,772 ������������ ��������� 2009/������������ ��������� ?8 (674), 2009.pdf
99
+ 39,781,630 ������������ ��������� 2009/������������ ��������� ?9 (675), 2009.pdf
100
+ 35,998,621 ������������ ��������� 2009/������������ ��������� ?22 (688), 2009.pdf
101
+ 35,802,626 ������������ ��������� 2009/������������ ��������� ?11 (677), 2009.pdf
102
+ 35,446,833 ������������ ��������� 2009/������������ ��������� ?29 (695), 2009.pdf
103
+ 34,598,284 ������������ ��������� 2009/������������ ��������� ?13 (679), 2009.pdf
104
+ 34,545,477 ������������ ��������� 2009/������������ ��������� ?15 (681), 2009.pdf
105
+ 31,974,941 ������������ ��������� 2009/������������ ��������� ?21 (687), 2009.pdf
106
+ 31,735,108 ������������ ��������� 2009/������������ ��������� ?10 (676), 2009.pdf
107
+ 31,667,357 ������������ ��������� 2009/������������ ��������� ?12 (678), 2009.pdf
108
+ 31,570,164 ������������ ��������� 2009/������������ ��������� ?26 (692), 2009.pdf
109
+ 30,792,264 ������������ ��������� 2009/������������ ��������� ?14 (680), 2009.pdf
110
+ 30,425,844 ������������ ��������� 2009/������������ ��������� ?20 (686), 2009.pdf
111
+ 29,857,045 ������������ ��������� 2009/������������ ��������� ?18 (684), 2009.pdf
112
+ 28,885,357 ������������ ��������� 2009/������������ ��������� ?16-17 (683), 2009.pdf
113
+ 28,708,936 ������������ ��������� 2009/������������ ��������� ?19 (685), 2009.pdf
114
+ 27,456,018 ������������ ��������� 2009/������������ ��������� ?32 (698), 2009.pdf
115
+ 26,772,047 ������������ ��������� 2009/������������ ��������� ?30 (696), 2009.pdf
116
+ 12,953,380 ������������ ��������� 2009/������������ ��������� ?42 (708), 2009.pdf
117
+ 11,101,376 ������������ ��������� 2009/������������ ��������� ?38 (704), 2009.pdf
118
+ 10,058,268 ������������ ��������� 2009/������������ ��������� ?43 (709), 2009.pdf
119
+ 9,379,670 ������������ ��������� 2009/������������ ��������� ?35 (701), 2009.pdf
120
+ 9,340,928 ������������ ��������� 2009/������������ ��������� ?37 (703), 2009.pdf
121
+ 8,611,359 ������������ ��������� 2009/������������ ��������� ?45 (711), 2009.pdf
122
+ 8,591,158 ������������ ��������� 2009/������������ ��������� ?36 (702), 2009.pdf
123
+ 8,575,740 ������������ ��������� 2009/������������ ��������� ?41 (707), 2009.pdf
124
+ 8,355,734 ������������ ��������� 2009/������������ ��������� ?33 (699), 2009.pdf
125
+ 8,248,623 ������������ ��������� 2009/������������ ��������� ?46 (712), 2009.pdf
126
+ 8,022,575 ������������ ��������� 2009/������������ ��������� ?40 (706), 2009.pdf
127
+ 7,480,906 ������������ ��������� 2009/������������ ��������� ?39 (705), 2009.pdf
128
+ 6,953,849 ������������ ��������� 2009/������������ ��������� ?34 (700), 2009.pdf
129
+ 6,950,915 ������������ ��������� 2009/������������ ��������� ?44 (710), 2009.pdf
130
+ 73,376,381 ������������ ��������� 2010/������������ ��������� ?22 (733), 2010.pdf
131
+ 73,063,718 ������������ ��������� 2010/������������ ��������� ?24 (735), 2010.pdf
132
+ 64,694,321 ������������ ��������� 2010/������������ ��������� ?26 (737), 2010.pdf
133
+ 62,282,073 ������������ ��������� 2010/������������ ��������� ?25 (736), 2010.pdf
134
+ 34,076,730 ������������ ��������� 2010/������������ ��������� ?43 (753), 2010.pdf
135
+ 32,357,242 ������������ ��������� 2010/������������ ��������� ?38 (748), 2010.pdf
136
+ 28,314,864 ������������ ��������� 2010/������������ ��������� ?31 (741), 2010.pdf
137
+ 26,681,235 ������������ ��������� 2010/������������ ��������� ?29 (739), 2010.pdf
138
+ 26,453,758 ������������ ��������� 2010/������������ ��������� ?45 (755), 2010.pdf
139
+ 21,164,260 ������������ ��������� 2010/������������ ��������� ?5 (716), 2010.pdf
140
+ 18,892,373 ������������ ��������� 2010/������������ ��������� ?32 (742), 2010.pdf
141
+ 17,023,035 ������������ ��������� 2010/������������ ��������� ?19 (730), 2010.pdf
142
+ 16,063,083 ������������ ��������� 2010/������������ ��������� ?20 (731), 2010.pdf
143
+ 15,429,511 ������������ ��������� 2010/������������ ��������� ?16-17 (728), 2010.pdf
144
+ 15,171,294 ������������ ��������� 2010/������������ ��������� ?18 (729), 2010.pdf
145
+ 15,061,966 ������������ ��������� 2010/������������ ��������� ?21 (732), 2010.pdf
146
+ 12,253,598 ������������ ��������� 2010/������������ ��������� ?44 (754), 2010.pdf
147
+ 10,932,678 ������������ ��������� 2010/������������ ��������� ?12 (723), 2010.pdf
148
+ 10,877,949 ������������ ��������� 2010/������������ ��������� ?33 (743), 2010.pdf
149
+ 10,615,059 ������������ ��������� 2010/������������ ��������� ?6 (717), 2010.pdf
150
+ 10,520,411 ������������ ��������� 2010/������������ ��������� ?42 (752), 2010.pdf
151
+ 10,391,349 ������������ ��������� 2010/������������ ��������� ?34 (744), 2010.pdf
152
+ 9,850,404 ������������ ��������� 2010/������������ ��������� ?8 (719), 2010.pdf
153
+ 9,798,702 ������������ ��������� 2010/������������ ��������� ?27-28 (738), 2010.pdf
154
+ 9,526,783 ������������ ��������� 2010/������������ ��������� ?41 (751), 2010.pdf
155
+ 9,501,934 ������������ ��������� 2010/������������ ��������� ?7 (718), 2010.pdf
156
+ 9,367,473 ������������ ��������� 2010/������������ ��������� ?23 (734), 2010.pdf
157
+ 8,923,074 ������������ ��������� 2010/������������ ��������� ?15 (726), 2010.pdf
158
+ 8,847,955 ������������ ��������� 2010/������������ ��������� ?11 (722), 2010.pdf
159
+ 8,765,107 ������������ ��������� 2010/������������ ��������� ?14 (725), 2010.pdf
160
+ 8,724,399 ������������ ��������� 2010/������������ ��������� ?1-2 (713), 2010.pdf
161
+ 8,670,444 ������������ ��������� 2010/������������ ��������� ?30 (740), 2010.pdf
162
+ 8,596,412 ������������ ��������� 2010/������������ ��������� ?4 (715), 2010.pdf
163
+ 8,346,588 ������������ ��������� 2010/������������ ��������� ?36 (746), 2010.pdf
164
+ 8,206,889 ������������ ��������� 2010/������������ ��������� ?37 (747), 2010.pdf
165
+ 7,822,123 ������������ ��������� 2010/������������ ��������� ?39 (749), 2010.pdf
166
+ 7,807,458 ������������ ��������� 2010/������������ ��������� ?40 (750), 2010.pdf
167
+ 7,777,601 ������������ ��������� 2010/������������ ��������� ?35 (745), 2010.pdf
168
+ 7,229,626 ������������ ��������� 2010/������������ ��������� ?10 (721), 2010.pdf
169
+ 7,086,258 ������������ ��������� 2010/������������ ��������� ?9 (720), 2010.pdf
170
+ 6,887,748 ������������ ��������� 2010/������������ ��������� ?3 (714), 2010.pdf
171
+ 6,474,351 ������������ ��������� 2010/������������ ��������� ?13 (724), 2010.pdf
172
+ length: 3,319,459,566
173
+ name: ������������ ���������
174
+ publisher: rutracker.org
175
+ publisher-url: http://rutracker.org/forum/viewtopic.php?t=3128973
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bencview
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Alexander Gromnitsky
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-12-31 00:00:00 +02:00
18
+ default_executable: bencview
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: open4
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 1
30
+ - 0
31
+ - 1
32
+ version: 1.0.1
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: bencode
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 0
45
+ - 6
46
+ - 0
47
+ version: 0.6.0
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description:
51
+ email: alexander.gromnitsky@gmail.com
52
+ executables:
53
+ - bencview
54
+ - bencview_clean
55
+ extensions: []
56
+
57
+ extra_rdoc_files:
58
+ - doc/LICENSE
59
+ - doc/NEWS.rdoc
60
+ - doc/README.rdoc
61
+ - doc/bencview_clean.rdoc
62
+ - doc/bencview.rdoc
63
+ files:
64
+ - README.rdoc
65
+ - Rakefile
66
+ - bin/bencview
67
+ - bin/bencview_clean
68
+ - doc/LICENSE
69
+ - doc/NEWS.rdoc
70
+ - doc/README.rdoc
71
+ - doc/bencview.rdoc
72
+ - doc/bencview_clean.rdoc
73
+ - etc/bencview.yaml
74
+ - lib/bencview/meta.rb
75
+ - lib/bencview/trestle.rb
76
+ - test/helper.rb
77
+ - test/helper_trestle.rb
78
+ - test/rake_git.rb
79
+ - test/test_bencview.rb
80
+ - test/torrent/[rutracker.org].t3128973.torrent
81
+ - test/torrent/[rutracker.org]2642547.torrent
82
+ - test/torrent/[rutracker.org]314407.torrent
83
+ - test/torrent/[rutracker.org]838460.torrent
84
+ - test/torrent/stack overflow data dump - nov 2010.torrent
85
+ - test/viewer_output_01.txt
86
+ has_rdoc: true
87
+ homepage: http://github.com/gromnitsky/bencview
88
+ licenses: []
89
+
90
+ post_install_message:
91
+ rdoc_options:
92
+ - -m
93
+ - doc/README.rdoc
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 1
103
+ - 9
104
+ - 2
105
+ version: 1.9.2
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
113
+ version: "0"
114
+ requirements: []
115
+
116
+ rubyforge_project:
117
+ rubygems_version: 1.3.7
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: Torrent file viewer & metadata cleaner
121
+ test_files:
122
+ - test/test_bencview.rb