royw-dvdprofiler2xbmc 0.1.2 → 0.1.4
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 +10 -0
- data/VERSION.yml +2 -2
- data/lib/dvdprofiler2xbmc/controllers/app.rb +4 -3
- data/lib/dvdprofiler2xbmc/models/dvdprofiler_info.rb +6 -2
- data/lib/dvdprofiler2xbmc/models/imdb_info.rb +6 -0
- data/lib/dvdprofiler2xbmc/models/media.rb +5 -6
- data/lib/dvdprofiler2xbmc/models/media_files.rb +11 -6
- data/lib/dvdprofiler2xbmc/models/tmdb_info.rb +4 -0
- data/spec/app_spec.rb +0 -1
- data/spec/config_editor_spec.rb +0 -1
- data/spec/dvdprofiler2xbmc_spec.rb +56 -56
- data/spec/dvdprofiler_info_spec.rb +85 -0
- data/spec/fanart_controller_spec.rb +96 -94
- data/spec/imdb_info_spec.rb +61 -0
- data/spec/media_files_spec.rb +103 -0
- data/spec/media_spec.rb +59 -56
- data/spec/nfo_controller_spec.rb +71 -72
- data/spec/samples/Collection.xml +645 -0
- data/spec/samples/api.themoviedb.org/2.0/Movie.imdbLookup?imdb_id=tt0120616&api_key=7a2f6eb9b6aa01651000f0a9324db835 +26 -0
- data/spec/samples/api.themoviedb.org/2.0/Movie.imdbLookup?imdb_id=tt0209163&api_key=7a2f6eb9b6aa01651000f0a9324db835 +26 -0
- data/spec/samples/api.themoviedb.org/2.0/Movie.imdbLookup?imdb_id=tt0277296&api_key=7a2f6eb9b6aa01651000f0a9324db835 +8 -0
- data/spec/samples/api.themoviedb.org/2.0/Movie.imdbLookup?imdb_id=tt0465234&api_key= +3 -0
- data/spec/samples/www.imdb.com/find?q=The+Mummy+Returns;s=tt +522 -0
- data/spec/samples/www.imdb.com/find?q=The+Mummy;s=tt +527 -0
- data/spec/samples/www.imdb.com/find?q=The+Scorpion+King;s=tt +526 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/tmdb_info_spec.rb +47 -0
- data/spec/xbmc_info_spec.rb +31 -28
- metadata +17 -3
- data/lib/dvdprofiler2xbmc/open_cache_extension.rb +0 -39
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
require 'tempfile'
|
|
4
|
+
|
|
5
|
+
# Time to add your specs!
|
|
6
|
+
# http://rspec.info/
|
|
7
|
+
|
|
8
|
+
describe "ImdbInfo" do
|
|
9
|
+
|
|
10
|
+
before(:all) do
|
|
11
|
+
logger = Log4r::Logger.new('dvdprofiler2xbmc')
|
|
12
|
+
logger.outputters = Log4r::StdoutOutputter.new(:console)
|
|
13
|
+
Log4r::Outputter[:console].formatter = Log4r::PatternFormatter.new(:pattern => "%m")
|
|
14
|
+
logger.level = Log4r::WARN
|
|
15
|
+
AppConfig.default
|
|
16
|
+
AppConfig[:logger] = logger
|
|
17
|
+
AppConfig.load
|
|
18
|
+
File.mkdirs(TMPDIR)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# before(:each) do
|
|
22
|
+
# filespec = File.expand_path(File.join(File.dirname(__FILE__), 'samples/Die Hard - 1988.nfo'))
|
|
23
|
+
# @xbmc_info = XbmcInfo.new(filespec)
|
|
24
|
+
# end
|
|
25
|
+
#
|
|
26
|
+
# after(:all) do
|
|
27
|
+
# Dir.glob(File.join(TMPDIR,'xbmcinfo_*')).each { |filename| File.delete(filename) }
|
|
28
|
+
# end
|
|
29
|
+
|
|
30
|
+
describe "Finder" do
|
|
31
|
+
it "should find a profile" do
|
|
32
|
+
info = ImdbInfo.find(:imdb_id => 'tt0465234')
|
|
33
|
+
info.should_not be_nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should return nil if profile not found" do
|
|
37
|
+
info = ImdbInfo.find(:title => 'should not find this title')
|
|
38
|
+
info.should be_nil
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "Attributes" do
|
|
43
|
+
it "should generate xbmc_info" do
|
|
44
|
+
info = ImdbInfo.find(:imdb_id => 'tt0465234')
|
|
45
|
+
info.to_xbmc_info.length.should > 0
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should generate valid xbmc_info" do
|
|
49
|
+
info = ImdbInfo.find(:imdb_id => 'tt0465234')
|
|
50
|
+
xbmc_info = info.to_xbmc_info
|
|
51
|
+
xbmc_info['title'].should == "National Treasure: Book of Secrets"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should return imdb id when profile has one" do
|
|
55
|
+
info = ImdbInfo.find(:imdb_id => 'tt0465234')
|
|
56
|
+
info.imdb_id.should == 'tt0465234'
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
require 'tempfile'
|
|
4
|
+
|
|
5
|
+
describe "MediaFiles" do
|
|
6
|
+
|
|
7
|
+
before(:all) do
|
|
8
|
+
logger = Log4r::Logger.new('dvdprofiler2xbmc')
|
|
9
|
+
logger.outputters = Log4r::StdoutOutputter.new(:console)
|
|
10
|
+
Log4r::Outputter[:console].formatter = Log4r::PatternFormatter.new(:pattern => "%m")
|
|
11
|
+
logger.level = Log4r::WARN
|
|
12
|
+
AppConfig.default
|
|
13
|
+
AppConfig[:logger] = logger
|
|
14
|
+
# AppConfig.load
|
|
15
|
+
File.mkdirs(TMPDIR)
|
|
16
|
+
@titles = [
|
|
17
|
+
'Alexander the Great',
|
|
18
|
+
'Anastasia',
|
|
19
|
+
'About a Boy',
|
|
20
|
+
'Gung Ho',
|
|
21
|
+
'Hot Shots',
|
|
22
|
+
'Meltdown',
|
|
23
|
+
'Oklahoma!',
|
|
24
|
+
'The Man From Snowy River',
|
|
25
|
+
'Rooster Cogburn (...and the Lady)',
|
|
26
|
+
'Call Me The Rise And Fall of Heidi Fleiss',
|
|
27
|
+
'batteries not included',
|
|
28
|
+
'Flyboys',
|
|
29
|
+
"Captain Corelli's Mandolin",
|
|
30
|
+
]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
after(:each) do
|
|
34
|
+
dup_dir = File.join(TMPDIR, 'dups')
|
|
35
|
+
if File.exist?(dup_dir)
|
|
36
|
+
Dir.glob(File.join(dup_dir, "*.m4v")).each { |filename| File.delete(filename) }
|
|
37
|
+
Dir.delete(dup_dir)
|
|
38
|
+
end
|
|
39
|
+
Dir.glob(File.join(TMPDIR, "*.m4v")).each { |filename| File.delete(filename) }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "Finders" do
|
|
43
|
+
it "should find the correct number of titles using relative directory paths" do
|
|
44
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
45
|
+
media_files = MediaFiles.new([TMPDIR])
|
|
46
|
+
media_files.titles.length.should == @titles.length
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should find the correct number of titles using absolute directory paths" do
|
|
50
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
51
|
+
media_files = MediaFiles.new([File.expand_path(TMPDIR)])
|
|
52
|
+
media_files.titles.length.should == @titles.length
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should find the correct number of media files using relative directory paths" do
|
|
56
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
57
|
+
media_files = MediaFiles.new([TMPDIR])
|
|
58
|
+
media_files.medias.length.should == @titles.length
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should find the correct number of media files using absolute directory paths" do
|
|
62
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
63
|
+
media_files = MediaFiles.new([File.expand_path(TMPDIR)])
|
|
64
|
+
media_files.medias.length.should == @titles.length
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "should find all of the titles according to the titles hash" do
|
|
68
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
69
|
+
media_files = MediaFiles.new([TMPDIR])
|
|
70
|
+
(media_files.titles.keys.sort - @titles.sort).empty?.should be_true
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should find all of the media files according to the medias array" do
|
|
74
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
75
|
+
media_files = MediaFiles.new([TMPDIR])
|
|
76
|
+
(media_files.medias.collect{|media| media.title}.sort - @titles.sort).empty?.should be_true
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe "Duplicates" do
|
|
81
|
+
it "should not find any duplicate titles when there are none" do
|
|
82
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
83
|
+
media_files = MediaFiles.new([File.expand_path(TMPDIR)])
|
|
84
|
+
media_files.duplicate_titles.length.should == 0
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# nfo_controller.execute has not been ran, so the only information
|
|
88
|
+
# in each media instance is what was gathered from the filename.
|
|
89
|
+
# So this means filenames with years will not match against identical
|
|
90
|
+
# titles but without years.
|
|
91
|
+
# So the only way we can test is against identical filenames in multiple
|
|
92
|
+
# directories.
|
|
93
|
+
it "should find duplicate titles when there are some" do
|
|
94
|
+
@titles.each {|title| File.touch(File.join(TMPDIR, "#{title}.m4v"))}
|
|
95
|
+
File.mkdirs(File.join(TMPDIR, 'dups'))
|
|
96
|
+
duplicate_titles = @titles[0..(@titles.length/3)]
|
|
97
|
+
duplicate_titles.each {|title| File.touch(File.join(TMPDIR, 'dups', "#{title}.m4v"))}
|
|
98
|
+
media_files = MediaFiles.new([File.expand_path(TMPDIR)])
|
|
99
|
+
media_files.duplicate_titles.length.should == duplicate_titles.length
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
data/spec/media_spec.rb
CHANGED
|
@@ -13,9 +13,9 @@ describe "Media" do
|
|
|
13
13
|
AppConfig[:logger] = logger
|
|
14
14
|
AppConfig.load
|
|
15
15
|
File.mkdirs(TMPDIR)
|
|
16
|
-
AppConfig[:logger].warn { "\nMedia Specs" }
|
|
17
16
|
end
|
|
18
17
|
|
|
18
|
+
describe "Media filename parsing" do
|
|
19
19
|
# "movie title - yyyy.ext"
|
|
20
20
|
# "movie title (yyyy).ext"
|
|
21
21
|
# "movie title.ext"
|
|
@@ -23,64 +23,67 @@ describe "Media" do
|
|
|
23
23
|
# "movie title (yyyy).partN.ext"
|
|
24
24
|
# "movie title.partN.ext"
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
it 'should parse "movie title.m4v"' do
|
|
27
|
+
result = Media.parse('movie title.m4v')
|
|
28
|
+
result.should == {:title => 'movie title', :extension => 'm4v'}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'should parse "movie title - 1999.m4v"' do
|
|
32
|
+
result = Media.parse('movie title - 1999.m4v')
|
|
33
|
+
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'should parse "movie title-1999.m4v"' do
|
|
37
|
+
result = Media.parse('movie title-1999.m4v')
|
|
38
|
+
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should parse "movie title (1999).m4v"' do
|
|
42
|
+
result = Media.parse('movie title (1999).m4v')
|
|
43
|
+
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'should parse "movie title ( 1999 ) .m4v"' do
|
|
47
|
+
result = Media.parse('movie title ( 1999 ) .m4v')
|
|
48
|
+
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'should parse "movie title.cd1.m4v"' do
|
|
52
|
+
result = Media.parse('movie title.cd1.m4v')
|
|
53
|
+
result.should == {:title => 'movie title', :part => 'cd1', :extension => 'm4v'}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'should parse "movie title - 1999.cd1.m4v"' do
|
|
57
|
+
result = Media.parse('movie title - 1999.cd1.m4v')
|
|
58
|
+
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should parse "movie title-1999.cd1.m4v"' do
|
|
62
|
+
result = Media.parse('movie title-1999.cd1.m4v')
|
|
63
|
+
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'should parse "movie title (1999).cd1.m4v"' do
|
|
67
|
+
result = Media.parse('movie title (1999).cd1.m4v')
|
|
68
|
+
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it 'should parse "movie title ( 1999 ) .cd1.m4v"' do
|
|
72
|
+
result = Media.parse('movie title ( 1999 ) .cd1.m4v')
|
|
73
|
+
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
74
|
+
end
|
|
29
75
|
end
|
|
30
76
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
it 'should parse "movie title-1999.m4v"' do
|
|
37
|
-
result = Media.parse('movie title-1999.m4v')
|
|
38
|
-
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it 'should parse "movie title (1999).m4v"' do
|
|
42
|
-
result = Media.parse('movie title (1999).m4v')
|
|
43
|
-
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'should parse "movie title ( 1999 ) .m4v"' do
|
|
47
|
-
result = Media.parse('movie title ( 1999 ) .m4v')
|
|
48
|
-
result.should == {:title => 'movie title', :year => '1999', :extension => 'm4v'}
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it 'should parse "movie title.cd1.m4v"' do
|
|
52
|
-
result = Media.parse('movie title.cd1.m4v')
|
|
53
|
-
result.should == {:title => 'movie title', :part => 'cd1', :extension => 'm4v'}
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it 'should parse "movie title - 1999.cd1.m4v"' do
|
|
57
|
-
result = Media.parse('movie title - 1999.cd1.m4v')
|
|
58
|
-
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it 'should parse "movie title-1999.cd1.m4v"' do
|
|
62
|
-
result = Media.parse('movie title-1999.cd1.m4v')
|
|
63
|
-
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it 'should parse "movie title (1999).cd1.m4v"' do
|
|
67
|
-
result = Media.parse('movie title (1999).cd1.m4v')
|
|
68
|
-
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'should parse "movie title ( 1999 ) .cd1.m4v"' do
|
|
72
|
-
result = Media.parse('movie title ( 1999 ) .cd1.m4v')
|
|
73
|
-
result.should == {:title => 'movie title', :year => '1999', :part => 'cd1', :extension => 'm4v'}
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it 'should generate path_to(:nfo)' do
|
|
77
|
-
media = Media.new(File.join(File.dirname(__FILE__), 'samples'), 'The Egg and I.dummy')
|
|
78
|
-
media.path_to(:nfo).should == File.expand_path('spec/samples/The Egg and I.nfo')
|
|
79
|
-
end
|
|
77
|
+
describe "NFO filename generation" do
|
|
78
|
+
it 'should generate path_to(:nfo)' do
|
|
79
|
+
media = Media.new(File.join(File.dirname(__FILE__), 'samples'), 'The Egg and I.dummy')
|
|
80
|
+
media.path_to(:nfo).should == File.expand_path('spec/samples/The Egg and I.nfo')
|
|
81
|
+
end
|
|
80
82
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
it 'should generate path_to(:nfo) for multipart media' do
|
|
84
|
+
media = Media.new(File.join(File.dirname(__FILE__), 'samples'), 'Ma and Pa Kettle.cd1.dummy')
|
|
85
|
+
media.path_to(:nfo).should == File.expand_path('spec/samples/Ma and Pa Kettle.nfo')
|
|
86
|
+
end
|
|
84
87
|
end
|
|
85
88
|
|
|
86
89
|
end
|
data/spec/nfo_controller_spec.rb
CHANGED
|
@@ -19,8 +19,6 @@ describe "NfoController" do
|
|
|
19
19
|
|
|
20
20
|
DvdprofilerProfile.collection_filespec = File.join(SAMPLES_DIR, 'Collection.xml')
|
|
21
21
|
File.mkdirs(TMPDIR)
|
|
22
|
-
|
|
23
|
-
AppConfig[:logger].warn { "\nNfoController Specs" }
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
before(:each) do
|
|
@@ -29,7 +27,6 @@ describe "NfoController" do
|
|
|
29
27
|
filespec = @media.path_to(extension)
|
|
30
28
|
File.delete(filespec) if File.exist?(filespec)
|
|
31
29
|
end
|
|
32
|
-
# AppConfig[:logger].info { "media path => " + @media.media_path }
|
|
33
30
|
end
|
|
34
31
|
|
|
35
32
|
after(:each) do
|
|
@@ -44,83 +41,85 @@ describe "NfoController" do
|
|
|
44
41
|
end
|
|
45
42
|
end
|
|
46
43
|
|
|
44
|
+
describe "Update" do
|
|
45
|
+
it "should update" do
|
|
46
|
+
NfoController.update(@media).should be_true
|
|
47
|
+
end
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
it "should update" do
|
|
57
|
-
NfoController.update(@media).should be_true
|
|
58
|
-
end
|
|
49
|
+
it "should use certifications if mpaa not available" do
|
|
50
|
+
NfoController.update(@media)
|
|
51
|
+
filespec = @media.path_to(:nfo)
|
|
52
|
+
xml = open(filespec).read
|
|
53
|
+
hash = XmlSimple.xml_in(xml)
|
|
54
|
+
hash['mpaa'].should == ['Approved']
|
|
55
|
+
end
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
it "should generate populated nfo file on update" do
|
|
58
|
+
NfoController.update(@media)
|
|
59
|
+
filespec = @media.path_to(:nfo)
|
|
60
|
+
xml = open(filespec).read
|
|
61
|
+
hash = XmlSimple.xml_in(xml)
|
|
62
|
+
hash['runtime'].should == ['108 min']
|
|
63
|
+
end
|
|
67
64
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
it "should generate populated imdb.xml file on update" do
|
|
66
|
+
NfoController.update(@media)
|
|
67
|
+
filespec = @media.path_to(:imdb_xml)
|
|
68
|
+
xml = open(filespec).read
|
|
69
|
+
hash = XmlSimple.xml_in(xml)
|
|
70
|
+
hash['length'].should == ['108 min']
|
|
71
|
+
end
|
|
75
72
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
it "should generate populated tmdb.xml file on update" do
|
|
74
|
+
NfoController.update(@media)
|
|
75
|
+
filespec = @media.path_to(:tmdb_xml)
|
|
76
|
+
xml = open(filespec).read
|
|
77
|
+
hash = XmlSimple.xml_in(xml)
|
|
78
|
+
hash.should be_empty
|
|
79
|
+
end
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
it "should handle different movies with the same title" do
|
|
82
|
+
FileUtils.touch(File.join(TMPDIR, 'Sabrina - 1954.dummy'))
|
|
83
|
+
media1 = Media.new(TMPDIR, 'Sabrina - 1954.dummy')
|
|
84
|
+
controller1 = NfoController.new(media1)
|
|
85
|
+
controller1.update
|
|
86
|
+
FileUtils.touch(File.join(TMPDIR, 'Sabrina - 1995.dummy'))
|
|
87
|
+
media2 = Media.new(TMPDIR, 'Sabrina - 1995.dummy')
|
|
88
|
+
controller2 = NfoController.new(media2)
|
|
89
|
+
controller2.update
|
|
90
|
+
controller1.imdb_id.should_not == controller2.imdb_id
|
|
91
|
+
end
|
|
94
92
|
end
|
|
95
93
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
94
|
+
describe "Problem media titles" do
|
|
95
|
+
it "should handle all movies in Collection.xml" do
|
|
96
|
+
imdb_exceptions = [
|
|
97
|
+
'Pearl Harbor Payback Appointment in Tokyo',
|
|
98
|
+
'Rodeo Racketeers John Wayne Young Duke Series',
|
|
99
|
+
'The Adventures of Indiana Jones The Complete DVD Movie Collection',
|
|
100
|
+
'The Great American Western Volume 6',
|
|
101
|
+
'The Mummy Collector s Set',
|
|
102
|
+
'Mexico Whitetails'
|
|
103
|
+
]
|
|
104
|
+
profiles = DvdprofilerProfile.all
|
|
105
|
+
titles = profiles.collect do |profile|
|
|
106
|
+
info = DvdprofilerInfo.new(profile)
|
|
107
|
+
"#{profile.title.remove_punctuation} - #{info.year}"
|
|
108
|
+
end
|
|
109
|
+
buf = []
|
|
110
|
+
titles.sort.each do |title|
|
|
111
|
+
filename = "#{title}.m4v"
|
|
112
|
+
FileUtils.touch(File.join(TMPDIR, filename))
|
|
113
|
+
media = Media.new(TMPDIR, filename)
|
|
114
|
+
controller = NfoController.new(media)
|
|
115
|
+
controller.update
|
|
116
|
+
buf << "Missing ISBN for #{title}" if controller.isbn.blank?
|
|
117
|
+
buf << "Missing IMDB ID for #{controller.info['title']}" if controller.imdb_id.blank? && !imdb_exceptions.include?(media.title)
|
|
118
|
+
buf << "Unexpected IMDB ID for #{controller.info['title']}" if !controller.imdb_id.blank? && imdb_exceptions.include?(media.title)
|
|
119
|
+
end
|
|
120
|
+
puts buf.join("\n") unless buf.empty?
|
|
121
|
+
buf.empty?.should be_true
|
|
121
122
|
end
|
|
122
|
-
puts buf.join("\n") unless buf.empty?
|
|
123
|
-
buf.empty?.should be_true
|
|
124
123
|
end
|
|
125
124
|
|
|
126
125
|
end
|