serienrenamer 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -17,5 +17,6 @@ rdoc
17
17
  spec/reports
18
18
  test/tmp
19
19
  test/version_tmp
20
+ test/vcr_cassettes/
20
21
  tmp
21
22
 
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem "vcr"
4
+ gem "fakeweb"
5
+
3
6
  # Specify your gem's dependencies in testapp.gemspec
4
7
  gemspec
data/README.rdoc CHANGED
@@ -13,6 +13,7 @@ like "S01E01 - Episodename.avi"
13
13
  * clean these information and bring that into a recommended format
14
14
  * search for information in specific textfiles like "filename.txt"
15
15
  * query the seriejunkies.org-feed for episode information
16
+ * query the serienjunkies.org Page for series specific data
16
17
  * query the serienjunkies.de Page for series specific data
17
18
  * query wikipedia for episode information
18
19
  * repair broken german umlauts if the occur in the episode title
@@ -32,6 +33,13 @@ like "S01E01 - Episodename.avi"
32
33
 
33
34
  * sudo gem install serienrenamer
34
35
 
36
+ == Development:
37
+
38
+ If you want to improve "serienrenamer" than checkout this repository and run
39
+ 'bundle' to get the development dependencies (vcr, fakeweb) installed and than
40
+ run 'rake test' which could takes some time the at the first run. After that
41
+ it should be quick.
42
+
35
43
  == LICENSE:
36
44
 
37
45
  (General Public License)
@@ -0,0 +1,179 @@
1
+ #
2
+ # Class that extracts information about episodes
3
+ # from the serienjunkies.org-Page
4
+ #
5
+ require 'uri'
6
+ require 'mechanize'
7
+ require 'yaml'
8
+
9
+ module Plugin
10
+
11
+ class SerienjunkiesOrg < Serienrenamer::Pluginbase
12
+
13
+ def self.plugin_name; "SerienjunkiesOrg" end
14
+ def self.plugin_url; "http://serienjunkies.org" end
15
+ def self.usable; true end
16
+ def self.priority; 10 end
17
+
18
+ # Public: tries to search for an appropriate episodename
19
+ #
20
+ # if this is the first call to this method, it builds up
21
+ # a hash with all series and existing episodes, which can
22
+ # be used by all future method calls
23
+ #
24
+ # episode - Serienrenamer::Episode instance which holds the information
25
+ #
26
+ # Returns an array of possible episodenames
27
+ def self.generate_episode_information(episode)
28
+
29
+ raise ArgumentError, "Serienrenamer::Episode instance needed" unless
30
+ episode.is_a?(Serienrenamer::Episode)
31
+
32
+ unless defined? @cached_data
33
+ @cached_data = Hash.new
34
+ end
35
+
36
+ if ! @cached_data.has_key?(episode.series)
37
+
38
+ if episode.series.match(/\w+/)
39
+
40
+ # determine link to series
41
+ seriespage_link = self.find_link_to_series_page(episode.series)
42
+
43
+ if seriespage_link
44
+ seriesdata = self.parse_seriespage(seriespage_link)
45
+
46
+ @cached_data[episode.series] = seriesdata
47
+ end
48
+ end
49
+ end
50
+
51
+ matched_episodes = []
52
+
53
+ # tries to find an episodename in cached_data
54
+ # otherwise returns empty array
55
+ begin
56
+ series = @cached_data[episode.series]
57
+
58
+ identifier = "%d_%d" % [ episode.season, episode.episode ]
59
+ episodename = series[identifier]
60
+
61
+ if episodename.match(/\w+/)
62
+ matched_episodes.push(episodename)
63
+ end
64
+ rescue
65
+ end
66
+
67
+ return matched_episodes
68
+ end
69
+
70
+ # Public: tries to find a link to the seriespage
71
+ #
72
+ # seriesname - the series name for which the page is searched
73
+ #
74
+ # Returns the link or nil
75
+ def self.find_link_to_series_page(seriesname)
76
+ raise ArgumentError, "seriesname expected" unless seriesname.match(/\w+/)
77
+
78
+ self.build_agent unless defined? @agent
79
+
80
+ url = URI.join(plugin_url, "?cat=0&l=%s" % seriesname[0].downcase )
81
+
82
+ pattern = seriesname.gsub(/\s/, ".*")
83
+
84
+ @agent.get(url).search("div#sidebar > ul > li > a").each do |series|
85
+ if series.text.match(/#{pattern}/i)
86
+ return URI.join( plugin_url, series[:href]).to_s
87
+ end
88
+ end
89
+
90
+ nil
91
+ end
92
+
93
+ # Public: parses a series page and extracts the episode information
94
+ #
95
+ # page_url - the url to the seriespage
96
+ # german - if true it extracts only german data (Defaults to true)
97
+ #
98
+ # Returns a hash which contains the episode information or an empty
99
+ # hash if there aren't any episodes
100
+ def self.parse_seriespage(page_url, german=true, debug=false)
101
+
102
+ self.build_agent unless defined? @agent
103
+
104
+ series = {}
105
+ doc = @agent.get(page_url)
106
+
107
+ doc.search('div#sidebar > div#scb > div.bkname > a').each do |link|
108
+ if german
109
+ next unless link.content.match(/Staffel/i)
110
+ else
111
+ next unless link.content.match(/Season/i)
112
+ end
113
+
114
+ site = @agent.get(link[:href])
115
+ episodes = self.parse_season_subpage(site, german)
116
+
117
+ series.merge!(episodes)
118
+ end
119
+
120
+ puts series.to_yaml if debug
121
+
122
+ return series
123
+ end
124
+
125
+ # Public: extracts the episodes from one season
126
+ #
127
+ # page - Mechanize page object which holds the season
128
+ # german - extracts german or international episodes
129
+ #
130
+ # Returns a hash with all episodes (unique)
131
+ def self.parse_season_subpage(page, german=true)
132
+
133
+ episodes = {}
134
+
135
+ page.search('div.post > div.post-content strong:nth-child(1)').each do |e|
136
+
137
+ content = e.content
138
+ md = Serienrenamer::Episode.extract_episode_information(content)
139
+ next unless md
140
+
141
+ if german
142
+ next unless content.match(/German/i)
143
+ next if content.match(/Subbed/i)
144
+ else
145
+ next if content.match(/German/i)
146
+ end
147
+
148
+ episodename =
149
+ Serienrenamer::Episode.clean_episode_data(md[:episodename], true)
150
+ next unless episodename && episodename.match(/\w+/)
151
+
152
+ id = "%d_%d" % [ md[:season].to_i, md[:episode].to_i ]
153
+
154
+ next if episodes[id] && episodes[id].size > episodename.size
155
+
156
+ episodes[id] = episodename
157
+
158
+ end
159
+
160
+ return episodes
161
+ end
162
+
163
+ private
164
+
165
+ # Private: constructs a Mechanize instance and adds a fix that interprets
166
+ # every response as html
167
+ #
168
+ # Returns the agent
169
+ def self.build_agent
170
+ @agent = Mechanize.new do |a|
171
+ a.post_connect_hooks << lambda do |_,_,response,_|
172
+ if response.content_type.nil? || response.content_type.empty?
173
+ response.content_type = 'text/html'
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
179
+ end
data/lib/serienrenamer.rb CHANGED
@@ -3,7 +3,7 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
 
4
4
 
5
5
  module Serienrenamer
6
- VERSION = '0.0.8'
6
+ VERSION = '0.0.9'
7
7
 
8
8
  require 'serienrenamer/episode.rb'
9
9
  require 'serienrenamer/information_store.rb'
@@ -32,7 +32,7 @@ module Serienrenamer
32
32
  iNTERNAL CRoW MSE c0nFuSed UTOPiA scum EXPiRED BDRiP HDTV
33
33
  iTunesHD 720p x264 h264 CRiSP euHD WEBRiP ZZGtv ARCHiV DD20
34
34
  Prim3time Nfo Repack SiMPTY BLURAYRiP BluRay DELiCiOUS Synced
35
- UNDELiCiOUS fBi CiD iTunesHDRip RedSeven OiNK idTV DL DD51
35
+ UNDELiCiOUS fBi CiD iTunesHDRip RedSeven OiNK idTV DL DD51 AC3
36
36
  )
37
37
 
38
38
  # Constructor for the Episode-Class, which takes an episode as
data/test/test_episode.rb CHANGED
@@ -4,193 +4,208 @@ require 'fileutils'
4
4
 
5
5
  class TestEpisode < Test::Unit::TestCase
6
6
 
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',
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
+ }
18
+
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
+ }
25
+
26
+ @@invalid_directories = {
27
+ 'tbbt' => 'BBTV.16/',
28
+ }
29
+
30
+ def setup
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
36
+
37
+ def teardown
38
+ TestHelper.clean
39
+ end
40
+
41
+ def test_episode_name_detection
42
+
43
+ @@files.each { |name,file|
44
+ assert_equal(true,
45
+ Serienrenamer::Episode.contains_episode_information?(file))
46
+
47
+ assert_equal(false,
48
+ Serienrenamer::Episode.extract_episode_information(file).nil?)
17
49
  }
18
50
 
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
- }
51
+ @@directories.each { |name,dir|
52
+ assert_equal(true,
53
+ Serienrenamer::Episode.contains_episode_information?(dir))
25
54
 
26
- @@invalid_directories = {
27
- 'tbbt' => 'BBTV.16/',
55
+ assert_equal(false,
56
+ Serienrenamer::Episode.extract_episode_information(dir).nil?)
28
57
  }
29
58
 
30
- def setup
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
36
-
37
- def teardown
38
- TestHelper.clean
39
- end
40
-
41
- def test_episode_name_detection
42
-
43
- @@files.each { |name,file|
44
- assert_equal(true,
45
- Serienrenamer::Episode.contains_episode_information?(file))
46
-
47
- assert_equal(false,
48
- Serienrenamer::Episode.extract_episode_information(file).nil?)
49
- }
50
-
51
- @@directories.each { |name,dir|
52
- assert_equal(true,
53
- Serienrenamer::Episode.contains_episode_information?(dir))
54
-
55
- assert_equal(false,
56
- Serienrenamer::Episode.extract_episode_information(dir).nil?)
57
- }
59
+ assert_equal(false,
60
+ Serienrenamer::Episode.contains_episode_information?('video.flv'))
58
61
 
59
- assert_equal(false,
60
- Serienrenamer::Episode.contains_episode_information?('video.flv'))
62
+ assert_equal(true,
63
+ Serienrenamer::Episode.extract_episode_information('video.flv').nil?)
64
+ end
61
65
 
62
- assert_equal(true,
63
- Serienrenamer::Episode.extract_episode_information('video.flv').nil?)
66
+ def test_information_cleanup
67
+ VCR.use_cassette("episode_#{method_name}") do
68
+ assert_equal("Im sicheren Hafen",
69
+ Serienrenamer::Episode.clean_episode_data(
70
+ ".Im.sicheren.Hafen.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD",
71
+ true, true)
72
+ )
64
73
  end
65
-
66
- def test_information_cleanup
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
- )
72
- end
73
-
74
- def test_repairing_umlauts
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"))
74
+ end
75
+
76
+ def test_repairing_umlauts
77
+ VCR.use_cassette("episode_#{method_name}") do
78
+ assert_equal("Duell",
79
+ Serienrenamer::Episode.repair_umlauts("Duell"))
80
+ assert_equal("für",
81
+ Serienrenamer::Episode.repair_umlauts("fuer"))
82
+ assert_equal("Änderung",
83
+ Serienrenamer::Episode.repair_umlauts("Aenderung"))
84
+ assert_equal("Zaubersprüche",
85
+ Serienrenamer::Episode.repair_umlauts("Zaubersprueche"))
86
+ assert_equal("Ungeheuerlich",
87
+ Serienrenamer::Episode.repair_umlauts("Ungeheuerlich"))
88
+ assert_equal("Frauen",
89
+ Serienrenamer::Episode.repair_umlauts("Frauen"))
90
+ assert_equal("Abführmittel",
91
+ Serienrenamer::Episode.repair_umlauts("Abfuehrmittel"))
92
+ assert_equal("tödlich",
93
+ Serienrenamer::Episode.repair_umlauts("toedlich"))
94
+ assert_equal("König",
95
+ Serienrenamer::Episode.repair_umlauts("Koenig"))
96
+ assert_equal("Öko",
97
+ Serienrenamer::Episode.repair_umlauts("Oeko"))
98
+ assert_equal("Männer",
99
+ Serienrenamer::Episode.repair_umlauts("Maenner"))
100
+ assert_equal("Draufgänger",
101
+ Serienrenamer::Episode.repair_umlauts("Draufgaenger"))
102
+ assert_equal("Unglücksvögel",
103
+ Serienrenamer::Episode.repair_umlauts("Ungluecksvoegel"))
104
+ assert_equal("Jäger",
105
+ Serienrenamer::Episode.repair_umlauts("Jaeger"))
106
+ assert_equal("Loyalität",
107
+ Serienrenamer::Episode.repair_umlauts("Loyalitaet"))
108
+ # both forms not existing
109
+ assert_equal("Moeback",
110
+ Serienrenamer::Episode.repair_umlauts("Moeback"))
108
111
  end
112
+ end
109
113
 
110
- def test_episode_information_extraction_from_file
114
+ def test_episode_information_extraction_from_file
111
115
 
112
- assert_raise(ArgumentError) { Serienrenamer::Episode.new('video.flv')}
116
+ VCR.use_cassette("episode_#{method_name}") do
117
+ assert_raise(ArgumentError) { Serienrenamer::Episode.new('video.flv')}
113
118
 
114
- epi = Serienrenamer::Episode.new(@@files["chuckfull"])
115
- assert_equal('Chuck',epi.series)
116
- assert_equal(1, epi.season)
117
- assert_equal(1, epi.episode)
118
- assert_equal("Dies ist ein Test", epi.episodename)
119
- assert_equal("S01E01 - Dies ist ein Test.avi", epi.to_s)
119
+ epi = Serienrenamer::Episode.new(@@files["chuckfull"])
120
+ assert_equal('Chuck',epi.series)
121
+ assert_equal(1, epi.season)
122
+ assert_equal(1, epi.episode)
123
+ assert_equal("Dies ist ein Test", epi.episodename)
124
+ assert_equal("S01E01 - Dies ist ein Test.avi", epi.to_s)
120
125
 
121
- flpo = Serienrenamer::Episode.new(@@files["flpo"])
122
- assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
126
+ flpo = Serienrenamer::Episode.new(@@files["flpo"])
127
+ assert_equal("S04E04 - Getrübte Erinnerungen.avi", flpo.to_s)
123
128
 
124
- csiny = Serienrenamer::Episode.new(@@files["csiny"])
125
- csiny.episodename_needed=false
126
- assert_equal("S07E20.avi", csiny.to_s)
129
+ csiny = Serienrenamer::Episode.new(@@files["csiny"])
130
+ csiny.episodename_needed=false
131
+ assert_equal("S07E20.avi", csiny.to_s)
127
132
 
128
- legaltrash = Serienrenamer::Episode.new(@@files["legaltrash"])
129
- assert_equal("S04E04 - Die German Erinnerungen.avi", legaltrash.to_s)
133
+ legaltrash = Serienrenamer::Episode.new(@@files["legaltrash"])
134
+ assert_equal("S04E04 - Die German Erinnerungen.avi", legaltrash.to_s)
130
135
 
131
- royal = Serienrenamer::Episode.new(@@files["royal"])
132
- assert_equal("S02E10 - Beziehungsbeschwerden.avi", royal.to_s)
136
+ royal = Serienrenamer::Episode.new(@@files["royal"])
137
+ assert_equal("S02E10 - Beziehungsbeschwerden.avi", royal.to_s)
133
138
  end
139
+ end
134
140
 
135
- def test_episode_information_extraction_from_directory
141
+ def test_episode_information_extraction_from_directory
136
142
 
137
- chuck = Serienrenamer::Episode.new(@@directories["chuck"])
138
- assert_equal("S01E01 - Testepisode.avi", chuck.to_s)
143
+ VCR.use_cassette("episode_#{method_name}") do
144
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
145
+ assert_equal("S01E01 - Testepisode.avi", chuck.to_s)
139
146
 
140
- chuck1 = Serienrenamer::Episode.new(@@directories["chuck1"])
141
- assert_equal("S01E01 - First Episode.avi", chuck1.to_s)
147
+ chuck1 = Serienrenamer::Episode.new(@@directories["chuck1"])
148
+ assert_equal("S01E01 - First Episode.avi", chuck1.to_s)
142
149
 
143
- ncis = Serienrenamer::Episode.new(@@directories["ncis"])
144
- assert_equal("S09E05 - Im sicheren Hafen.avi", ncis.to_s)
150
+ ncis = Serienrenamer::Episode.new(@@directories["ncis"])
151
+ assert_equal("S09E05 - Im sicheren Hafen.avi", ncis.to_s)
145
152
 
146
- chuck2 = Serienrenamer::Episode.new(@@directories["chuck2"])
147
- chuck2.episodename_needed=false
148
- assert_equal("S02E12.avi", chuck2.to_s)
153
+ chuck2 = Serienrenamer::Episode.new(@@directories["chuck2"])
154
+ chuck2.episodename_needed=false
155
+ assert_equal("S02E12.avi", chuck2.to_s)
149
156
  end
157
+ end
150
158
 
151
- def test_adding_episodename_afterwards
159
+ def test_adding_episodename_afterwards
152
160
 
153
- csiny = Serienrenamer::Episode.new(@@files["csiny"])
154
- csiny.add_episode_information('Dies ist nachträglich eingefügt', false)
155
- assert_equal("S07E20 - Dies ist nachträglich eingefügt.avi", csiny.to_s)
161
+ VCR.use_cassette("episode_#{method_name}") do
162
+ csiny = Serienrenamer::Episode.new(@@files["csiny"])
163
+ csiny.add_episode_information('Dies ist nachträglich eingefügt', false)
164
+ assert_equal("S07E20 - Dies ist nachträglich eingefügt.avi", csiny.to_s)
156
165
 
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)
166
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
167
+ chuck.add_episode_information(
168
+ 'Chuck.S01E01.First.Episode.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD',
169
+ true)
161
170
  assert_equal("S01E01 - First Episode.avi", chuck.to_s)
162
171
  end
172
+ end
173
+
174
+ def test_videofile_determination
175
+ @@files.each { |n,f|
176
+ assert_not_nil(Serienrenamer::Episode.determine_video_file(f))
177
+ }
163
178
 
164
- def test_videofile_determination
165
- @@files.each { |n,f|
166
- assert_not_nil(Serienrenamer::Episode.determine_video_file(f))
167
- }
179
+ @@directories.each { |n,d|
180
+ assert_not_nil(Serienrenamer::Episode.determine_video_file(d))
181
+ }
182
+ end
168
183
 
169
- @@directories.each { |n,d|
170
- assert_not_nil(Serienrenamer::Episode.determine_video_file(d))
171
- }
184
+ def test_episode_rename_file
185
+ VCR.use_cassette("episode_#{method_name}") do
186
+ epi = Serienrenamer::Episode.new(@@files["chuckfull"])
187
+ epi.rename
188
+ assert_equal(true, epi.success)
172
189
  end
190
+ end
173
191
 
174
- def test_episode_rename_file
175
- epi = Serienrenamer::Episode.new(@@files["chuckfull"])
192
+ def test_episode_rename_from_directory
193
+ VCR.use_cassette("episode_#{method_name}") do
194
+ @@directories.each do |n,d|
195
+ epi = Serienrenamer::Episode.new(d)
176
196
  epi.rename
177
197
  assert_equal(true, epi.success)
198
+ end
178
199
  end
200
+ end
179
201
 
180
- def test_episode_rename_from_directory
181
- @@directories.each do |n,d|
182
- epi = Serienrenamer::Episode.new(d)
183
- epi.rename
184
- assert_equal(true, epi.success)
185
- end
186
- end
187
-
188
- def test_episode_where_dir_has_not_enough_info
189
- d = @@invalid_directories["tbbt"]
202
+ def test_episode_where_dir_has_not_enough_info
203
+ VCR.use_cassette("episode_#{method_name}") do
204
+ d = @@invalid_directories["tbbt"]
190
205
 
191
- filenametxt = File.new(File.join(d, "filename.txt"), "w")
192
- filenametxt.write(
193
- "The.Big.Bang.Theory.S05E16.Sheldon.Revival.HDTV.XviD-LOL")
206
+ filenametxt = File.new(File.join(d, "filename.txt"), "w")
207
+ filenametxt.write(
208
+ "The.Big.Bang.Theory.S05E16.Sheldon.Revival.HDTV.XviD-LOL")
194
209
  filenametxt.close
195
210
 
196
211
  tbbt = Serienrenamer::Episode.new(d)
@@ -199,20 +214,23 @@ class TestEpisode < Test::Unit::TestCase
199
214
  tbbt.rename
200
215
  assert_equal(true, tbbt.success)
201
216
  end
217
+ end
202
218
 
203
- def test_generate_episode_hash
204
- chuck = Serienrenamer::Episode.new(@@directories["chuck"])
219
+ def test_generate_episode_hash
220
+ VCR.use_cassette("episode_#{method_name}") do
221
+ chuck = Serienrenamer::Episode.new(@@directories["chuck"])
205
222
 
206
- videofile = File.new(chuck.episodepath, "w")
207
- videofile.write("Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP")
208
- videofile.close
223
+ videofile = File.new(chuck.episodepath, "w")
224
+ videofile.write("Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP")
225
+ videofile.close
209
226
 
210
- assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
211
- chuck.rename
212
- assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
227
+ assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
228
+ chuck.rename
229
+ assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
213
230
 
214
- # explicit bytecount
215
- assert_equal("78193bb6ffe829b49981b494ab243a82", chuck.md5sum(5))
216
- assert_equal("0f2788bb1324330898fffddcafd2b8e1", chuck.md5sum(12))
231
+ # explicit bytecount
232
+ assert_equal("78193bb6ffe829b49981b494ab243a82", chuck.md5sum(5))
233
+ assert_equal("0f2788bb1324330898fffddcafd2b8e1", chuck.md5sum(12))
217
234
  end
235
+ end
218
236
  end