pirate-autonzb 0.5.1 → 0.5.2
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/Rakefile +1 -1
- data/autonzb.gemspec +2 -2
- data/bin/autonzb +1 -0
- data/lib/inspector.rb +36 -8
- data/lib/movie.rb +1 -1
- data/lib/sites/newzleech/nzb.rb +12 -31
- data/lib/sites/nzbs/nzb.rb +9 -28
- metadata +2 -2
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.
|
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"
|
data/autonzb.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{autonzb}
|
5
|
-
s.version = "0.5.
|
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-
|
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}
|
data/bin/autonzb
CHANGED
data/lib/inspector.rb
CHANGED
@@ -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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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,
|
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
|
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,
|
186
|
+
unless need?(nzb, nzbs, true, false)
|
159
187
|
File.delete(nzb.path)
|
160
188
|
size += 1
|
161
189
|
end
|
data/lib/movie.rb
CHANGED
@@ -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)
|
data/lib/sites/newzleech/nzb.rb
CHANGED
@@ -8,24 +8,26 @@ module Newzleech
|
|
8
8
|
class NZB
|
9
9
|
|
10
10
|
URL = 'http://www.newzleech.com'
|
11
|
-
|
12
|
-
attr_accessor :
|
13
|
-
|
14
|
-
def initialize(
|
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
|
-
@
|
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
|
-
|
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
|
-
@
|
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
|
data/lib/sites/nzbs/nzb.rb
CHANGED
@@ -12,16 +12,15 @@ module Nzbs
|
|
12
12
|
|
13
13
|
URL = 'http://www.nzbs.org'
|
14
14
|
|
15
|
-
attr_accessor :
|
15
|
+
attr_accessor :nzbs, :agent
|
16
16
|
|
17
|
-
def initialize(
|
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
|
-
@
|
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
|
-
@
|
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.
|
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-
|
12
|
+
date: 2009-04-15 00:00:00 -07:00
|
13
13
|
default_executable: autonzb
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|