pirate-autonzb 0.2.2 → 0.2.3
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 +1 -1
- data/bin/autonzb +11 -8
- data/lib/imdb.rb +1 -1
- data/lib/inspector.rb +36 -7
- data/lib/nfo.rb +1 -1
- data/lib/nzb.rb +26 -19
- metadata +1 -1
data/Rakefile
CHANGED
|
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
|
3
3
|
require 'rake'
|
|
4
4
|
require 'echoe'
|
|
5
5
|
|
|
6
|
-
Echoe.new('autonzb', '0.2.
|
|
6
|
+
Echoe.new('autonzb', '0.2.3') do |p|
|
|
7
7
|
p.description = "Ruby tool to automatically download x264 HD nzb movies files from newzleech.com"
|
|
8
8
|
p.url = "http://github.com/pirate/autonzb"
|
|
9
9
|
p.author = "Pirate"
|
data/autonzb.gemspec
CHANGED
data/bin/autonzb
CHANGED
|
@@ -12,10 +12,9 @@ module AutoNZB extend OptiFlagSet
|
|
|
12
12
|
description "Directories paths (separated by ,) with all your Movie's folders"
|
|
13
13
|
end
|
|
14
14
|
optional_flag 'srt' do
|
|
15
|
-
description "Subtitle
|
|
16
|
-
|
|
15
|
+
description "Subtitle languages desired (separated by ,), ie 'fr,en'.
|
|
16
|
+
Add 'none' at the end if you want to download movies without subtitles too.
|
|
17
17
|
(Order is important to define if a nzb is needed), default: none"
|
|
18
|
-
value_in_set ['fr', 'en', 'none']
|
|
19
18
|
end
|
|
20
19
|
optional_flag 'imdb' do
|
|
21
20
|
description "IMDB score limit, default: 7.0"
|
|
@@ -28,9 +27,12 @@ module AutoNZB extend OptiFlagSet
|
|
|
28
27
|
description "Age limit, in day, of nbz file on newzleech, default: 160"
|
|
29
28
|
value_matches ["age must be a number", /[0-9]+/]
|
|
30
29
|
end
|
|
31
|
-
optional_flag "
|
|
32
|
-
description "number
|
|
33
|
-
value_matches ["
|
|
30
|
+
optional_flag "pages" do
|
|
31
|
+
description "number page(s) parsed on newzleech, default: 2. Think to augment -a when change number of pages"
|
|
32
|
+
value_matches ["pages must be a number", /[0-9]+/]
|
|
33
|
+
end
|
|
34
|
+
optional_flag "backup" do
|
|
35
|
+
description "Backup folder path (to save a copy of all downloaded nzb files and prevent an already downloaded nzb to be re-downloaded)"
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
and_process!
|
|
@@ -38,6 +40,7 @@ end
|
|
|
38
40
|
|
|
39
41
|
inspector = Inspector.new(ARGV.flags.movies || '', :year => ARGV.flags.year,
|
|
40
42
|
:imdb_score => ARGV.flags.imdb,
|
|
41
|
-
:srt => ARGV.flags.srt
|
|
43
|
+
:srt => ARGV.flags.srt,
|
|
44
|
+
:backup => ARGV.flags.backup)
|
|
42
45
|
|
|
43
|
-
nzbmatrix = NZB.new(inspector, ARGV.flags.d, :age => ARGV.flags.age, :
|
|
46
|
+
nzbmatrix = NZB.new(inspector, ARGV.flags.d, :age => ARGV.flags.age, :pages => ARGV.flags.pages)
|
data/lib/imdb.rb
CHANGED
data/lib/inspector.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'movie')
|
|
2
2
|
|
|
3
3
|
class Inspector
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
attr_accessor :backup
|
|
6
|
+
|
|
5
7
|
def initialize(paths, options = {})
|
|
6
8
|
@paths = paths.split(',').map { |p| p.gsub!(/\/$/,'') }
|
|
7
9
|
@options = options
|
|
@@ -9,10 +11,15 @@ class Inspector
|
|
|
9
11
|
@options[:imdb_score] = @options[:imdb_score] ? @options[:imdb_score].to_f : 7.0
|
|
10
12
|
@options[:year] = @options[:year] ? @options[:year].to_i : 1950
|
|
11
13
|
|
|
14
|
+
if @options[:backup]
|
|
15
|
+
@backup = @options[:backup].gsub(/\/$/,'')
|
|
16
|
+
@paths << @backup
|
|
17
|
+
end
|
|
18
|
+
|
|
12
19
|
@movies = []
|
|
13
20
|
initialize_movies
|
|
14
21
|
|
|
15
|
-
$stdout.print "Movie criteria:
|
|
22
|
+
$stdout.print "Movie criteria: imdb score >= #{@options[:imdb_score]}, year >= #{@options[:year]} and srt [#{@options[:srt].join(',')}]\n"
|
|
16
23
|
end
|
|
17
24
|
|
|
18
25
|
def need?(movie)
|
|
@@ -28,11 +35,19 @@ class Inspector
|
|
|
28
35
|
$stdout.print "but new movie has better format: #{movie.format}\n"
|
|
29
36
|
true
|
|
30
37
|
elsif format_score(movie) == format_score(m)
|
|
31
|
-
if
|
|
32
|
-
$stdout.print "but new movie has better
|
|
38
|
+
if source_score(movie) > source_score(m)
|
|
39
|
+
$stdout.print "but new movie has better source: #{movie.source}\n"
|
|
33
40
|
true
|
|
41
|
+
elsif source_score(movie) == source_score(m)
|
|
42
|
+
if sound_score(movie) > sound_score(m)
|
|
43
|
+
$stdout.print "but new movie has better sound: #{movie.sound}\n"
|
|
44
|
+
true
|
|
45
|
+
else
|
|
46
|
+
$stdout.print "with same srt, format, source and sound\n"
|
|
47
|
+
false
|
|
48
|
+
end
|
|
34
49
|
else
|
|
35
|
-
$stdout.print "with same srt, format and
|
|
50
|
+
$stdout.print "with same srt, format and better source: #{m.source}\n"
|
|
36
51
|
false
|
|
37
52
|
end
|
|
38
53
|
else
|
|
@@ -62,9 +77,13 @@ private
|
|
|
62
77
|
base_dir = clean_dir(Dir.new(path))
|
|
63
78
|
base_dir.each do |movie|
|
|
64
79
|
movie_path = "#{path}/#{movie}"
|
|
65
|
-
@movies << Movie.new(movie) if File.directory?(movie_path)
|
|
80
|
+
@movies << Movie.new(movie) if File.directory?(movie_path) || File.extname(movie_path) == '.nzb'
|
|
81
|
+
end
|
|
82
|
+
if path == @backup
|
|
83
|
+
$stdout.print "Found #{@movies.size - old_movies_size} backuped nzb(s) in #{path}\n"
|
|
84
|
+
else
|
|
85
|
+
$stdout.print "Found #{@movies.size - old_movies_size} movie(s) in #{path}\n"
|
|
66
86
|
end
|
|
67
|
-
$stdout.print "Inspected #{@movies.size - old_movies_size} movie(s) in #{path}\n"
|
|
68
87
|
end
|
|
69
88
|
end
|
|
70
89
|
|
|
@@ -95,6 +114,16 @@ private
|
|
|
95
114
|
end
|
|
96
115
|
end
|
|
97
116
|
|
|
117
|
+
def source_score(movie)
|
|
118
|
+
case movie.format
|
|
119
|
+
when 'BluRay'; 4
|
|
120
|
+
when 'HDDVD'; 3
|
|
121
|
+
when 'HDTV'; 2
|
|
122
|
+
when 'DVD'; 1
|
|
123
|
+
else; 0
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
98
127
|
def sound_score(movie)
|
|
99
128
|
movie.format == 'DTS' ? 1 : 0
|
|
100
129
|
end
|
data/lib/nfo.rb
CHANGED
data/lib/nzb.rb
CHANGED
|
@@ -13,50 +13,57 @@ class NZB
|
|
|
13
13
|
def initialize(inspector, download_path, options = {})
|
|
14
14
|
@options = options
|
|
15
15
|
@options[:age] ||= 160
|
|
16
|
-
@options[:
|
|
16
|
+
@options[:pages] ||= 2
|
|
17
17
|
|
|
18
|
-
@
|
|
18
|
+
@nzb_urls = []
|
|
19
19
|
@movies = []
|
|
20
20
|
|
|
21
|
+
(1..(@options[:pages].to_i)).each do |page|
|
|
22
|
+
@nzb_urls << "#{URL}/?group=143&minage=&age=160&min=4000&max=max&q=&m=search&adv=1&offset=#{(page.to_i - 1) * 60}"
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
parse_newzleech
|
|
22
26
|
movies.each do |movie|
|
|
23
|
-
$stdout.print "#{movie.dirname}, imdb score: #{movie.score} age: #{movie.age.to_i} day(s)\n"
|
|
27
|
+
$stdout.print "#{movie.dirname}, imdb score: #{movie.score}, age: #{movie.age.to_i} day(s)\n"
|
|
24
28
|
if inspector.need?(movie)
|
|
25
29
|
$stdout.print " => DOWNLOAD: #{movie.name} (#{movie.year})\n"
|
|
26
|
-
download_nzb(download_path, movie)
|
|
30
|
+
download_nzb(download_path, movie, inspector.backup)
|
|
27
31
|
end
|
|
28
32
|
end
|
|
29
33
|
$stdout.print "No nzb found, maybe change -age or -page setting\n" if @movies.empty?
|
|
30
34
|
end
|
|
31
35
|
|
|
32
|
-
def download_nzb(download_path, movie)
|
|
36
|
+
def download_nzb(download_path, movie, backup_path = nil)
|
|
33
37
|
path = download_path.gsub(/\/$/,'') # removed / at the end
|
|
34
38
|
Tempfile.open("movie.nzb") do |tempfile|
|
|
35
39
|
tempfile.write(open(movie.nzb_link).read) # download the nzb
|
|
36
40
|
tempfile.close
|
|
37
41
|
File.move(tempfile.path, "#{path}/#{movie.dirname}.nzb")
|
|
42
|
+
File.copy("#{path}/#{movie.dirname}.nzb", "#{backup_path}/#{movie.dirname}.nzb") if backup_path
|
|
38
43
|
end
|
|
39
44
|
end
|
|
40
45
|
|
|
41
46
|
private
|
|
42
47
|
|
|
43
48
|
def parse_newzleech
|
|
44
|
-
$stdout.print "Parsing #{URL} for new x264 HD nzb movies\n"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
$stdout.print "Parsing #{URL} for new x264 HD nzb movies in last #{@options[:pages]} page(s)\n"
|
|
50
|
+
@nzb_urls.each do |url|
|
|
51
|
+
doc = Hpricot(open(url))
|
|
52
|
+
doc.search("table.contentt").each do |table|
|
|
53
|
+
if (a = table.search("td.subject a[@href^='posts/?p=']").first) && a.inner_html !=~ /^\<img/
|
|
54
|
+
age = parse_age(table.search("td.age").first.inner_html) # get age of the nzb
|
|
55
|
+
if age <= @options[:age].to_f
|
|
56
|
+
raw_name = a.inner_html
|
|
57
|
+
nfo_link = (nfo = table.search("td.subject a[@href^='nfo.php?id=']").first) && "#{URL}/#{nfo[:href]}"
|
|
58
|
+
imdb_link = (imdb = table.search("td.subject a[@href^='http://anonym.to/?http://www.imdb.com']").first) && imdb[:href].match(/\?(.*)/)[1]
|
|
59
|
+
nzb_link = (nzb = table.search("td.get a[@href^='?m=gen&dl=1']").first) && "#{URL}/#{nzb[:href]}"
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
movie = Movie.new(raw_name, :nfo_link => nfo_link, :imdb_link => imdb_link, :nzb_link => nzb_link, :age => age)
|
|
62
|
+
@movies << movie
|
|
57
63
|
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
$stdout.print '.'
|
|
65
|
+
$stdout.flush
|
|
66
|
+
end
|
|
60
67
|
end
|
|
61
68
|
end
|
|
62
69
|
end
|