serienrenamer 0.0.8 → 0.0.9
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/.gitignore +1 -0
- data/Gemfile +3 -0
- data/README.rdoc +8 -0
- data/lib/plugin/serienjunkies_org.rb +179 -0
- data/lib/serienrenamer.rb +1 -1
- data/lib/serienrenamer/episode.rb +1 -1
- data/test/test_episode.rb +179 -161
- data/test/test_helper.rb +56 -40
- data/test/test_information_store.rb +37 -34
- data/test/test_plugin_serienjunkies_de.rb +72 -69
- data/test/test_plugin_serienjunkies_feed.rb +68 -66
- data/test/test_plugin_textfile.rb +43 -37
- data/test/test_plugin_wikipedia.rb +159 -155
- data/test/test_serienjunkies_org.rb +84 -0
- metadata +5 -2
data/test/test_helper.rb
CHANGED
@@ -1,61 +1,77 @@
|
|
1
1
|
require 'stringio'
|
2
2
|
require 'test/unit'
|
3
|
+
require 'vcr'
|
3
4
|
require File.dirname(__FILE__) + '/../lib/serienrenamer'
|
4
5
|
require File.dirname(__FILE__) + '/../lib/plugin'
|
5
6
|
|
6
7
|
class TestHelper
|
7
8
|
|
8
|
-
|
9
|
+
TESTFILE_DIRECTORY = File.join(File.dirname(__FILE__), 'testfiles')
|
9
10
|
|
10
|
-
|
11
|
+
class << self
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
# create the supplied Files in the testfiles directory
|
14
|
+
def create_test_files(files)
|
15
|
+
_create_testfile_directory
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
files.each do |f|
|
18
|
+
FileUtils.touch File.join(TESTFILE_DIRECTORY, f)
|
19
|
+
end
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
# create supplied directories with an sample video file
|
23
|
+
def create_test_dirs(directories)
|
24
|
+
_create_testfile_directory
|
24
25
|
|
25
|
-
|
26
|
-
|
26
|
+
directories.each do |d|
|
27
|
+
dir = File.join(TESTFILE_DIRECTORY, d)
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
FileUtils.mkdir(dir) unless File.directory?(dir)
|
30
|
+
FileUtils.touch(File.join(dir, 'episode.avi'))
|
31
|
+
end
|
32
|
+
end
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
# write file with episode Text
|
35
|
+
def write_episode_textfile(dir, title, filename="filename.txt")
|
36
|
+
dirpath = File.join(TESTFILE_DIRECTORY, dir)
|
36
37
|
|
37
|
-
|
38
|
+
create_test_dirs([ dir ]) unless File.directory?(dirpath)
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
filenametxt = File.new(File.join(dirpath, filename), "w")
|
41
|
+
filenametxt.write(title)
|
42
|
+
filenametxt.close
|
43
|
+
end
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
# change the working directory to TESTFILE_DIRECTORY
|
46
|
+
def cwd
|
47
|
+
Dir.chdir(TESTFILE_DIRECTORY)
|
48
|
+
end
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
# remove testfile directory
|
51
|
+
def clean
|
52
|
+
if File.directory?(TESTFILE_DIRECTORY)
|
53
|
+
system("rm -rf #{TESTFILE_DIRECTORY}")
|
54
|
+
end
|
55
|
+
end
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
57
|
+
def _create_testfile_directory
|
58
|
+
FileUtils.mkdir(TESTFILE_DIRECTORY) unless
|
59
|
+
File.directory?(TESTFILE_DIRECTORY)
|
60
60
|
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
VCR.configure do |c|
|
65
|
+
c.cassette_library_dir = File.join(File.dirname(__FILE__), 'vcr_cassettes')
|
66
|
+
c.hook_into :fakeweb
|
67
|
+
c.allow_http_connections_when_no_cassette = true
|
68
|
+
end
|
69
|
+
|
70
|
+
module Kernel
|
71
|
+
private
|
72
|
+
|
73
|
+
# get the current method name as an unique identifier for the vcr_cassettes
|
74
|
+
def method_name
|
75
|
+
caller[0] =~ /`([^']*)'/ and $1
|
76
|
+
end
|
61
77
|
end
|
@@ -4,45 +4,48 @@ require 'fileutils'
|
|
4
4
|
|
5
5
|
class TestInformationStore < Test::Unit::TestCase
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
storage.
|
32
|
-
|
7
|
+
@@files = {
|
8
|
+
'chuckfull' => 'Chuck.S01E01.Dies.ist.ein.Test.German.Dubbed.BLURAYRiP.DELiCiOUS.WEBRiP.CiD.avi',
|
9
|
+
'royal' => 'Royal.Pains.S02E10.Beziehungsbeschwerden.GERMAN.DUBBED.DVDRiP.XviD-SOF.avi',
|
10
|
+
'flpo' => 'Flashpoint.S04E04.Getruebte.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
|
11
|
+
'legaltrash' =>'flpo.404.Die.German.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
|
12
|
+
}
|
13
|
+
|
14
|
+
def setup
|
15
|
+
|
16
|
+
VCR.use_cassette("info_store_#{method_name}") do
|
17
|
+
TestHelper.create_test_files(@@files.values)
|
18
|
+
TestHelper.cwd
|
19
|
+
|
20
|
+
@episodes = Hash.new
|
21
|
+
storage = Serienrenamer::InformationStore.new("storage.yml")
|
22
|
+
|
23
|
+
@@files.each do |key, value|
|
24
|
+
filenametxt = File.new(value, "w")
|
25
|
+
filenametxt.write(value)
|
26
|
+
filenametxt.close
|
27
|
+
|
28
|
+
episode = Serienrenamer::Episode.new(value)
|
29
|
+
episode.rename
|
30
|
+
@episodes[key] = episode
|
31
|
+
storage.store(episode)
|
32
|
+
end
|
33
|
+
storage.write
|
33
34
|
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
end
|
37
|
+
|
38
|
+
def teardown
|
39
|
+
TestHelper.clean
|
40
|
+
end
|
38
41
|
|
39
|
-
|
42
|
+
def test_information_storage
|
40
43
|
|
41
|
-
|
44
|
+
storage = Serienrenamer::InformationStore.new("storage.yml")
|
42
45
|
|
43
|
-
|
44
|
-
|
45
|
-
end
|
46
|
+
@episodes.each do |key, episode|
|
47
|
+
assert_equal(storage.episode_hash[episode.md5sum], episode.series)
|
46
48
|
end
|
49
|
+
end
|
47
50
|
|
48
51
|
end
|
@@ -2,94 +2,97 @@
|
|
2
2
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
3
|
|
4
4
|
class TestPluginSerienjunkiesDe < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
5
|
+
@@files = {
|
6
|
+
'flpo' => 'Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
|
7
|
+
'dani' => 'Dr.Dani.Santino.S01E04.German.Dubbed.WEB-DL.XViD.avi',
|
8
|
+
'two' => 'Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
|
9
|
+
'simp' => 'Die.Simpsons.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
|
10
|
+
'sea' => 'tcpa-seapatrol_s05e11.avi',
|
11
|
+
}
|
12
|
+
|
13
|
+
@@directories = {
|
14
|
+
'chuck' => 'Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
|
15
|
+
'chuck2' => 'Chuck.S02E10.German.Dubbed.BLURAYRiP.WEB-DL',
|
16
|
+
}
|
17
|
+
|
18
|
+
def setup
|
19
|
+
TestHelper.create_test_files(@@files.values)
|
20
|
+
TestHelper.create_test_dirs(@@directories.values)
|
21
|
+
TestHelper.cwd
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
TestHelper.clean
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_seriespage_url_search
|
29
|
+
VCR.use_cassette("sjunkie_de_#{method_name}") do
|
30
|
+
plugin = Plugin::SerienjunkiesDe
|
31
|
+
|
32
|
+
misfits = plugin.find_link_to_series_page("Misfits")
|
33
|
+
assert_equal("http://serienjunkies.de/misfits/", misfits)
|
34
|
+
|
35
|
+
thementalist = plugin.find_link_to_series_page("The Mentalist")
|
36
|
+
assert_equal("http://serienjunkies.de/the-mentalist/", thementalist)
|
37
|
+
|
38
|
+
ncis = plugin.find_link_to_series_page("NCIS")
|
39
|
+
assert_equal("http://serienjunkies.de/ncis/", ncis)
|
40
|
+
|
41
|
+
berger = plugin.find_link_to_series_page("The Hard Times Of RJ Berger")
|
42
|
+
assert_equal(nil, berger)
|
22
43
|
end
|
44
|
+
end
|
23
45
|
|
24
|
-
|
25
|
-
TestHelper.clean
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_seriespage_url_search
|
29
|
-
|
30
|
-
plugin = Plugin::SerienjunkiesDe
|
31
|
-
|
32
|
-
misfits = plugin.find_link_to_series_page("Misfits")
|
33
|
-
assert_equal("http://serienjunkies.de/misfits/", misfits)
|
34
|
-
|
35
|
-
thementalist = plugin.find_link_to_series_page("The Mentalist")
|
36
|
-
assert_equal("http://serienjunkies.de/the-mentalist/", thementalist)
|
37
|
-
|
38
|
-
ncis = plugin.find_link_to_series_page("NCIS")
|
39
|
-
assert_equal("http://serienjunkies.de/ncis/", ncis)
|
46
|
+
def test_parse_seriespage
|
40
47
|
|
41
|
-
|
42
|
-
|
48
|
+
VCR.use_cassette("sjunkie_de_#{method_name}") do
|
49
|
+
plugin = Plugin::SerienjunkiesDe
|
43
50
|
|
44
|
-
|
45
|
-
|
46
|
-
def test_parse_seriespage
|
47
|
-
|
48
|
-
plugin = Plugin::SerienjunkiesDe
|
49
|
-
|
50
|
-
seasons = plugin.parse_seriespage(
|
51
|
-
"http://www.serienjunkies.de/royal-pains/")
|
51
|
+
seasons = plugin.parse_seriespage(
|
52
|
+
"http://www.serienjunkies.de/royal-pains/")
|
52
53
|
assert_match(/Auch.Reiche.sind.nur.Menschen/, seasons['S01E01'])
|
53
54
|
assert_match(/Krank.vor.Liebe/, seasons['S02E02'])
|
54
55
|
|
55
|
-
|
56
|
-
|
56
|
+
seasons = plugin.parse_seriespage(
|
57
|
+
"http://www.serienjunkies.de/flashpoint/")
|
57
58
|
assert_match(/Zu.viele.Verlierer/, seasons['S02E02'])
|
58
59
|
assert_match(/Der.Aufstand/, seasons['S02E16'])
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
seasons = plugin.parse_seriespage(
|
62
|
+
"http://www.serienjunkies.de/necessary-roughness/")
|
62
63
|
assert_match(/Touchdown/, seasons['S01E01'])
|
63
64
|
assert_match(/Extremsport/, seasons['S01E06'])
|
64
65
|
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
seasons = plugin.parse_seriespage("http://www.serienjunkies.de/Weeds/")
|
67
|
+
assert_match(/Das.Geld.im.Pool/, seasons['S03E02'])
|
68
|
+
assert_match(/Schlangennest/, seasons['S02E01'])
|
68
69
|
end
|
70
|
+
end
|
69
71
|
|
70
|
-
|
71
|
-
|
72
|
-
plugin = Plugin::SerienjunkiesDe
|
72
|
+
def test_episode_information_generation
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
flpo.add_episode_information(data, true) if data
|
77
|
-
assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
|
74
|
+
VCR.use_cassette("sjunkie_de_#{method_name}") do
|
75
|
+
plugin = Plugin::SerienjunkiesDe
|
78
76
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
flpo = Serienrenamer::Episode.new(@@files['flpo'])
|
78
|
+
data = plugin.generate_episode_information(flpo)[0]
|
79
|
+
flpo.add_episode_information(data, true) if data
|
80
|
+
assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
|
83
81
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
82
|
+
two = Serienrenamer::Episode.new(@@files['two'])
|
83
|
+
data = plugin.generate_episode_information(two)[0]
|
84
|
+
two.add_episode_information(data, true) if data
|
85
|
+
assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
|
88
86
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
chuck = Serienrenamer::Episode.new(@@directories['chuck'])
|
88
|
+
data = plugin.generate_episode_information(chuck)[0]
|
89
|
+
chuck.add_episode_information(data, true) if data
|
90
|
+
assert_equal("S01E01 - Pilot.avi", chuck.to_s)
|
93
91
|
|
92
|
+
chuck2 = Serienrenamer::Episode.new(@@directories['chuck2'])
|
93
|
+
data = plugin.generate_episode_information(chuck2)[0]
|
94
|
+
chuck2.add_episode_information(data, true) if data
|
95
|
+
assert_equal("S02E10 - Chuck gegen zehn Millionen.avi", chuck2.to_s)
|
94
96
|
end
|
97
|
+
end
|
95
98
|
end
|
@@ -2,85 +2,87 @@
|
|
2
2
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
3
|
|
4
4
|
class TestPluginSerienjunkiesFeed < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
5
|
+
@@files = {
|
6
|
+
'chuck' => 'chuck.312.hdtv-lol.avi',
|
7
|
+
'flpo' => 'Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
|
8
|
+
'csiny' => 'sof-csi.ny.s07e21.avi',
|
9
|
+
'simps' => 'simpsons.s22e16.avi',
|
10
|
+
'biglove'=> 'idtv-big.love.s05e06.avi',
|
11
|
+
'crmi' => 'crmi-s06e22.avi',
|
12
|
+
'two' => 'Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
|
13
|
+
'sea' => 'tcpa-seapatrol_s05e11.avi',
|
14
|
+
'shlock' => 'Sherlock.s02e01.avi',
|
15
|
+
'unit' => 'The.Unit.s01e17.avi',
|
16
|
+
}
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
@@directories = {
|
19
|
+
'chuck' => 'Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
|
20
|
+
}
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
TestHelper.create_test_files(@@files.values)
|
30
|
-
TestHelper.create_test_dirs(@@directories.values)
|
31
|
-
TestHelper.cwd
|
22
|
+
def setup
|
23
|
+
unless defined? @feed
|
24
|
+
@feed = Plugin::SerienjunkiesOrgFeed
|
25
|
+
@feed.feed_url = File.join( File.dirname(__FILE__),
|
26
|
+
'serienjunkies_feed_sample.xml')
|
32
27
|
end
|
33
28
|
|
34
|
-
|
35
|
-
|
36
|
-
|
29
|
+
TestHelper.create_test_files(@@files.values)
|
30
|
+
TestHelper.create_test_dirs(@@directories.values)
|
31
|
+
TestHelper.cwd
|
32
|
+
end
|
33
|
+
|
34
|
+
def teardown
|
35
|
+
TestHelper.clean
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
38
|
+
# improve this so that the Plugin uses a local xml file
|
39
|
+
def test_information_extraction
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
VCR.use_cassette("sjunkie_feed_#{method_name}") do
|
42
|
+
simps = Serienrenamer::Episode.new(@@files['simps'])
|
43
|
+
data = @feed.generate_episode_information(simps)[0]
|
44
|
+
simps.add_episode_information(data, true)
|
45
|
+
assert_equal("S22E16 - Ein Sommernachtstrip.avi", simps.to_s)
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
flpo = Serienrenamer::Episode.new(@@files['flpo'])
|
48
|
+
data = @feed.generate_episode_information(flpo)[0]
|
49
|
+
flpo.add_episode_information(data, true)
|
50
|
+
assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
big = Serienrenamer::Episode.new(@@files['biglove'])
|
53
|
+
data = @feed.generate_episode_information(big)[0]
|
54
|
+
big.add_episode_information(data, true)
|
55
|
+
assert_equal("S05E06 - Scheidung.avi", big.to_s)
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
crmi = Serienrenamer::Episode.new(@@files['crmi'])
|
58
|
+
data = @feed.generate_episode_information(crmi)[0]
|
59
|
+
crmi.add_episode_information(data, true)
|
60
|
+
assert_equal("S06E22 - Die Dunkelkammer Mörder.avi", crmi.to_s)
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
two = Serienrenamer::Episode.new(@@files['two'])
|
63
|
+
data = @feed.generate_episode_information(two)[0]
|
64
|
+
two.add_episode_information(data, true)
|
65
|
+
assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
|
65
66
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
sea = Serienrenamer::Episode.new(@@files['sea'])
|
68
|
+
data = @feed.generate_episode_information(sea)[0]
|
69
|
+
sea.add_episode_information(data, true)
|
70
|
+
assert_equal("S05E11 - Der Morgen danach.avi", sea.to_s)
|
70
71
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
csiny = Serienrenamer::Episode.new(@@files['csiny'])
|
73
|
+
data = @feed.generate_episode_information(csiny)[0]
|
74
|
+
csiny.add_episode_information(data, true)
|
75
|
+
assert_equal("S07E21 - Kugelhagel.avi", csiny.to_s)
|
75
76
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
77
|
+
# the following episodes are not exisiting in the feed
|
78
|
+
# so it should returns nil
|
79
|
+
sherlock = Serienrenamer::Episode.new(@@files['shlock'])
|
80
|
+
data = @feed.generate_episode_information(sherlock)[0]
|
81
|
+
assert_nil(data)
|
81
82
|
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
theunit = Serienrenamer::Episode.new(@@files['unit'])
|
84
|
+
data = @feed.generate_episode_information(theunit)[0]
|
85
|
+
assert_nil(data)
|
85
86
|
end
|
87
|
+
end
|
86
88
|
end
|