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 +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
|