serienrenamer 0.0.3 → 0.0.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/Manifest.txt CHANGED
@@ -10,13 +10,16 @@ lib/plugin/textfile.rb
10
10
  lib/plugin/wikipedia.rb
11
11
  lib/serienrenamer.rb
12
12
  lib/serienrenamer/episode.rb
13
+ lib/serienrenamer/information_store.rb
13
14
  script/console
14
15
  script/destroy
15
16
  script/generate
16
17
  serienrenamer.gemspec
17
18
  test/serienjunkies_feed_sample.xml
18
19
  test/test_episode.rb
20
+ test/test_hash.rb
19
21
  test/test_helper.rb
22
+ test/test_information_store.rb
20
23
  test/test_plugin_serienjunkies_de.rb
21
24
  test/test_plugin_serienjunkies_feed.rb
22
25
  test/test_plugin_textfile.rb
data/bin/serienrenamer CHANGED
@@ -11,8 +11,24 @@ require 'fileutils'
11
11
  require "highline/system_extensions"
12
12
  include HighLine::SystemExtensions
13
13
 
14
+ # create program configuration dirs/files
15
+ CONFIG_DIR = File.join( File.expand_path("~"), ".serienrenamer" )
16
+ CONFIG_FILE = File.join( CONFIG_DIR, "config.yml" )
17
+ FileUtils.mkdir(CONFIG_DIR) unless File.directory?(CONFIG_DIR)
18
+
19
+ ###
20
+ # configuration
21
+ STANDARD_CONFIG = {
22
+ :default_directory => File.join(File.expand_path("~"), "Downloads"),
23
+ :store_episode_info => false,
24
+ :store_path => File.join(CONFIG_DIR, "information_storage.yml"),
25
+ :illegal_words => %w{ ML },
26
+ }
27
+
28
+ config = STANDARD_CONFIG.merge_with_serialized(CONFIG_FILE)
29
+
14
30
  ###
15
- # Option definition and handling
31
+ # option definition and handling
16
32
  options = {}
17
33
  opts = OptionParser.new("Usage: #{$0} [OPTIONS] DIR")
18
34
  opts.separator("")
@@ -60,9 +76,8 @@ opts.separator("")
60
76
 
61
77
  rest = opts.permute(ARGV)
62
78
 
63
- ################
79
+ ###
64
80
  # Load plugins #
65
- ################
66
81
  Dir[File.join(File.dirname(__FILE__),"../lib/plugin/*.rb")].each do |plugin|
67
82
  load plugin
68
83
  end
@@ -72,16 +87,17 @@ puts "Plugins loaded: #{Serienrenamer::Pluginbase.registered_plugins.inspect}"
72
87
  puts ""
73
88
 
74
89
  # change into DIR
75
- episode_directory = rest.pop || File.join( File.expand_path('~'), "Downloads" )
90
+ episode_directory = rest.pop || config[:default_directory]
76
91
 
77
92
  fail "'#{episode_directory}' does not exist or is not a directory" unless
78
93
  Dir.exists?(episode_directory)
79
94
 
80
95
  Dir.chdir(episode_directory)
81
96
 
82
- #########################################
83
- # Iterate through all directory entries #
84
- #########################################
97
+ ###
98
+ # Iterate through all directory entries
99
+ info_storage = Serienrenamer::InformationStore.new(config[:store_path])
100
+
85
101
  begin
86
102
 
87
103
  for entry in Dir.entries('.').sort do
@@ -151,6 +167,8 @@ begin
151
167
  next
152
168
  end
153
169
 
170
+ info_storage.store(epi) if config[:store_episode_info]
171
+
154
172
  puts "\n\n"
155
173
 
156
174
  epi.rename()
@@ -158,4 +176,6 @@ begin
158
176
 
159
177
  rescue Interrupt => e
160
178
  puts
179
+ ensure
180
+ info_storage.write() if config[:store_episode_info]
161
181
  end
@@ -104,7 +104,7 @@ module Plugin
104
104
 
105
105
  # set the feed url (e.g for testing)
106
106
  def self.feed_url=(feed)
107
- @feed_url = feed
107
+ @feed_url = File.absolute_path(feed)
108
108
  end
109
109
  end
110
110
  end
@@ -2,6 +2,7 @@
2
2
  require 'find'
3
3
  require 'fileutils'
4
4
  require 'wlapi'
5
+ require 'digest/md5'
5
6
 
6
7
  module Serienrenamer
7
8
 
@@ -150,11 +151,22 @@ module Serienrenamer
150
151
  end
151
152
 
152
153
  @success = true
154
+ @episodepath = destination_file
153
155
  rescue SystemCallError => e
154
156
  puts "Rename failed: #{e}"
155
157
  end
156
158
  end
157
159
 
160
+ # returns the md5sum of the episode_path so that it can
161
+ # be distinguished
162
+ def md5sum
163
+ if File.file?(@episodepath)
164
+ d = Digest::MD5.new
165
+ return d.hexdigest(open(@episodepath, 'rb').read)
166
+ end
167
+ return nil
168
+ end
169
+
158
170
  ##################
159
171
  # static methods #
160
172
  ##################
@@ -0,0 +1,42 @@
1
+ require 'yaml'
2
+
3
+ module Serienrenamer
4
+
5
+ # this class holds a storage for episode information (seriesname)
6
+ # in form of a yaml file which can be used from other tools
7
+ class InformationStore
8
+
9
+ attr_reader :episode_hash
10
+
11
+ # this method will load an exisiting yaml file and tries to rebuild
12
+ # the used hash with episode data
13
+ def initialize(yaml_path)
14
+ @yaml_path = yaml_path
15
+ @episode_hash = {}
16
+
17
+ if File.file?(yaml_path)
18
+ @episode_hash = YAML.load(File.new(yaml_path, "rb").read)
19
+ end
20
+ end
21
+
22
+ # this method will store the information of the supplied episode
23
+ # instance to the file
24
+ def store(episode)
25
+ raise ArgumentError, "Episode instance needed" unless
26
+ episode.is_a? Serienrenamer::Episode
27
+
28
+ unless @episode_hash[episode.md5sum]
29
+ @episode_hash[episode.md5sum] = episode.series
30
+ end
31
+ end
32
+
33
+ # this method will write the current hash of episodes to the
34
+ # yaml file
35
+ def write()
36
+ storage_file = File.new(@yaml_path, "w")
37
+ storage_file.write(@episode_hash.to_yaml)
38
+ storage_file.close
39
+ end
40
+ end
41
+
42
+ end
data/lib/serienrenamer.rb CHANGED
@@ -3,9 +3,10 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
 
4
4
 
5
5
  module Serienrenamer
6
- VERSION = '0.0.3'
6
+ VERSION = '0.0.4'
7
7
 
8
8
  require 'serienrenamer/episode.rb'
9
+ require 'serienrenamer/information_store.rb'
9
10
 
10
11
  class Pluginbase
11
12
 
@@ -25,4 +26,32 @@ module Serienrenamer
25
26
  end
26
27
  end
27
28
 
29
+ # reopening Hash class and added a persistence method
30
+ require 'yaml'
31
+
32
+ class ::Hash
33
+
34
+ # this method merges a YAML-serialized hash-instance
35
+ # with self. if the given File is not exisiting this will write
36
+ # a serialized version of self to this file.
37
+ #
38
+ # if the given yaml file does not contain a serialized hash than it
39
+ # merges with an empty hash that returns self unchanged.
40
+ #
41
+ # returns a new Hash merged with deserialized version from the file
42
+ def merge_with_serialized(yaml_file)
43
+
44
+ unless File.file? yaml_file
45
+ File.open(yaml_file, 'w') {|f| f.write(self.to_yaml) }
46
+ end
47
+
48
+ persistent_config = YAML.load(File.new(yaml_file, "rb").read)
49
+ persistent_config = Hash.new unless persistent_config.is_a? Hash
50
+
51
+ config = self.merge(persistent_config)
52
+ File.open(yaml_file, 'w') {|f| f.write(config.to_yaml) }
53
+
54
+ return config
55
+ end
56
+ end
28
57
  end
data/test/test_episode.rb CHANGED
@@ -4,170 +4,183 @@ require 'fileutils'
4
4
 
5
5
  class TestEpisode < Test::Unit::TestCase
6
6
 
7
- @@valid_filenames = {
8
- 'chuckfull' => 'test/testfiles/Chuck.S01E01.Dies.ist.ein.Test.German.Dubbed.BLURAYRiP.DELiCiOUS.WEBRiP.CiD.avi',
9
- 'chuck1' => 'test/testfiles/chuck.512.hdtv-lol.avi',
10
- 'chuck2' => 'test/testfiles/chuck.1212.hdtv-lol.avi',
11
- 'chuck3' => 'test/testfiles/chuck.5x12.hdtv-lol.avi',
12
- 'without'=> 'test/testfiles/5x12.avi',
13
- 'royal' => 'test/testfiles/Royal.Pains.S02E10.Beziehungsbeschwerden.GERMAN.DUBBED.DVDRiP.XviD-SOF.avi',
14
- 'flpo' => 'test/testfiles/Flashpoint.S04E04.Getruebte.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
15
- 'csiny' => 'test/testfiles/sof-csi.ny.s07e20.avi',
16
- 'legaltrash' =>'test/testfiles/flpo.404.Die.German.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
7
+ @@files = {
8
+ 'chuckfull' => 'Chuck.S01E01.Dies.ist.ein.Test.German.Dubbed.BLURAYRiP.DELiCiOUS.WEBRiP.CiD.avi',
9
+ 'chuck1' => 'chuck.512.hdtv-lol.avi',
10
+ 'chuck2' => 'chuck.1212.hdtv-lol.avi',
11
+ 'chuck3' => 'chuck.5x12.hdtv-lol.avi',
12
+ 'without'=> '5x12.avi',
13
+ 'royal' => 'Royal.Pains.S02E10.Beziehungsbeschwerden.GERMAN.DUBBED.DVDRiP.XviD-SOF.avi',
14
+ 'flpo' => 'Flashpoint.S04E04.Getruebte.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
15
+ 'csiny' => 'sof-csi.ny.s07e20.avi',
16
+ 'legaltrash' =>'flpo.404.Die.German.Erinnerungen.German.Dubbed.WEB-DL.XViD.avi',
17
17
  }
18
18
 
19
- @@valid_directories = {
20
- 'chuck' => 'test/testfiles/Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP',
21
- 'chuck1' => 'test/testfiles/Chuck.101.First.Episode.German.Dubbed.BLURAYRiP',
22
- 'chuck2' => 'test/testfiles/chuck.2x12',
23
- 'ncis' => 'test/testfiles/NCIS.S09E05.Im.sicheren.Hafen.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD',
19
+ @@directories = {
20
+ 'chuck' => 'Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP',
21
+ 'chuck1' => 'Chuck.101.First.Episode.German.Dubbed.BLURAYRiP',
22
+ 'chuck2' => 'chuck.2x12',
23
+ 'ncis' => 'NCIS.S09E05.Im.sicheren.Hafen.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD',
24
24
  }
25
25
 
26
26
  @@invalid_directories = {
27
- 'tbbt' => 'test/testfiles/BBTV.16/',
27
+ 'tbbt' => 'BBTV.16/',
28
28
  }
29
29
 
30
30
  def setup
31
- system('rm -r test/testfiles/*')
32
-
33
- @@valid_filenames.each { |n,f|
34
- FileUtils.touch f unless File.file?(f)
35
- }
36
-
37
- @@valid_directories.each { |n,d|
38
- FileUtils.mkdir(d)
39
- FileUtils.touch(File.join(d, 'episode.avi'))
40
- }
31
+ TestHelper.create_test_files(@@files.values)
32
+ TestHelper.create_test_dirs(@@directories.values)
33
+ TestHelper.create_test_dirs(@@invalid_directories.values)
34
+ TestHelper.cwd
35
+ end
41
36
 
42
- @@invalid_directories.each { |n,d|
43
- FileUtils.mkdir(d)
44
- FileUtils.touch(File.join(d, 'episode.avi'))
45
- }
37
+ def teardown
38
+ TestHelper.clean
46
39
  end
47
40
 
48
41
  def test_episode_name_detection
49
42
 
50
- @@valid_filenames.each { |name,file|
43
+ @@files.each { |name,file|
51
44
  assert_equal(true,
52
45
  Serienrenamer::Episode.contains_episode_information?(file))
53
46
 
54
47
  assert_equal(false,
55
- Serienrenamer::Episode.extract_episode_information(File.basename(file)).nil?)
48
+ Serienrenamer::Episode.extract_episode_information(file).nil?)
56
49
  }
57
50
 
58
- @@valid_directories.each { |name,dir|
51
+ @@directories.each { |name,dir|
59
52
  assert_equal(true,
60
53
  Serienrenamer::Episode.contains_episode_information?(dir))
61
54
 
62
55
  assert_equal(false,
63
- Serienrenamer::Episode.extract_episode_information(File.basename(dir)).nil?)
56
+ Serienrenamer::Episode.extract_episode_information(dir).nil?)
64
57
  }
65
58
 
66
59
  assert_equal(false,
67
60
  Serienrenamer::Episode.contains_episode_information?('video.flv'))
68
61
 
69
62
  assert_equal(true,
70
- Serienrenamer::Episode.extract_episode_information(File.basename('video.flv')).nil?)
63
+ Serienrenamer::Episode.extract_episode_information('video.flv').nil?)
71
64
  end
72
65
 
73
66
  def test_information_cleanup
74
- assert_equal("Im sicheren Hafen", Serienrenamer::Episode.clean_episode_data(
75
- ".Im.sicheren.Hafen.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD", true, true
76
- ))
77
-
67
+ assert_equal("Im sicheren Hafen",
68
+ Serienrenamer::Episode.clean_episode_data(
69
+ ".Im.sicheren.Hafen.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD",
70
+ true, true)
71
+ )
78
72
  end
79
73
 
80
74
  def test_repairing_umlauts
81
- assert_equal("Duell", Serienrenamer::Episode.repair_umlauts("Duell"))
82
- assert_equal("für", Serienrenamer::Episode.repair_umlauts("fuer"))
83
- assert_equal("Änderung", Serienrenamer::Episode.repair_umlauts("Aenderung"))
84
- assert_equal("Zaubersprüche", Serienrenamer::Episode.repair_umlauts("Zaubersprueche"))
85
- assert_equal("Ungeheuerlich", Serienrenamer::Episode.repair_umlauts("Ungeheuerlich"))
86
- assert_equal("Frauen", Serienrenamer::Episode.repair_umlauts("Frauen"))
87
- assert_equal("Abführmittel", Serienrenamer::Episode.repair_umlauts("Abfuehrmittel"))
88
- assert_equal("tödlich", Serienrenamer::Episode.repair_umlauts("toedlich"))
89
- assert_equal("König", Serienrenamer::Episode.repair_umlauts("Koenig"))
90
- assert_equal("Öko", Serienrenamer::Episode.repair_umlauts("Oeko"))
91
- assert_equal("Moeback", Serienrenamer::Episode.repair_umlauts("Moeback")) # both forms not existing
92
- assert_equal("Männer", Serienrenamer::Episode.repair_umlauts("Maenner"))
93
- assert_equal("Draufgänger", Serienrenamer::Episode.repair_umlauts("Draufgaenger"))
94
- assert_equal("Unglücksvögel", Serienrenamer::Episode.repair_umlauts("Ungluecksvoegel"))
95
- assert_equal("Jäger", Serienrenamer::Episode.repair_umlauts("Jaeger"))
96
- assert_equal("Loyalität", Serienrenamer::Episode.repair_umlauts("Loyalitaet"))
75
+ assert_equal("Duell",
76
+ Serienrenamer::Episode.repair_umlauts("Duell"))
77
+ assert_equal("für",
78
+ Serienrenamer::Episode.repair_umlauts("fuer"))
79
+ assert_equal("Änderung",
80
+ Serienrenamer::Episode.repair_umlauts("Aenderung"))
81
+ assert_equal("Zaubersprüche",
82
+ Serienrenamer::Episode.repair_umlauts("Zaubersprueche"))
83
+ assert_equal("Ungeheuerlich",
84
+ Serienrenamer::Episode.repair_umlauts("Ungeheuerlich"))
85
+ assert_equal("Frauen",
86
+ Serienrenamer::Episode.repair_umlauts("Frauen"))
87
+ assert_equal("Abführmittel",
88
+ Serienrenamer::Episode.repair_umlauts("Abfuehrmittel"))
89
+ assert_equal("tödlich",
90
+ Serienrenamer::Episode.repair_umlauts("toedlich"))
91
+ assert_equal("König",
92
+ Serienrenamer::Episode.repair_umlauts("Koenig"))
93
+ assert_equal("Öko",
94
+ Serienrenamer::Episode.repair_umlauts("Oeko"))
95
+ assert_equal("Männer",
96
+ Serienrenamer::Episode.repair_umlauts("Maenner"))
97
+ assert_equal("Draufgänger",
98
+ Serienrenamer::Episode.repair_umlauts("Draufgaenger"))
99
+ assert_equal("Unglücksvögel",
100
+ Serienrenamer::Episode.repair_umlauts("Ungluecksvoegel"))
101
+ assert_equal("Jäger",
102
+ Serienrenamer::Episode.repair_umlauts("Jaeger"))
103
+ assert_equal("Loyalität",
104
+ Serienrenamer::Episode.repair_umlauts("Loyalitaet"))
105
+ # both forms not existing
106
+ assert_equal("Moeback",
107
+ Serienrenamer::Episode.repair_umlauts("Moeback"))
97
108
  end
98
109
 
99
110
  def test_episode_information_extraction_from_file
100
111
 
101
112
  assert_raise(ArgumentError) { Serienrenamer::Episode.new('video.flv')}
102
113
 
103
- epi = Serienrenamer::Episode.new(@@valid_filenames["chuckfull"])
114
+ epi = Serienrenamer::Episode.new(@@files["chuckfull"])
104
115
  assert_equal('Chuck',epi.series)
105
116
  assert_equal(1, epi.season)
106
117
  assert_equal(1, epi.episode)
107
118
  assert_equal("Dies ist ein Test", epi.episodename)
108
119
  assert_equal("S01E01 - Dies ist ein Test.avi", epi.to_s)
109
120
 
110
- flpo = Serienrenamer::Episode.new(@@valid_filenames["flpo"])
121
+ flpo = Serienrenamer::Episode.new(@@files["flpo"])
111
122
  assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
112
123
 
113
- csiny = Serienrenamer::Episode.new(@@valid_filenames["csiny"])
124
+ csiny = Serienrenamer::Episode.new(@@files["csiny"])
114
125
  csiny.episodename_needed=false
115
126
  assert_equal("S07E20.avi", csiny.to_s)
116
127
 
117
- legaltrash = Serienrenamer::Episode.new(@@valid_filenames["legaltrash"])
128
+ legaltrash = Serienrenamer::Episode.new(@@files["legaltrash"])
118
129
  assert_equal("S04E04 - Die German Erinnerungen.avi", legaltrash.to_s)
119
130
 
120
- royal = Serienrenamer::Episode.new(@@valid_filenames["royal"])
131
+ royal = Serienrenamer::Episode.new(@@files["royal"])
121
132
  assert_equal("S02E10 - Beziehungsbeschwerden.avi", royal.to_s)
122
133
  end
123
134
 
124
135
  def test_episode_information_extraction_from_directory
125
136
 
126
- chuck = Serienrenamer::Episode.new(@@valid_directories["chuck"])
137
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
127
138
  assert_equal("S01E01 - Testepisode.avi", chuck.to_s)
128
139
 
129
- chuck1 = Serienrenamer::Episode.new(@@valid_directories["chuck1"])
140
+ chuck1 = Serienrenamer::Episode.new(@@directories["chuck1"])
130
141
  assert_equal("S01E01 - First Episode.avi", chuck1.to_s)
131
142
 
132
- ncis = Serienrenamer::Episode.new(@@valid_directories["ncis"])
143
+ ncis = Serienrenamer::Episode.new(@@directories["ncis"])
133
144
  assert_equal("S09E05 - Im sicheren Hafen.avi", ncis.to_s)
134
145
 
135
- chuck2 = Serienrenamer::Episode.new(@@valid_directories["chuck2"])
146
+ chuck2 = Serienrenamer::Episode.new(@@directories["chuck2"])
136
147
  chuck2.episodename_needed=false
137
148
  assert_equal("S02E12.avi", chuck2.to_s)
138
149
  end
139
150
 
140
151
  def test_adding_episodename_afterwards
141
152
 
142
- csiny = Serienrenamer::Episode.new(@@valid_filenames["csiny"])
153
+ csiny = Serienrenamer::Episode.new(@@files["csiny"])
143
154
  csiny.add_episode_information('Dies ist nachträglich eingefügt', false)
144
155
  assert_equal("S07E20 - Dies ist nachträglich eingefügt.avi", csiny.to_s)
145
156
 
146
- chuck = Serienrenamer::Episode.new(@@valid_directories["chuck"])
147
- chuck.add_episode_information('Chuck.S01E01.First.Episode.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD', true)
157
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
158
+ chuck.add_episode_information(
159
+ 'Chuck.S01E01.First.Episode.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD',
160
+ true)
148
161
  assert_equal("S01E01 - First Episode.avi", chuck.to_s)
149
162
  end
150
163
 
151
164
  def test_videofile_determination
152
- @@valid_filenames.each { |n,f|
165
+ @@files.each { |n,f|
153
166
  assert_not_nil(Serienrenamer::Episode.determine_video_file(f))
154
167
  }
155
168
 
156
- @@valid_directories.each { |n,d|
169
+ @@directories.each { |n,d|
157
170
  assert_not_nil(Serienrenamer::Episode.determine_video_file(d))
158
171
  }
159
172
  end
160
173
 
161
174
  def test_episode_rename_file
162
- epi = Serienrenamer::Episode.new(@@valid_filenames["chuckfull"])
163
- epi.rename('test/testfiles/')
175
+ epi = Serienrenamer::Episode.new(@@files["chuckfull"])
176
+ epi.rename
164
177
  assert_equal(true, epi.success)
165
178
  end
166
179
 
167
180
  def test_episode_rename_from_directory
168
- @@valid_directories.each do |n,d|
181
+ @@directories.each do |n,d|
169
182
  epi = Serienrenamer::Episode.new(d)
170
- epi.rename('test/testfiles/')
183
+ epi.rename
171
184
  assert_equal(true, epi.success)
172
185
  end
173
186
  end
@@ -176,13 +189,26 @@ class TestEpisode < Test::Unit::TestCase
176
189
  d = @@invalid_directories["tbbt"]
177
190
 
178
191
  filenametxt = File.new(File.join(d, "filename.txt"), "w")
179
- filenametxt.write("The.Big.Bang.Theory.S05E16.Sheldon.Revival.HDTV.XviD-LOL")
192
+ filenametxt.write(
193
+ "The.Big.Bang.Theory.S05E16.Sheldon.Revival.HDTV.XviD-LOL")
180
194
  filenametxt.close
181
195
 
182
196
  tbbt = Serienrenamer::Episode.new(d)
183
197
  assert_equal("S05E16 - Sheldon Revival.avi", tbbt.to_s)
184
198
 
185
- tbbt.rename('test/testfiles/')
199
+ tbbt.rename
186
200
  assert_equal(true, tbbt.success)
187
201
  end
202
+
203
+ def test_generate_episode_hash
204
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
205
+
206
+ videofile = File.new(chuck.episodepath, "w")
207
+ videofile.write("Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP")
208
+ videofile.close
209
+
210
+ assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
211
+ chuck.rename
212
+ assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
213
+ end
188
214
  end
data/test/test_hash.rb ADDED
@@ -0,0 +1,54 @@
1
+ # encoding: UTF-8
2
+ require File.dirname(__FILE__) + '/test_helper.rb'
3
+ require 'yaml'
4
+
5
+ # test class for the merge_with_serialized option of the Hash class
6
+ # which is added to the class of the standard library
7
+ class TestHash < Test::Unit::TestCase
8
+
9
+ @@TEST_DATA = {
10
+ :first => "first parameter",
11
+ :second => "second parameter",
12
+ :third => "third parameter"
13
+ }
14
+
15
+ @@TEST_CONFIG_FILE =
16
+ File.join(TestHelper::TESTFILE_DIRECTORY, "config.yml")
17
+ @@TEST_EMPTY_CONFIG_FILE =
18
+ File.join(TestHelper::TESTFILE_DIRECTORY, "empty.yml")
19
+ @@TEST_INVALID_CONFIG_FILE =
20
+ File.join(TestHelper::TESTFILE_DIRECTORY, "invalid.yml")
21
+ @@TEST_NOT_EXISTING =
22
+ File.join(TestHelper::TESTFILE_DIRECTORY, "not_exisiting.yml")
23
+
24
+ def setup
25
+ TestHelper.create_test_files([])
26
+ @modified = @@TEST_DATA.merge({:third => "modified third parameter"})
27
+
28
+ File.open(@@TEST_CONFIG_FILE, 'w') {|f| f.write(@modified.to_yaml) }
29
+ File.open(@@TEST_EMPTY_CONFIG_FILE, 'w') {|f| f.write(Hash.new.to_yaml) }
30
+ File.open(@@TEST_EMPTY_CONFIG_FILE, 'w') {|f| f.write("invalid") }
31
+
32
+ end
33
+
34
+ def teardown
35
+ TestHelper.clean
36
+ end
37
+
38
+ def test_merge_valid_yaml_file
39
+ merged = @@TEST_DATA.merge_with_serialized(@@TEST_CONFIG_FILE)
40
+ assert_equal("modified third parameter", merged[:third])
41
+ end
42
+
43
+ def test_merge_invalid_empty_and_not_exisiting_yaml_file
44
+ merged = @@TEST_DATA.merge_with_serialized(@@TEST_EMPTY_CONFIG_FILE)
45
+ assert_equal("third parameter", merged[:third])
46
+
47
+ merged = @@TEST_DATA.merge_with_serialized(@@TEST_INVALID_CONFIG_FILE)
48
+ assert_equal("third parameter", merged[:third])
49
+
50
+ merged = @@TEST_DATA.merge_with_serialized(@@TEST_NOT_EXISTING)
51
+ assert_equal("third parameter", merged[:third])
52
+ end
53
+
54
+ end
data/test/test_helper.rb CHANGED
@@ -2,3 +2,60 @@ require 'stringio'
2
2
  require 'test/unit'
3
3
  require File.dirname(__FILE__) + '/../lib/serienrenamer'
4
4
  require File.dirname(__FILE__) + '/../lib/plugin'
5
+
6
+ class TestHelper
7
+
8
+ TESTFILE_DIRECTORY = File.join(File.dirname(__FILE__), 'testfiles')
9
+
10
+ class << self
11
+
12
+ # create the supplied Files in the testfiles directory
13
+ def create_test_files(files)
14
+ _create_testfile_directory
15
+
16
+ files.each do |f|
17
+ FileUtils.touch File.join(TESTFILE_DIRECTORY, f)
18
+ end
19
+ end
20
+
21
+ # create supplied directories with an sample video file
22
+ def create_test_dirs(directories)
23
+ _create_testfile_directory
24
+
25
+ directories.each do |d|
26
+ dir = File.join(TESTFILE_DIRECTORY, d)
27
+
28
+ FileUtils.mkdir(dir) unless File.directory?(dir)
29
+ FileUtils.touch(File.join(dir, 'episode.avi'))
30
+ end
31
+ end
32
+
33
+ # write file with episode Text
34
+ def write_episode_textfile(dir, title, filename="filename.txt")
35
+ dirpath = File.join(TESTFILE_DIRECTORY, dir)
36
+
37
+ create_test_dirs([ dir ]) unless File.directory?(dirpath)
38
+
39
+ filenametxt = File.new(File.join(dirpath, "filename.txt"), "w")
40
+ filenametxt.write(title)
41
+ filenametxt.close
42
+ end
43
+
44
+ # change the working directory to TESTFILE_DIRECTORY
45
+ def cwd
46
+ Dir.chdir(TESTFILE_DIRECTORY)
47
+ end
48
+
49
+ # remove testfile directory
50
+ def clean
51
+ if File.directory?(TESTFILE_DIRECTORY)
52
+ system("rm -rf #{TESTFILE_DIRECTORY}")
53
+ end
54
+ end
55
+
56
+ def _create_testfile_directory
57
+ FileUtils.mkdir(TESTFILE_DIRECTORY) unless
58
+ File.directory?(TESTFILE_DIRECTORY)
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+ require File.dirname(__FILE__) + '/test_helper.rb'
3
+ require 'fileutils'
4
+
5
+ class TestInformationStore < Test::Unit::TestCase
6
+
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
+ TestHelper.create_test_files(@@files.values)
16
+ TestHelper.cwd
17
+
18
+ @episodes = Hash.new
19
+ storage = Serienrenamer::InformationStore.new("storage.yml")
20
+
21
+ @@files.each do |key, value|
22
+ filenametxt = File.new(value, "w")
23
+ filenametxt.write(value)
24
+ filenametxt.close
25
+
26
+ episode = Serienrenamer::Episode.new(value)
27
+ episode.rename
28
+ @episodes[key] = episode
29
+ storage.store(episode)
30
+ end
31
+ storage.write
32
+
33
+ end
34
+
35
+ def teardown
36
+ TestHelper.clean
37
+ end
38
+
39
+ def test_information_storage
40
+
41
+ storage = Serienrenamer::InformationStore.new("storage.yml")
42
+
43
+ @episodes.each do |key, episode|
44
+ assert_equal(storage.episode_hash[episode.md5sum], episode.series)
45
+ end
46
+ end
47
+
48
+ end
@@ -2,30 +2,27 @@
2
2
  require File.dirname(__FILE__) + '/test_helper.rb'
3
3
 
4
4
  class TestPluginSerienjunkiesDe < Test::Unit::TestCase
5
- @@valid_filenames = {
6
- 'flpo' => 'test/testfiles/Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
7
- 'dani' => 'test/testfiles/Dr.Dani.Santino.S01E04.German.Dubbed.WEB-DL.XViD.avi',
8
- 'two' => 'test/testfiles/Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
9
- 'simp' => 'test/testfiles/Die.Simpsons.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
10
- 'sea' => 'test/testfiles/tcpa-seapatrol_s05e11.avi',
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
11
  }
12
12
 
13
- @@valid_directories = {
14
- 'chuck' => 'test/testfiles/Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
15
- 'chuck2' => 'test/testfiles/Chuck.S02E10.German.Dubbed.BLURAYRiP.WEB-DL',
13
+ @@directories = {
14
+ 'chuck' => 'Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
15
+ 'chuck2' => 'Chuck.S02E10.German.Dubbed.BLURAYRiP.WEB-DL',
16
16
  }
17
17
 
18
18
  def setup
19
- system('rm -r test/testfiles/*')
20
-
21
- @@valid_filenames.each { |n,f|
22
- FileUtils.touch f unless File.file?(f)
23
- }
19
+ TestHelper.create_test_files(@@files.values)
20
+ TestHelper.create_test_dirs(@@directories.values)
21
+ TestHelper.cwd
22
+ end
24
23
 
25
- @@valid_directories.each { |n,d|
26
- FileUtils.mkdir(d)
27
- FileUtils.touch(File.join(d, 'episode.avi'))
28
- }
24
+ def teardown
25
+ TestHelper.clean
29
26
  end
30
27
 
31
28
  def test_seriespage_url_search
@@ -50,15 +47,18 @@ class TestPluginSerienjunkiesDe < Test::Unit::TestCase
50
47
 
51
48
  plugin = Plugin::SerienjunkiesDe
52
49
 
53
- seasons = plugin.parse_seriespage("http://www.serienjunkies.de/royal-pains/")
50
+ seasons = plugin.parse_seriespage(
51
+ "http://www.serienjunkies.de/royal-pains/")
54
52
  assert_match(/Auch.Reiche.sind.nur.Menschen/, seasons['S01E01'])
55
53
  assert_match(/Krank.vor.Liebe/, seasons['S02E02'])
56
54
 
57
- seasons = plugin.parse_seriespage("http://www.serienjunkies.de/flashpoint/")
55
+ seasons = plugin.parse_seriespage(
56
+ "http://www.serienjunkies.de/flashpoint/")
58
57
  assert_match(/Zu.viele.Verlierer/, seasons['S02E02'])
59
58
  assert_match(/Der.Aufstand/, seasons['S02E16'])
60
59
 
61
- seasons = plugin.parse_seriespage("http://www.serienjunkies.de/necessary-roughness/")
60
+ seasons = plugin.parse_seriespage(
61
+ "http://www.serienjunkies.de/necessary-roughness/")
62
62
  assert_match(/Touchdown/, seasons['S01E01'])
63
63
  assert_match(/Extremsport/, seasons['S01E06'])
64
64
 
@@ -71,22 +71,22 @@ class TestPluginSerienjunkiesDe < Test::Unit::TestCase
71
71
 
72
72
  plugin = Plugin::SerienjunkiesDe
73
73
 
74
- flpo = Serienrenamer::Episode.new(@@valid_filenames['flpo'])
74
+ flpo = Serienrenamer::Episode.new(@@files['flpo'])
75
75
  data = plugin.generate_episode_information(flpo)[0]
76
76
  flpo.add_episode_information(data, true) if data
77
77
  assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
78
78
 
79
- two = Serienrenamer::Episode.new(@@valid_filenames['two'])
79
+ two = Serienrenamer::Episode.new(@@files['two'])
80
80
  data = plugin.generate_episode_information(two)[0]
81
81
  two.add_episode_information(data, true) if data
82
82
  assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
83
83
 
84
- chuck = Serienrenamer::Episode.new(@@valid_directories['chuck'])
84
+ chuck = Serienrenamer::Episode.new(@@directories['chuck'])
85
85
  data = plugin.generate_episode_information(chuck)[0]
86
86
  chuck.add_episode_information(data, true) if data
87
87
  assert_equal("S01E01 - Pilot.avi", chuck.to_s)
88
88
 
89
- chuck2 = Serienrenamer::Episode.new(@@valid_directories['chuck2'])
89
+ chuck2 = Serienrenamer::Episode.new(@@directories['chuck2'])
90
90
  data = plugin.generate_episode_information(chuck2)[0]
91
91
  chuck2.add_episode_information(data, true) if data
92
92
  assert_equal("S02E10 - Chuck gegen zehn Millionen.avi", chuck2.to_s)
@@ -2,85 +2,85 @@
2
2
  require File.dirname(__FILE__) + '/test_helper.rb'
3
3
 
4
4
  class TestPluginSerienjunkiesFeed < Test::Unit::TestCase
5
- @@valid_filenames = {
6
- 'chuck' => 'test/testfiles/chuck.312.hdtv-lol.avi',
7
- 'flpo' => 'test/testfiles/Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
8
- 'csiny' => 'test/testfiles/sof-csi.ny.s07e21.avi',
9
- 'simps' => 'test/testfiles/simpsons.s22e16.avi',
10
- 'biglove'=> 'test/testfiles/idtv-big.love.s05e06.avi',
11
- 'crmi' => 'test/testfiles/crmi-s06e22.avi',
12
- 'two' => 'test/testfiles/Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
13
- 'sea' => 'test/testfiles/tcpa-seapatrol_s05e11.avi',
14
- 'shlock' => 'test/testfiles/Sherlock.s02e01.avi',
15
- 'unit' => 'test/testfiles/The.Unit.s01e17.avi',
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
16
  }
17
17
 
18
- @@valid_directories = {
19
- 'chuck' => 'test/testfiles/Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
18
+ @@directories = {
19
+ 'chuck' => 'Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
20
20
  }
21
21
 
22
22
  def setup
23
- system('rm -r test/testfiles/*')
24
-
25
- @@valid_filenames.each { |n,f|
26
- FileUtils.touch f unless File.file?(f)
27
- }
23
+ unless defined? @feed
24
+ @feed = Plugin::SerienjunkiesOrgFeed
25
+ @feed.feed_url = File.join( File.dirname(__FILE__),
26
+ 'serienjunkies_feed_sample.xml')
27
+ end
28
+
29
+ TestHelper.create_test_files(@@files.values)
30
+ TestHelper.create_test_dirs(@@directories.values)
31
+ TestHelper.cwd
32
+ end
28
33
 
29
- @@valid_directories.each { |n,d|
30
- FileUtils.mkdir(d)
31
- FileUtils.touch(File.join(d, 'episode.avi'))
32
- }
34
+ def teardown
35
+ TestHelper.clean
33
36
  end
34
37
 
35
38
  # improve this so that the Plugin uses a local xml file
36
39
  def test_information_extraction
37
40
 
38
- feed = Plugin::SerienjunkiesOrgFeed
39
- feed.feed_url = File.join( File.dirname(__FILE__), 'serienjunkies_feed_sample.xml')
40
-
41
- simps = Serienrenamer::Episode.new(@@valid_filenames['simps'])
42
- data = feed.generate_episode_information(simps)[0]
41
+ simps = Serienrenamer::Episode.new(@@files['simps'])
42
+ data = @feed.generate_episode_information(simps)[0]
43
43
  simps.add_episode_information(data, true)
44
44
  assert_equal("S22E16 - Ein Sommernachtstrip.avi", simps.to_s)
45
45
 
46
- flpo = Serienrenamer::Episode.new(@@valid_filenames['flpo'])
47
- data = feed.generate_episode_information(flpo)[0]
46
+ flpo = Serienrenamer::Episode.new(@@files['flpo'])
47
+ data = @feed.generate_episode_information(flpo)[0]
48
48
  flpo.add_episode_information(data, true)
49
49
  assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
50
50
 
51
- big = Serienrenamer::Episode.new(@@valid_filenames['biglove'])
52
- data = feed.generate_episode_information(big)[0]
51
+ big = Serienrenamer::Episode.new(@@files['biglove'])
52
+ data = @feed.generate_episode_information(big)[0]
53
53
  big.add_episode_information(data, true)
54
54
  assert_equal("S05E06 - Scheidung.avi", big.to_s)
55
55
 
56
- crmi = Serienrenamer::Episode.new(@@valid_filenames['crmi'])
57
- data = feed.generate_episode_information(crmi)[0]
56
+ crmi = Serienrenamer::Episode.new(@@files['crmi'])
57
+ data = @feed.generate_episode_information(crmi)[0]
58
58
  crmi.add_episode_information(data, true)
59
59
  assert_equal("S06E22 - Die Dunkelkammer Mörder.avi", crmi.to_s)
60
60
 
61
- two = Serienrenamer::Episode.new(@@valid_filenames['two'])
62
- data = feed.generate_episode_information(two)[0]
61
+ two = Serienrenamer::Episode.new(@@files['two'])
62
+ data = @feed.generate_episode_information(two)[0]
63
63
  two.add_episode_information(data, true)
64
64
  assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
65
65
 
66
- sea = Serienrenamer::Episode.new(@@valid_filenames['sea'])
67
- data = feed.generate_episode_information(sea)[0]
66
+ sea = Serienrenamer::Episode.new(@@files['sea'])
67
+ data = @feed.generate_episode_information(sea)[0]
68
68
  sea.add_episode_information(data, true)
69
69
  assert_equal("S05E11 - Der Morgen danach.avi", sea.to_s)
70
70
 
71
- csiny = Serienrenamer::Episode.new(@@valid_filenames['csiny'])
72
- data = feed.generate_episode_information(csiny)[0]
71
+ csiny = Serienrenamer::Episode.new(@@files['csiny'])
72
+ data = @feed.generate_episode_information(csiny)[0]
73
73
  csiny.add_episode_information(data, true)
74
74
  assert_equal("S07E21 - Kugelhagel.avi", csiny.to_s)
75
75
 
76
76
  # the following episodes are not exisiting in the feed
77
77
  # so it should returns nil
78
- sherlock = Serienrenamer::Episode.new(@@valid_filenames['shlock'])
79
- data = feed.generate_episode_information(sherlock)[0]
78
+ sherlock = Serienrenamer::Episode.new(@@files['shlock'])
79
+ data = @feed.generate_episode_information(sherlock)[0]
80
80
  assert_nil(data)
81
81
 
82
- theunit = Serienrenamer::Episode.new(@@valid_filenames['unit'])
83
- data = feed.generate_episode_information(theunit)[0]
82
+ theunit = Serienrenamer::Episode.new(@@files['unit'])
83
+ data = @feed.generate_episode_information(theunit)[0]
84
84
  assert_nil(data)
85
85
  end
86
86
  end
@@ -7,31 +7,31 @@ require File.dirname(__FILE__) + '/test_helper.rb'
7
7
  # information
8
8
  #
9
9
  class TestPluginTextfile < Test::Unit::TestCase
10
- @@valid_directories = {
11
- 'hmym' => 'test/testfiles/HMMG.705',
10
+ @@directories = {
11
+ 'hmym' => 'HMMG.705',
12
12
  }
13
13
 
14
14
  def setup
15
- system('rm -r test/testfiles/*')
16
-
17
- d = @@valid_directories["hmym"]
18
- FileUtils.mkdir(d)
19
- FileUtils.touch(File.join(d, 'episode.avi'))
15
+ TestHelper.write_episode_textfile(
16
+ @@directories["hmym"],
17
+ "How.I.Met.Your.Mother.S07E05.Die.Exkursion.German.Dubbed.HDTV.XviD-ITG"
18
+ )
19
+ TestHelper.cwd
20
+ end
20
21
 
21
- filenametxt = File.new(File.join(d, "filename.txt"), "w")
22
- filenametxt.write("How.I.Met.Your.Mother.S07E05.Die.Exkursion.German.Dubbed.HDTV.XviD-ITG")
23
- filenametxt.close
22
+ def teardown
23
+ TestHelper.clean
24
24
  end
25
25
 
26
26
  def test_information_extraction
27
- how = Serienrenamer::Episode.new(@@valid_directories['hmym'])
27
+ how = Serienrenamer::Episode.new(@@directories['hmym'])
28
28
  data = Plugin::Textfile.generate_episode_information(how)[0]
29
29
  how.add_episode_information(data, true)
30
30
  assert_equal("S07E05 - Die Exkursion.avi", how.to_s)
31
31
  end
32
32
 
33
33
  def test_information_extraction_with_directory_parameter
34
- how = @@valid_directories['hmym']
34
+ how = @@directories['hmym']
35
35
  data = Plugin::Textfile.generate_episode_information(how)[0]
36
36
  assert_not_nil(data)
37
37
  end
@@ -3,30 +3,27 @@ require File.dirname(__FILE__) + '/test_helper.rb'
3
3
  require 'media_wiki'
4
4
 
5
5
  class TestPluginWikipedia < Test::Unit::TestCase
6
- @@valid_filenames = {
7
- 'flpo' => 'test/testfiles/Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
8
- 'dani' => 'test/testfiles/Dr.Dani.Santino.S01E04.German.Dubbed.WEB-DL.XViD.avi',
9
- 'two' => 'test/testfiles/Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
10
- 'simp' => 'test/testfiles/Die.Simpsons.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
11
- 'sea' => 'test/testfiles/tcpa-seapatrol_s05e11.avi',
6
+ @@files = {
7
+ 'flpo' => 'Flashpoint.S04E04.German.Dubbed.WEB-DL.XViD.avi',
8
+ 'dani' => 'Dr.Dani.Santino.S01E04.German.Dubbed.WEB-DL.XViD.avi',
9
+ 'two' => 'Two.and.a.half.Men.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
10
+ 'simp' => 'Die.Simpsons.S09E07.German.Dubbed.WS.WEB-DL.XviD-GDR.avi',
11
+ 'sea' => 'tcpa-seapatrol_s05e11.avi',
12
12
  }
13
13
 
14
- @@valid_directories = {
15
- 'chuck' => 'test/testfiles/Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
16
- 'chuck2' => 'test/testfiles/Chuck.S02E10.German.Dubbed.BLURAYRiP.WEB-DL',
14
+ @@directories = {
15
+ 'chuck' => 'Chuck.S01E01.German.Dubbed.BLURAYRiP.WEB-DL',
16
+ 'chuck2' => 'Chuck.S02E10.German.Dubbed.BLURAYRiP.WEB-DL',
17
17
  }
18
18
 
19
19
  def setup
20
- system('rm -r test/testfiles/*')
21
-
22
- @@valid_filenames.each { |n,f|
23
- FileUtils.touch f unless File.file?(f)
24
- }
20
+ TestHelper.create_test_files(@@files.values)
21
+ TestHelper.create_test_dirs(@@directories.values)
22
+ TestHelper.cwd
23
+ end
25
24
 
26
- @@valid_directories.each { |n,d|
27
- FileUtils.mkdir(d)
28
- FileUtils.touch(File.join(d, 'episode.avi'))
29
- }
25
+ def teardown
26
+ TestHelper.clean
30
27
  end
31
28
 
32
29
  def test_episode_list_page_data_extraction
@@ -120,37 +117,37 @@ class TestPluginWikipedia < Test::Unit::TestCase
120
117
 
121
118
  def test_episode_information_generation
122
119
 
123
- flpo = Serienrenamer::Episode.new(@@valid_filenames['flpo'])
120
+ flpo = Serienrenamer::Episode.new(@@files['flpo'])
124
121
  data = Plugin::Wikipedia.generate_episode_information(flpo)[0]
125
122
  flpo.add_episode_information(data, false) if data
126
123
  assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
127
124
 
128
- two = Serienrenamer::Episode.new(@@valid_filenames['two'])
125
+ two = Serienrenamer::Episode.new(@@files['two'])
129
126
  data = Plugin::Wikipedia.generate_episode_information(two)[0]
130
127
  two.add_episode_information(data, false) if data
131
128
  assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
132
129
 
133
- simp = Serienrenamer::Episode.new(@@valid_filenames['simp'])
130
+ simp = Serienrenamer::Episode.new(@@files['simp'])
134
131
  data = Plugin::Wikipedia.generate_episode_information(simp)[0]
135
132
  simp.add_episode_information(data, false) if data
136
133
  assert_equal("S09E07 - Hochzeit auf Indisch.avi", simp.to_s)
137
134
 
138
- chuck = Serienrenamer::Episode.new(@@valid_directories['chuck'])
135
+ chuck = Serienrenamer::Episode.new(@@directories['chuck'])
139
136
  data = Plugin::Wikipedia.generate_episode_information(chuck)[0]
140
137
  chuck.add_episode_information(data, false) if data
141
138
  assert_equal("S01E01 - Pilot.avi", chuck.to_s)
142
139
 
143
- chuck2 = Serienrenamer::Episode.new(@@valid_directories['chuck2'])
140
+ chuck2 = Serienrenamer::Episode.new(@@directories['chuck2'])
144
141
  data = Plugin::Wikipedia.generate_episode_information(chuck2)[0]
145
142
  chuck2.add_episode_information(data, false) if data
146
143
  assert_equal("S02E10 - Chuck gegen zehn Millionen.avi", chuck2.to_s)
147
144
 
148
- dani = Serienrenamer::Episode.new(@@valid_filenames['dani'])
145
+ dani = Serienrenamer::Episode.new(@@files['dani'])
149
146
  data = Plugin::Wikipedia.generate_episode_information(dani)[0]
150
147
  dani.add_episode_information(data, false) if data
151
148
  assert_equal("S01E04 - Gewohnheiten.avi", dani.to_s)
152
149
 
153
- sea = Serienrenamer::Episode.new(@@valid_filenames['sea'])
150
+ sea = Serienrenamer::Episode.new(@@files['sea'])
154
151
  data = Plugin::Wikipedia.generate_episode_information(sea)[0]
155
152
  sea.add_episode_information(data, false) if data
156
153
  assert_equal("S05E11 - Der Morgen danach.avi", sea.to_s)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serienrenamer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-12 00:00:00.000000000 Z
12
+ date: 2012-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: wlapi
16
- requirement: &21895860 !ruby/object:Gem::Requirement
16
+ requirement: &26451300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21895860
24
+ version_requirements: *26451300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mediawiki-gateway
27
- requirement: &21891740 !ruby/object:Gem::Requirement
27
+ requirement: &26450420 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.4
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21891740
35
+ version_requirements: *26450420
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mechanize
38
- requirement: &21905740 !ruby/object:Gem::Requirement
38
+ requirement: &26484760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.3'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21905740
46
+ version_requirements: *26484760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: highline
49
- requirement: &21903520 !ruby/object:Gem::Requirement
49
+ requirement: &26483520 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.11
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *21903520
57
+ version_requirements: *26483520
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &21900960 !ruby/object:Gem::Requirement
60
+ requirement: &26482500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '3.10'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *21900960
68
+ version_requirements: *26482500
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: newgem
71
- requirement: &21899300 !ruby/object:Gem::Requirement
71
+ requirement: &26481160 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.5.3
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *21899300
79
+ version_requirements: *26481160
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: hoe
82
- requirement: &21913580 !ruby/object:Gem::Requirement
82
+ requirement: &26479520 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '2.15'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *21913580
90
+ version_requirements: *26479520
91
91
  description: ! 'Ruby Script that brings your series into an appropriate format
92
92
 
93
93
  like "S01E01 - Episodename.avi"'
@@ -113,13 +113,16 @@ files:
113
113
  - lib/plugin/wikipedia.rb
114
114
  - lib/serienrenamer.rb
115
115
  - lib/serienrenamer/episode.rb
116
+ - lib/serienrenamer/information_store.rb
116
117
  - script/console
117
118
  - script/destroy
118
119
  - script/generate
119
120
  - serienrenamer.gemspec
120
121
  - test/serienjunkies_feed_sample.xml
121
122
  - test/test_episode.rb
123
+ - test/test_hash.rb
122
124
  - test/test_helper.rb
125
+ - test/test_information_store.rb
123
126
  - test/test_plugin_serienjunkies_de.rb
124
127
  - test/test_plugin_serienjunkies_feed.rb
125
128
  - test/test_plugin_textfile.rb
@@ -154,8 +157,10 @@ summary: Ruby Script that brings your series into an appropriate format like "S0
154
157
  - Episodename.avi"
155
158
  test_files:
156
159
  - test/test_plugin_serienjunkies_de.rb
160
+ - test/test_information_store.rb
157
161
  - test/test_plugin_wikipedia.rb
158
162
  - test/test_plugin_serienjunkies_feed.rb
159
163
  - test/test_plugin_textfile.rb
160
164
  - test/test_helper.rb
161
165
  - test/test_episode.rb
166
+ - test/test_hash.rb