pirate-autonzb 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest ADDED
@@ -0,0 +1,10 @@
1
+ autonzb.gemspec
2
+ bin/autonzb
3
+ lib/imdb.rb
4
+ lib/inspector.rb
5
+ lib/movie.rb
6
+ lib/nfo.rb
7
+ lib/nzb.rb
8
+ Manifest
9
+ Rakefile
10
+ README.markdown
data/README.markdown ADDED
@@ -0,0 +1,58 @@
1
+ # AutoNZB
2
+
3
+ Ruby tool to automatically download x264 HD nzb movies files from newzleech.com
4
+ Currently only english and french subtitles are supported, but it's super easy to add your own language.
5
+
6
+ ## Install
7
+
8
+ sudo gem install pirate-autonzb --source http://gems.github.com
9
+
10
+ ## Usage
11
+
12
+ In your terminal:
13
+
14
+ autonzb -d /path/of/download/nzb/directory
15
+
16
+ Will download new x264 HD movies nzb from newzleech.com, with imdb score >= 7.0, year >= 1950 and nzb age <= 160 days
17
+
18
+ autonzb -d /path/of/download/nzb/directory -movies /path/with/already/downloaded/movies -age 1 -imdb 7.5 -year 1980 -srt fr,en
19
+
20
+ Will download only new nzb of the day with imdb score >= 7.5, year >= 1980 and subtitles french or english.
21
+ The -movies setting prevents already owned movies to be re-downloaded (only if the owned movie is 'better' than the new release)
22
+
23
+ more details with:
24
+
25
+ autonzb -h
26
+
27
+ ## Folder Name Convention
28
+
29
+ AutoNZB use (and needs) specific folders name for your movies:
30
+
31
+ name of the movie (year) tag(s) format source sound encoding lang [srt(s)]
32
+
33
+ Burn After Reading (2008) PROPER 1080p BluRay DTS x264 [fr,en]
34
+ Le Fabuleux Destin d'Amelie Poulain (2001) 720p BluRay x264 FRENCH [en]
35
+ ...
36
+
37
+ ## License
38
+
39
+ Copyright (c) 2008 Pirate
40
+
41
+ Permission is hereby granted, free of charge, to any person obtaining
42
+ a copy of this software and associated documentation files (the
43
+ "Software"), to deal in the Software without restriction, including
44
+ without limitation the rights to use, copy, modify, merge, publish,
45
+ distribute, sublicense, and/or sell copies of the Software, and to
46
+ permit persons to whom the Software is furnished to do so, subject to
47
+ the following conditions:
48
+
49
+ The above copyright notice and this permission notice shall be
50
+ included in all copies or substantial portions of the Software.
51
+
52
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
53
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
54
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
55
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
56
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
57
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
58
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # Rakefile
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'echoe'
5
+
6
+ Echoe.new('autonzb', '0.2.2') do |p|
7
+ p.description = "Ruby tool to automatically download x264 HD nzb movies files from newzleech.com"
8
+ p.url = "http://github.com/pirate/autonzb"
9
+ p.author = "Pirate"
10
+ p.email = "pirate.2061@gmail.com"
11
+ p.ignore_pattern = ["tmp/*", "script/*"]
12
+ p.executable_pattern = "bin/autonzb"
13
+ p.runtime_dependencies = ["hpricot", "optiflag", 'rubyzip', 'htmlentities']
14
+ end
15
+
16
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
data/autonzb.gemspec ADDED
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{autonzb}
5
+ s.version = "0.2.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Pirate"]
9
+ s.date = %q{2008-12-24}
10
+ s.default_executable = %q{autonzb}
11
+ s.description = %q{Ruby tool to automatically download x264 HD nzb movies files from newzleech.com}
12
+ s.email = %q{pirate.2061@gmail.com}
13
+ s.executables = ["autonzb"]
14
+ s.extra_rdoc_files = ["bin/autonzb", "lib/imdb.rb", "lib/inspector.rb", "lib/movie.rb", "lib/nfo.rb", "lib/nzb.rb", "README.markdown"]
15
+ s.files = ["autonzb.gemspec", "bin/autonzb", "lib/imdb.rb", "lib/inspector.rb", "lib/movie.rb", "lib/nfo.rb", "lib/nzb.rb", "Manifest", "Rakefile", "README.markdown"]
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://github.com/pirate/autonzb}
18
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Autonzb", "--main", "README.markdown"]
19
+ s.require_paths = ["lib"]
20
+ s.rubyforge_project = %q{autonzb}
21
+ s.rubygems_version = %q{1.3.1}
22
+ s.summary = %q{Ruby tool to automatically download x264 HD nzb movies files from newzleech.com}
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 2
27
+
28
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
+ s.add_runtime_dependency(%q<hpricot>, [">= 0"])
30
+ s.add_runtime_dependency(%q<optiflag>, [">= 0"])
31
+ s.add_runtime_dependency(%q<rubyzip>, [">= 0"])
32
+ s.add_runtime_dependency(%q<htmlentities>, [">= 0"])
33
+ s.add_development_dependency(%q<echoe>, [">= 0"])
34
+ else
35
+ s.add_dependency(%q<hpricot>, [">= 0"])
36
+ s.add_dependency(%q<optiflag>, [">= 0"])
37
+ s.add_dependency(%q<rubyzip>, [">= 0"])
38
+ s.add_dependency(%q<htmlentities>, [">= 0"])
39
+ s.add_dependency(%q<echoe>, [">= 0"])
40
+ end
41
+ else
42
+ s.add_dependency(%q<hpricot>, [">= 0"])
43
+ s.add_dependency(%q<optiflag>, [">= 0"])
44
+ s.add_dependency(%q<rubyzip>, [">= 0"])
45
+ s.add_dependency(%q<htmlentities>, [">= 0"])
46
+ s.add_dependency(%q<echoe>, [">= 0"])
47
+ end
48
+ end
data/bin/autonzb ADDED
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optiflag'
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'inspector')
5
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'nzb')
6
+
7
+ module AutoNZB extend OptiFlagSet
8
+ flag "d" do
9
+ description "Download directory path for new nzb"
10
+ end
11
+ optional_flag "movies" do
12
+ description "Directories paths (separated by ,) with all your Movie's folders"
13
+ end
14
+ optional_flag 'srt' do
15
+ description "Subtitle's language wanted (separated by ,), ie 'fr,en'.
16
+ Use 'none' if you want download movies without subtitle too.
17
+ (Order is important to define if a nzb is needed), default: none"
18
+ value_in_set ['fr', 'en', 'none']
19
+ end
20
+ optional_flag 'imdb' do
21
+ description "IMDB score limit, default: 7.0"
22
+ end
23
+ optional_flag 'year' do
24
+ description "Movie year limit, default: 1950"
25
+ value_matches ["year must be a year, like 1997", /[0-9]{4}/]
26
+ end
27
+ optional_flag 'age' do
28
+ description "Age limit, in day, of nbz file on newzleech, default: 160"
29
+ value_matches ["age must be a number", /[0-9]+/]
30
+ end
31
+ optional_flag "page" do
32
+ description "number of the page on newzleech, default: 1. Think to augment -a when change page number"
33
+ value_matches ["page must be a number", /[0-9]+/]
34
+ end
35
+
36
+ and_process!
37
+ end
38
+
39
+ inspector = Inspector.new(ARGV.flags.movies || '', :year => ARGV.flags.year,
40
+ :imdb_score => ARGV.flags.imdb,
41
+ :srt => ARGV.flags.srt)
42
+
43
+ nzbmatrix = NZB.new(inspector, ARGV.flags.d, :age => ARGV.flags.age, :page => ARGV.flags.page)
data/lib/imdb.rb ADDED
@@ -0,0 +1,60 @@
1
+ require 'cgi'
2
+ require 'hpricot'
3
+ require 'open-uri'
4
+ require 'htmlentities'
5
+
6
+ class IMDB
7
+
8
+ attr_accessor :link
9
+
10
+ def initialize(name, year = nil, link = nil)
11
+ @name, @year, @link = name, year, link
12
+ @coder = HTMLEntities.new
13
+ set_doc
14
+ end
15
+
16
+ def score
17
+ if @doc && score_text = @doc.search("div.meta b").first
18
+ score_text.inner_html.match(/(.*)\/10/)[1].to_f
19
+ else
20
+ 0
21
+ end
22
+ end
23
+
24
+ def year
25
+ @doc ? @doc.search("title").inner_html.match(/\s\(([0-9]{4})/)[1].to_i : @year.to_i
26
+ end
27
+
28
+ def name
29
+ $KCODE = 'utf-8'
30
+ @doc ? @coder.decode(@doc.search("title").inner_html.match(/(.*)\s\(/u)[1]) : @name
31
+ end
32
+
33
+ private
34
+
35
+ def set_doc
36
+ if link
37
+ @doc = Hpricot(open(link))
38
+ else
39
+ query = "#{@name} (#{@year})"
40
+ search_url = "http://www.imdb.com/find?q=#{CGI::escape(query)}"
41
+ doc = Hpricot(open(search_url))
42
+ case doc.search("title").inner_html
43
+ when "IMDb Title Search" # search result page
44
+ if !doc.search("b[text()*='Media from'] a").empty?
45
+ imdb_id = doc.search("b[text()*='Media from'] a").first[:href]
46
+ movie_url = "http://www.imdb.com#{imdb_id}"
47
+ elsif !doc.search("td[@valign='top'] a[@href^='/title/tt']").empty?
48
+ imdb_id = doc.search("td[@valign='top'] a[@href^='/title/tt']").first[:href]
49
+ movie_url = "http://www.imdb.com#{imdb_id}"
50
+ end
51
+ @doc = Hpricot(open(movie_url))
52
+ when "IMDb Search"
53
+ @doc = nil
54
+ else # direct in movie page
55
+ @doc = doc
56
+ end
57
+ end
58
+ end
59
+
60
+ end
data/lib/inspector.rb ADDED
@@ -0,0 +1,102 @@
1
+ require File.join(File.dirname(__FILE__), 'movie')
2
+
3
+ class Inspector
4
+
5
+ def initialize(paths, options = {})
6
+ @paths = paths.split(',').map { |p| p.gsub!(/\/$/,'') }
7
+ @options = options
8
+ @options[:srt] = @options[:srt] ? @options[:srt].split(',') : ['none']
9
+ @options[:imdb_score] = @options[:imdb_score] ? @options[:imdb_score].to_f : 7.0
10
+ @options[:year] = @options[:year] ? @options[:year].to_i : 1950
11
+
12
+ @movies = []
13
+ initialize_movies
14
+
15
+ $stdout.print "Movie criteria: imdb_score >= #{@options[:imdb_score]}, year >= #{@options[:year]} and srt [#{@options[:srt].join(',')}]\n"
16
+ end
17
+
18
+ def need?(movie)
19
+ if valid?(movie)
20
+ $stdout.print " => movie has required criteria "
21
+ if m = @movies.detect { |m| m == movie }
22
+ $stdout.print "but is already owned "
23
+ if srt_score(movie) > srt_score(m)
24
+ $stdout.print "but new movie has better subtitle: [#{movie.srt.join(',')}]\n"
25
+ true
26
+ elsif srt_score(movie) == srt_score(m)
27
+ if format_score(movie) > format_score(m)
28
+ $stdout.print "but new movie has better format: #{movie.format}\n"
29
+ true
30
+ elsif format_score(movie) == format_score(m)
31
+ if sound_score(movie) > sound_score(m)
32
+ $stdout.print "but new movie has better sound: #{movie.sound}\n"
33
+ true
34
+ else
35
+ $stdout.print "with same srt, format and sound\n"
36
+ false
37
+ end
38
+ else
39
+ $stdout.print "with same srt and better format: #{m.format}\n"
40
+ false
41
+ end
42
+ else
43
+ $stdout.print "with better subtitle: [#{m.srt.join(',')}]\n"
44
+ false
45
+ end
46
+ else
47
+ $stdout.print "and is not already owned\n"
48
+ true
49
+ end
50
+ else
51
+ $stdout.print " => movie doesn't have required criteria\n"
52
+ false
53
+ end
54
+ end
55
+
56
+
57
+ private
58
+
59
+ def initialize_movies
60
+ @paths.each do |path|
61
+ old_movies_size = @movies.size
62
+ base_dir = clean_dir(Dir.new(path))
63
+ base_dir.each do |movie|
64
+ movie_path = "#{path}/#{movie}"
65
+ @movies << Movie.new(movie) if File.directory?(movie_path)
66
+ end
67
+ $stdout.print "Inspected #{@movies.size - old_movies_size} movie(s) in #{path}\n"
68
+ end
69
+ end
70
+
71
+ def clean_dir(dir)
72
+ dir.select { |e| !["..", ".", ".DS_Store"].include?(e) }
73
+ end
74
+
75
+ def valid?(movie)
76
+ srt_size = @options[:srt].size
77
+ (((@options[:srt] - movie.srt).size < srt_size) || @options[:srt].include?('none')) &&
78
+ movie.year >= @options[:year] && movie.score >= @options[:imdb_score]
79
+ end
80
+
81
+ def srt_score(movie)
82
+ srts = @options[:srt].reverse
83
+ movie.srt.inject(-1) do |score, srt|
84
+ s = (i = srts.index(srt)) ? i : -1
85
+ score = s if s > score
86
+ score
87
+ end
88
+ end
89
+
90
+ def format_score(movie)
91
+ case movie.format
92
+ when '1080p'; 2
93
+ when '720p'; 1
94
+ else; 0
95
+ end
96
+ end
97
+
98
+ def sound_score(movie)
99
+ movie.format == 'DTS' ? 1 : 0
100
+ end
101
+
102
+ end
data/lib/movie.rb ADDED
@@ -0,0 +1,149 @@
1
+ require File.join(File.dirname(__FILE__), 'imdb')
2
+ require File.join(File.dirname(__FILE__), 'nfo')
3
+
4
+ class Movie
5
+ include Comparable
6
+
7
+ attr_accessor :path, :name, :format, :source, :sound, :encoding, :year, :srt, :lang, :score, :tags, :age,
8
+ :imdb_link, :nfo_link, :nzb_link
9
+
10
+ def initialize(raw_name, attributes = {})
11
+ @raw_name = raw_name.gsub(/\.|\_/,' ')
12
+ attributes.each { |k,v| send("#{k}=", v) }
13
+ @srt, @tags = [], []
14
+
15
+ set_imdb_link
16
+ set_name
17
+ set_format
18
+ set_source
19
+ set_sound
20
+ set_srt
21
+ set_lang
22
+ set_encoding
23
+ set_tags
24
+ set_year
25
+ end
26
+
27
+ def score
28
+ @score ||= imdb.score
29
+ end
30
+
31
+ def dirname
32
+ "#{name} (#{year}) #{tags.join(' ')} #{format} #{source} #{sound} #{encoding} #{lang} [#{srt.join(',')}]".gsub(/\s+/,' ')
33
+ end
34
+
35
+ def <=>(other_movie)
36
+ "#{name} #{year}".downcase <=> "#{other_movie.name} #{other_movie.year}".downcase
37
+ end
38
+
39
+ private
40
+
41
+ def imdb
42
+ @imdb ||= IMDB.new(name, year, imdb_link)
43
+ end
44
+
45
+ def nfo
46
+ @nfo ||= NFO.new(nfo_link)
47
+ end
48
+
49
+ def set_imdb_link
50
+ @imdb_link = nfo.imdb_link if imdb_link.nil? && nfo_link
51
+ end
52
+
53
+ def set_name
54
+ @name = imdb.name if imdb_link
55
+ if @name.nil?
56
+ raw_name = @raw_name.gsub(/\(|\)|\[|\]|\{|\}|\//, ' ')
57
+ if matched = raw_name.match(/(.*)[0-9]{4}[^p]/)
58
+ @name = matched[1]
59
+ elsif matched = raw_name.match(/(.*)[0-9]{3,4}p/)
60
+ @name = matched[1]
61
+ else
62
+ @name = ''
63
+ end
64
+ @name.gsub!(/REPACK|LIMITED|UNRATED|PROPER|REPOST|Directors\sCut/iu,'')
65
+ @name.gsub!(/^\s+|\s+$/u,'')
66
+ end
67
+ end
68
+
69
+ def set_year
70
+ @year = imdb.year if imdb_link
71
+ if (year.nil? || year == 0) && matched = @raw_name.match(/19[0-9]{2}|20[0-9]{2}/)
72
+ @year = matched[0].to_i
73
+ end
74
+ end
75
+
76
+ def set_format
77
+ @format = case @raw_name
78
+ when /1080p/i
79
+ '1080p'
80
+ when /720p/i
81
+ '720p'
82
+ end
83
+ end
84
+
85
+ def set_encoding
86
+ @encoding = case @raw_name
87
+ when /x264/i
88
+ 'x264'
89
+ when /VC1/i
90
+ 'VC1'
91
+ when /PS3/i
92
+ 'PS3'
93
+ when /divx/i
94
+ 'DIVX'
95
+ when /xvid/i
96
+ 'XVID'
97
+ end
98
+ end
99
+
100
+ def set_source
101
+ @source = case @raw_name
102
+ when /Blu\s?Ray|Blu-Ray|BDRip/i
103
+ 'BluRay'
104
+ when /HDDVD/i
105
+ 'HDDVD'
106
+ when /HDTV/i
107
+ 'HDTV'
108
+ when /DVD/i
109
+ 'DVD'
110
+ end
111
+ end
112
+
113
+ def set_sound
114
+ @sound = case @raw_name
115
+ when /DTS/i
116
+ 'DTS'
117
+ when /AC3/i
118
+ 'AC3'
119
+ end
120
+ end
121
+
122
+ def set_srt
123
+ if nfo_link
124
+ @srt = nfo.srt
125
+ elsif matched = @raw_name.match(/\[(.*)\]/)
126
+ matched[1].split(',').each { |srt| @srt << srt }
127
+ end
128
+ end
129
+
130
+ def set_lang
131
+ @lang = case @raw_name
132
+ when /FRENCH/
133
+ 'FRENCH'
134
+ when /GERMAN/
135
+ 'GERMAN'
136
+ end
137
+ end
138
+
139
+ def set_tags
140
+ @tags << 'REPACK' if @raw_name =~ /REPACK/i
141
+ @tags << 'LIMITED' if @raw_name =~ /LIMITED/i
142
+ @tags << 'UNRATED' if @raw_name =~ /UNRATED/i
143
+ @tags << 'PROPER' if @raw_name =~ /PROPER/i
144
+ @tags << 'REPOST' if @raw_name =~ /REPOST/i
145
+ @tags << 'OUTDATED' if @raw_name =~ /OUTDATED/i
146
+ @tags << 'Directors Cut' if @raw_name =~ /Directors\sCut/i
147
+ end
148
+
149
+ end
data/lib/nfo.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'open-uri'
2
+
3
+ class NFO
4
+
5
+ attr_accessor :srt, :imdb_link
6
+
7
+ def initialize(url)
8
+ @nfo = open(url).read
9
+ @srt = []
10
+
11
+ parse_nfo
12
+ @srt.uniq!
13
+ end
14
+
15
+ private
16
+
17
+ def parse_nfo
18
+ @nfo.split(/\n/).each do |line|
19
+ case line
20
+ when /subtitle|sub/i
21
+ @srt << 'fr' if line =~ /fr|fre|french/i
22
+ @srt << 'en' if line =~ /en|eng|english/i
23
+ when /imdb\.com\/title\//
24
+ @imdb_link = (matched = line.match(/imdb.com\/title\/(tt[0-9]+)/)) && "http://imdb.com/title/#{matched[1]}"
25
+ end
26
+ end
27
+ end
28
+
29
+ end
data/lib/nzb.rb ADDED
@@ -0,0 +1,75 @@
1
+ require 'open-uri'
2
+ require 'hpricot'
3
+ require 'zip/zip'
4
+
5
+ require File.join(File.dirname(__FILE__), 'movie')
6
+
7
+ class NZB
8
+
9
+ URL = 'http://www.newzleech.com'
10
+
11
+ attr_accessor :movies, :agent
12
+
13
+ def initialize(inspector, download_path, options = {})
14
+ @options = options
15
+ @options[:age] ||= 160
16
+ @options[:page] ||= 1
17
+
18
+ @nzb_url = "#{URL}/?group=143&minage=&age=160&min=4000&max=max&q=&m=search&adv=1&offset=#{(@options[:page].to_i - 1) * 60}"
19
+ @movies = []
20
+
21
+ parse_newzleech
22
+ movies.each do |movie|
23
+ $stdout.print "#{movie.dirname}, imdb score: #{movie.score} age: #{movie.age.to_i} day(s)\n"
24
+ if inspector.need?(movie)
25
+ $stdout.print " => DOWNLOAD: #{movie.name} (#{movie.year})\n"
26
+ download_nzb(download_path, movie)
27
+ end
28
+ end
29
+ $stdout.print "No nzb found, maybe change -age or -page setting\n" if @movies.empty?
30
+ end
31
+
32
+ def download_nzb(download_path, movie)
33
+ path = download_path.gsub(/\/$/,'') # removed / at the end
34
+ Tempfile.open("movie.nzb") do |tempfile|
35
+ tempfile.write(open(movie.nzb_link).read) # download the nzb
36
+ tempfile.close
37
+ File.move(tempfile.path, "#{path}/#{movie.dirname}.nzb")
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def parse_newzleech
44
+ $stdout.print "Parsing #{URL} for new x264 HD nzb movies\n"
45
+ doc = Hpricot(open(@nzb_url))
46
+ doc.search("table.contentt").each do |table|
47
+ if (a = table.search("td.subject a[@href^='posts/?p=']").first) && a.inner_html !=~ /^\<img/
48
+ age = parse_age(table.search("td.age").first.inner_html) # get age of the nzb
49
+ if age <= @options[:age].to_f
50
+ raw_name = a.inner_html
51
+ nfo_link = (nfo = table.search("td.subject a[@href^='nfo.php?id=']").first) && "#{URL}/#{nfo[:href]}"
52
+ imdb_link = (imdb = table.search("td.subject a[@href^='http://anonym.to/?http://www.imdb.com']").first) && imdb[:href].match(/\?(.*)/)[1]
53
+ nzb_link = (nzb = table.search("td.get a[@href^='?m=gen&dl=1']").first) && "#{URL}/#{nzb[:href]}"
54
+
55
+ movie = Movie.new(raw_name, :nfo_link => nfo_link, :imdb_link => imdb_link, :nzb_link => nzb_link, :age => age)
56
+ @movies << movie
57
+
58
+ $stdout.print '.'
59
+ $stdout.flush
60
+ end
61
+ end
62
+ end
63
+ $stdout.print "\n"
64
+ end
65
+
66
+ def parse_age(string)
67
+ case string
68
+ when /h/i
69
+ string.to_f / 24
70
+ when /d/i
71
+ string.to_f
72
+ end
73
+ end
74
+
75
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pirate-autonzb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Pirate
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-24 00:00:00 -08:00
13
+ default_executable: autonzb
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hpricot
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: optiflag
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: rubyzip
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: htmlentities
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ - !ruby/object:Gem::Dependency
52
+ name: echoe
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ version:
60
+ description: Ruby tool to automatically download x264 HD nzb movies files from newzleech.com
61
+ email: pirate.2061@gmail.com
62
+ executables:
63
+ - autonzb
64
+ extensions: []
65
+
66
+ extra_rdoc_files:
67
+ - bin/autonzb
68
+ - lib/imdb.rb
69
+ - lib/inspector.rb
70
+ - lib/movie.rb
71
+ - lib/nfo.rb
72
+ - lib/nzb.rb
73
+ - README.markdown
74
+ files:
75
+ - autonzb.gemspec
76
+ - bin/autonzb
77
+ - lib/imdb.rb
78
+ - lib/inspector.rb
79
+ - lib/movie.rb
80
+ - lib/nfo.rb
81
+ - lib/nzb.rb
82
+ - Manifest
83
+ - Rakefile
84
+ - README.markdown
85
+ has_rdoc: true
86
+ homepage: http://github.com/pirate/autonzb
87
+ post_install_message:
88
+ rdoc_options:
89
+ - --line-numbers
90
+ - --inline-source
91
+ - --title
92
+ - Autonzb
93
+ - --main
94
+ - README.markdown
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: "0"
102
+ version:
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: "1.2"
108
+ version:
109
+ requirements: []
110
+
111
+ rubyforge_project: autonzb
112
+ rubygems_version: 1.2.0
113
+ signing_key:
114
+ specification_version: 2
115
+ summary: Ruby tool to automatically download x264 HD nzb movies files from newzleech.com
116
+ test_files: []
117
+