pirate-autonzb 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  require 'rake'
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('autonzb', '0.5.1') do |p|
6
+ Echoe.new('autonzb', '0.5.2') do |p|
7
7
  p.description = "Ruby tool to automatically download x264 HD nzb movies files from newzleech.com & nzbs.org"
8
8
  p.url = "http://github.com/pirate/autonzb"
9
9
  p.author = "Pirate"
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{autonzb}
5
- s.version = "0.5.1"
5
+ s.version = "0.5.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Pirate"]
9
- s.date = %q{2009-04-05}
9
+ s.date = %q{2009-04-15}
10
10
  s.default_executable = %q{autonzb}
11
11
  s.description = %q{Ruby tool to automatically download x264 HD nzb movies files from newzleech.com & nzbs.org}
12
12
  s.email = %q{pirate.2061@gmail.com}
@@ -54,6 +54,7 @@ begin
54
54
  :movie_paths => ARGV.flags.movies,
55
55
  :login => ARGV.flags.login,
56
56
  :pass => ARGV.flags.pass)
57
+ inspector.search_and_download
57
58
  rescue => e
58
59
  p e.to_s
59
60
  Inspector.growl("AutoNZB Error!", 'look into the console log')
@@ -4,9 +4,10 @@ require File.join(File.dirname(__FILE__), 'sites', 'nzbs', 'nzb')
4
4
 
5
5
  class Inspector
6
6
 
7
- attr_accessor :backup_path, :movies, :nzbs
7
+ attr_accessor :download_path, :backup_path, :movies, :nzbs
8
8
 
9
9
  def initialize(download_path, options = {})
10
+ @download_path = download_path.gsub(/\/$/,'')
10
11
  @paths = options[:movie_paths] ? options[:movie_paths].split(',').map { |p| p.gsub(/\/$/,'') } : []
11
12
  @options = options
12
13
  @options[:srt] = @options[:srt] ? (@options[:srt].split(',') - ["unknown"] + ['unknown']).uniq : nil
@@ -24,14 +25,41 @@ class Inspector
24
25
  end
25
26
 
26
27
  $stdout.print "Movie criteria: imdb score >= #{@options[:imdb_score]}, year >= #{@options[:year]}#{" and srt [#{@options[:srt].join(',')}]" if @options[:srt]}\n"
28
+ end
29
+
30
+ def search_and_download
31
+ if @options[:login] && @options[:pass]
32
+ site = Nzbs::NZB.new(@options)
33
+ parse_nzbs(site)
34
+ end
35
+ site = Newzleech::NZB.new(@options)
36
+ parse_nzbs(site)
27
37
 
28
- Nzbs::NZB.new(self, download_path, @options) if @options[:login] && @options[:pass]
29
- Newzleech::NZB.new(self, download_path, @options)
30
-
31
- keep_only_best_nzb if @backup_path
38
+ keep_only_best_nzbs if backup_path
39
+ end
40
+
41
+ def parse_nzbs(site)
42
+ site.nzbs.each do |movie|
43
+ $stdout.print "#{movie.dirname}, imdb score: #{movie.score}, age: #{movie.age} day(s)\n"
44
+ if need?(movie)
45
+ $stdout.print " => DOWNLOAD: #{movie.name} (#{movie.year})\n"
46
+ download(site, movie)
47
+ end
48
+ end
49
+ $stdout.print "No nzb found, maybe change -age or -page setting\n" if site.nzbs.empty?
50
+ end
51
+
52
+ def download(site, movie)
53
+ Tempfile.open("movie.nzb") do |tempfile|
54
+ tempfile.write(site.download(movie)) # download nzb
55
+ tempfile.close
56
+ File.copy(tempfile.path, "#{backup_path}/#{movie.dirname}.nzb") if backup_path
57
+ File.move(tempfile.path, "#{download_path}/#{movie.dirname}.nzb")
58
+ end
59
+ @movies << movie
32
60
  end
33
61
 
34
- def need?(movie, not_validate = false, movies = @movies, log = true)
62
+ def need?(movie, movies = @movies, not_validate = false, log = true)
35
63
  if not_validate || valid?(movie)
36
64
  $stdout.print " => movie has required criteria " if log
37
65
  if m = movies.detect { |m| m == movie }
@@ -151,11 +179,11 @@ private
151
179
  movie.format == 'DTS' ? 1 : 0
152
180
  end
153
181
 
154
- def keep_only_best_nzb
182
+ def keep_only_best_nzbs
155
183
  size = 0
156
184
  @nzbs.each do |nzb|
157
185
  nzbs = @nzbs.select { |item| item.path != nzb.path }
158
- unless need?(nzb, true, nzbs, false)
186
+ unless need?(nzb, nzbs, true, false)
159
187
  File.delete(nzb.path)
160
188
  size += 1
161
189
  end
@@ -35,7 +35,7 @@ class Movie
35
35
  end
36
36
 
37
37
  def dirname
38
- "#{name} (#{year}) #{tags.join(' ')} #{format} #{source} #{sound} #{encoding} #{lang} {#{imdb_id}} [#{srt.join(',')}]".gsub(/\s+/,' ')
38
+ "#{name} (#{year}) #{tags.join(' ')} #{format} #{source} #{sound} #{encoding} #{lang} {#{imdb_id}} [#{srt.join(',')}]".gsub(/\s+|\//,' ')
39
39
  end
40
40
 
41
41
  def <=>(other_movie)
@@ -8,24 +8,26 @@ module Newzleech
8
8
  class NZB
9
9
 
10
10
  URL = 'http://www.newzleech.com'
11
-
12
- attr_accessor :movies, :agent
13
-
14
- def initialize(inspector, download_path, options = {})
15
- @inspector, @download_path = inspector, download_path.gsub(/\/$/,'')
11
+
12
+ attr_accessor :nzbs
13
+
14
+ def initialize(options = {})
16
15
  @options = options
17
16
  @options[:age] ||= 160
18
17
  @options[:pages] ||= 2
19
18
 
20
19
  @nzb_urls = []
21
- @movies = []
20
+ @nzbs = []
22
21
 
23
22
  (1..(@options[:pages].to_i)).each do |page|
24
23
  @nzb_urls << "#{URL}?group=143&minage=&age=160&min=4000&max=max&q=&m=search&adv=1&offset=#{(page.to_i - 1) * 60}"
25
24
  end
26
25
 
27
26
  parse_newzleech
28
- parse_movies
27
+ end
28
+
29
+ def download(movie)
30
+ open(movie.nzb_link).read
29
31
  end
30
32
 
31
33
  private
@@ -47,7 +49,7 @@ module Newzleech
47
49
  if age <= @options[:age].to_f
48
50
  raw_name = clean_raw_name(raw_name)
49
51
  movie = Movie.new(raw_name, :nfo => nfo, :imdb_link => imdb_link, :nzb_link => nzb_link(table), :age => age)
50
- @movies << movie
52
+ @nzbs << movie
51
53
 
52
54
  $stdout.print '.'
53
55
  $stdout.flush
@@ -83,32 +85,11 @@ module Newzleech
83
85
  def nzb_link(table)
84
86
  (nzb = table.search("td.get a[@href^='?m=gen&dl=1']").first) && "#{URL}/#{nzb[:href]}"
85
87
  end
86
-
87
- def parse_movies
88
- movies.each do |movie|
89
- $stdout.print "#{movie.dirname}, imdb score: #{movie.score}, age: #{movie.age.to_i} day(s)\n"
90
- if @inspector.need?(movie)
91
- $stdout.print " => DOWNLOAD: #{movie.name} (#{movie.year})\n"
92
- download_nzb(movie, @inspector.backup_path)
93
- end
94
- @inspector.movies << movie
95
- end
96
- $stdout.print "No nzb found, maybe change -age or -page setting\n" if @movies.empty?
97
- end
98
-
99
- def download_nzb(movie, backup_path = nil)
100
- Tempfile.open("movie.nzb") do |tempfile|
101
- tempfile.write(open(movie.nzb_link).read) # download the nzb
102
- tempfile.close
103
- File.copy(tempfile.path, "#{backup_path}/#{movie.dirname}.nzb") if backup_path
104
- File.move(tempfile.path, "#{@download_path}/#{movie.dirname}.nzb")
105
- end
106
- end
107
-
88
+
108
89
  def parse_age(string)
109
90
  case string
110
91
  when /h/i
111
- string.to_f / 24
92
+ ((string.to_f / 24) * 10).to_i / 10.0
112
93
  when /d/i
113
94
  string.to_f
114
95
  end
@@ -12,16 +12,15 @@ module Nzbs
12
12
 
13
13
  URL = 'http://www.nzbs.org'
14
14
 
15
- attr_accessor :movies, :agent
15
+ attr_accessor :nzbs, :agent
16
16
 
17
- def initialize(inspector, download_path, options = {})
18
- @inspector, @download_path = inspector, download_path.gsub(/\/$/,'')
17
+ def initialize(options = {})
19
18
  @options = options
20
19
  @options[:age] ||= 160
21
20
  @options[:pages] ||= 2
22
21
 
23
22
  @nzb_urls = []
24
- @movies = []
23
+ @nzbs = []
25
24
 
26
25
  (1..(@options[:pages].to_i)).each do |page|
27
26
  @nzb_urls << "#{URL}/index.php?action=browse&catid=4&page=#{(page)}"
@@ -29,9 +28,12 @@ module Nzbs
29
28
 
30
29
  login
31
30
  parse_nzbs
32
- parse_movies
33
31
  end
34
-
32
+
33
+ def download(movie)
34
+ @agent.get_file(movie.nzb_link)
35
+ end
36
+
35
37
  private
36
38
 
37
39
  def login
@@ -64,7 +66,7 @@ module Nzbs
64
66
  :nzb_link => nzb_link(tr, page),
65
67
  :age => age,
66
68
  :nfo => @nfo)
67
- @movies << movie
69
+ @nzbs << movie
68
70
 
69
71
  $stdout.print '.'
70
72
  $stdout.flush
@@ -111,27 +113,6 @@ module Nzbs
111
113
  def nzb_link(tr, page)
112
114
  (a = tr.search("a.dlnzb").first) && "#{URL}/#{a[:href]}"
113
115
  end
114
-
115
- def parse_movies
116
- movies.each do |movie|
117
- $stdout.print "#{movie.dirname}, imdb score: #{movie.score}, age: #{movie.age} day(s)\n"
118
- if @inspector.need?(movie)
119
- $stdout.print " => DOWNLOAD: #{movie.name} (#{movie.year})\n"
120
- download_nzb(movie, @inspector.backup_path)
121
- end
122
- @inspector.movies << movie
123
- end
124
- $stdout.print "No nzb found, maybe change -age or -page setting\n" if movies.empty?
125
- end
126
-
127
- def download_nzb(movie, backup_path = nil)
128
- Tempfile.open("movie.nzb") do |tempfile|
129
- tempfile.write(@agent.get_file(movie.nzb_link)) # download the nzb
130
- tempfile.close
131
- File.copy(tempfile.path, "#{backup_path}/#{movie.dirname}.nzb") if backup_path
132
- File.move(tempfile.path, "#{@download_path}/#{movie.dirname}.nzb")
133
- end
134
- end
135
116
 
136
117
  end
137
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pirate-autonzb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pirate
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-05 00:00:00 -07:00
12
+ date: 2009-04-15 00:00:00 -07:00
13
13
  default_executable: autonzb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency