serienrenamer 0.1.2 → 0.2.0
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/.travis.yml +2 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +57 -0
- data/README.rdoc +19 -23
- data/bin/serienrenamer +7 -1
- data/lib/serienrenamer/episode.rb +3 -59
- data/lib/serienrenamer/plugin.rb +1 -0
- data/lib/serienrenamer/plugin/umlauts.rb +70 -0
- data/lib/serienrenamer/version.rb +1 -1
- data/serienrenamer.gemspec +1 -3
- data/test/test_episode.rb +64 -118
- data/test/test_information_store.rb +16 -19
- data/test/test_plugin_serienjunkies_feed.rb +36 -38
- data/test/test_plugin_textfile.rb +11 -17
- data/test/test_plugin_umlauts.rb +40 -0
- metadata +18 -51
- data/lib/serienrenamer/plugin/serienjunkies_de.rb +0 -131
- data/lib/serienrenamer/plugin/serienjunkies_org.rb +0 -181
- data/lib/serienrenamer/plugin/wikipedia.rb +0 -448
- data/test/skipped_test_plugin_serienjunkies_org.rb +0 -84
- data/test/skipped_test_plugin_wikipedia.rb +0 -177
- data/test/test_plugin_serienjunkies_de.rb +0 -98
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8c2998eec46e3c7d62d5942cf5a233f67b5d72c
|
4
|
+
data.tar.gz: ecf65a918b00e68c6fef74ecc84dca474ad0c8d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb3c908ca725711d79f26d67d7c0a5be7de2f761ffab52a3c72bd1ea816f2ed98635e0bc4a4c0e781f7f1adcb9b6e30a21f42a61a6779463ad8d8c7897e8c519
|
7
|
+
data.tar.gz: 6351bc6d4cedd5a8d25e4263bdbc3135c4b8f9bf45ba0c0532da1d294180a37999315593050ea42c8cd013650dcec1ad07705f5291e4545438d0bb54189b7852
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
serienrenamer (0.2.0)
|
5
|
+
hashconfig (>= 0.0.1)
|
6
|
+
highline (>= 1.6.11)
|
7
|
+
wlapi (>= 0.8.5)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
akami (1.2.1)
|
13
|
+
gyoku (>= 0.4.0)
|
14
|
+
nokogiri
|
15
|
+
builder (3.2.2)
|
16
|
+
fakeweb (1.3.0)
|
17
|
+
gyoku (1.1.1)
|
18
|
+
builder (>= 2.1.2)
|
19
|
+
hash-deep-merge (0.1.1)
|
20
|
+
hashconfig (0.0.2)
|
21
|
+
hash-deep-merge
|
22
|
+
highline (1.6.21)
|
23
|
+
httpi (2.1.0)
|
24
|
+
rack
|
25
|
+
rubyntlm (~> 0.3.2)
|
26
|
+
mime-types (1.25.1)
|
27
|
+
mini_portile (0.5.2)
|
28
|
+
nokogiri (1.6.1)
|
29
|
+
mini_portile (~> 0.5.0)
|
30
|
+
nori (2.3.0)
|
31
|
+
rack (1.5.2)
|
32
|
+
rake (10.1.1)
|
33
|
+
rubyntlm (0.3.4)
|
34
|
+
savon (2.3.3)
|
35
|
+
akami (~> 1.2.0)
|
36
|
+
builder (>= 2.1.2)
|
37
|
+
gyoku (~> 1.1.0)
|
38
|
+
httpi (~> 2.1.0)
|
39
|
+
nokogiri (>= 1.4.0)
|
40
|
+
nori (~> 2.3.0)
|
41
|
+
wasabi (~> 3.2.2)
|
42
|
+
vcr (2.8.0)
|
43
|
+
wasabi (3.2.3)
|
44
|
+
httpi (~> 2.0)
|
45
|
+
mime-types (< 2.0.0)
|
46
|
+
nokogiri (>= 1.4.0)
|
47
|
+
wlapi (0.8.5)
|
48
|
+
savon (~> 2.1)
|
49
|
+
|
50
|
+
PLATFORMS
|
51
|
+
ruby
|
52
|
+
|
53
|
+
DEPENDENCIES
|
54
|
+
fakeweb
|
55
|
+
rake
|
56
|
+
serienrenamer!
|
57
|
+
vcr (~> 2.4)
|
data/README.rdoc
CHANGED
@@ -13,9 +13,6 @@ 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
|
17
|
-
* query the serienjunkies.de Page for series specific data
|
18
|
-
* query wikipedia for episode information
|
19
16
|
* contains a plugin that creates an episodename out of the episode identifier
|
20
17
|
* repair broken german umlauts if the occur in the episode title
|
21
18
|
* rename these files
|
@@ -23,11 +20,8 @@ like "S01E01 - Episodename.avi"
|
|
23
20
|
== REQUIREMENTS:
|
24
21
|
|
25
22
|
* ruby (>= 1.9)
|
26
|
-
* wlapi
|
27
|
-
* mediawiki_gateway
|
28
23
|
* highline
|
29
24
|
* nokogiri
|
30
|
-
* mechanize
|
31
25
|
* hashconfig
|
32
26
|
|
33
27
|
== INSTALL:
|
@@ -43,20 +37,22 @@ it should be quick.
|
|
43
37
|
|
44
38
|
== LICENSE:
|
45
39
|
|
46
|
-
(
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
the
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
40
|
+
Copyright (C) 2014 Philipp Böhm
|
41
|
+
|
42
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
43
|
+
a copy of this software and associated documentation files (the "Software"),
|
44
|
+
to deal in the Software without restriction, including without limitation
|
45
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
46
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
47
|
+
Software is furnished to do so, subject to the following conditions:
|
48
|
+
|
49
|
+
The above copyright notice and this permission notice shall be included
|
50
|
+
in all copies or substantial portions of the Software.
|
51
|
+
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
53
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
54
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
55
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
56
|
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
57
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
58
|
+
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/bin/serienrenamer
CHANGED
@@ -146,7 +146,7 @@ begin
|
|
146
146
|
# if episodename is empty than query plugins
|
147
147
|
if epi.episodename.match(/\w+/).nil? || options[:ignore_filenamedata]
|
148
148
|
|
149
|
-
registered_plugins.each do |plugin|
|
149
|
+
registered_plugins.select {|p| p.type == :information}.each do |plugin|
|
150
150
|
|
151
151
|
# configure cleanup
|
152
152
|
clean_data, extract_seriesname = false, false
|
@@ -177,6 +177,12 @@ begin
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
180
|
+
# filter episode name
|
181
|
+
registered_plugins.select {|p| p.type == :filter}.each do |plugin|
|
182
|
+
epi.episodename = plugin.filter(epi.episodename)
|
183
|
+
end
|
184
|
+
|
185
|
+
# rename episode when the user confirms
|
180
186
|
puts ">>> #{epi.to_s}"
|
181
187
|
|
182
188
|
if not config[:force_rename]
|
@@ -1,20 +1,14 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
require 'find'
|
3
3
|
require 'fileutils'
|
4
|
-
require 'wlapi'
|
5
4
|
require 'digest/md5'
|
6
5
|
|
7
|
-
# suppress debug messages from wlapi which uses Savon
|
8
|
-
HTTPI.log = false
|
9
|
-
|
10
|
-
|
11
6
|
module Serienrenamer
|
12
|
-
|
13
7
|
class Episode
|
14
8
|
|
15
|
-
attr_reader :season, :episode,
|
9
|
+
attr_reader :season, :episode,
|
16
10
|
:extension, :episodepath, :success, :source_directory
|
17
|
-
attr_accessor :episodename_needed, :series
|
11
|
+
attr_accessor :episodename, :episodename_needed, :series
|
18
12
|
|
19
13
|
# patterns for suitable episodes
|
20
14
|
@@PATTERNS = [
|
@@ -196,10 +190,7 @@ module Serienrenamer
|
|
196
190
|
# :include_trashwords
|
197
191
|
# remove Words like German or Dubbed from
|
198
192
|
# the string (Trashwords)
|
199
|
-
|
200
|
-
# try to repair broken umlauts if they occur
|
201
|
-
#
|
202
|
-
def self.clean_episode_data(data, include_trashwords=false, repair_umlauts=false)
|
193
|
+
def self.clean_episode_data(data, include_trashwords=false, *args)
|
203
194
|
data.gsub!(/\./, " ")
|
204
195
|
data.gsub!(/\_/, " ")
|
205
196
|
data.gsub!(/\-/, " ")
|
@@ -217,8 +208,6 @@ module Serienrenamer
|
|
217
208
|
for word in data.split(/ /) do
|
218
209
|
next unless word.match(/\w+/)
|
219
210
|
|
220
|
-
word = repair_umlauts(word) if repair_umlauts
|
221
|
-
|
222
211
|
# if word is in TRASH_WORDS
|
223
212
|
if ! @@TRASH_WORDS.grep(/^#{word}$/i).empty?
|
224
213
|
purge_count += 1
|
@@ -239,51 +228,6 @@ module Serienrenamer
|
|
239
228
|
return data
|
240
229
|
end
|
241
230
|
|
242
|
-
# This method tries to repair some german umlauts so that
|
243
|
-
# the following occurs
|
244
|
-
#
|
245
|
-
# ae => ä ; ue => ü ; oe => ö ; Ae => Ä ; Ue => Ü ; Oe => Ö
|
246
|
-
#
|
247
|
-
# This method uses a webservice at:
|
248
|
-
# http://wortschatz.uni-leipzig.de/
|
249
|
-
# which produces statistics about the german language and
|
250
|
-
# e.g. frequency of words occuring in the german language
|
251
|
-
#
|
252
|
-
# this method convert all broken umlauts in the word and compares
|
253
|
-
# the frequency of both version and uses the version which is more
|
254
|
-
# common
|
255
|
-
#
|
256
|
-
# returns an repaired version of the word if necessary
|
257
|
-
def self.repair_umlauts(word)
|
258
|
-
|
259
|
-
if contains_eventual_broken_umlauts?(word)
|
260
|
-
|
261
|
-
repaired = word.gsub(/ae/, 'ä').gsub(/ue/, 'ü').gsub(/oe/, 'ö')
|
262
|
-
repaired.gsub!(/^Ae/, 'Ä')
|
263
|
-
repaired.gsub!(/^Ue/, 'Ü')
|
264
|
-
repaired.gsub!(/^Oe/, 'Ö')
|
265
|
-
|
266
|
-
ws = WLAPI::API.new
|
267
|
-
|
268
|
-
res_broken = ws.frequencies(word)
|
269
|
-
freq_broken = res_broken.nil? ? -1 : res_broken[0].to_i
|
270
|
-
|
271
|
-
res_repaired = ws.frequencies(repaired)
|
272
|
-
freq_repaired = res_repaired.nil? ? -1 : res_repaired[0].to_i
|
273
|
-
|
274
|
-
if freq_repaired > freq_broken
|
275
|
-
return repaired
|
276
|
-
end
|
277
|
-
end
|
278
|
-
return word
|
279
|
-
end
|
280
|
-
|
281
|
-
# checks for eventual broken umlauts
|
282
|
-
#
|
283
|
-
# returns true if broken umlaut if included
|
284
|
-
def self.contains_eventual_broken_umlauts?(string)
|
285
|
-
! string.match(/ae|ue|oe|Ae|Ue|Oe/).nil?
|
286
|
-
end
|
287
231
|
|
288
232
|
# tries to match the given string against
|
289
233
|
# all supported regex-patterns and returns true if a
|
data/lib/serienrenamer/plugin.rb
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'wlapi'
|
3
|
+
|
4
|
+
module Serienrenamer
|
5
|
+
module Plugin
|
6
|
+
|
7
|
+
class Umlauts < Serienrenamer::Pluginbase
|
8
|
+
|
9
|
+
def self.plugin_name; "Umlauts" end
|
10
|
+
def self.usable; true end
|
11
|
+
def self.priority; 150 end
|
12
|
+
def self.type; :filter end
|
13
|
+
|
14
|
+
# This method is called from outside with the full episodename as
|
15
|
+
# parameter and it should return the manipulated episodename
|
16
|
+
def self.filter(episode_name)
|
17
|
+
episode_name.split.map {|e| repair_umlauts(e) }.join(" ")
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
# This method tries to repair some german umlauts so that
|
22
|
+
# the following occurs
|
23
|
+
#
|
24
|
+
# ae => ä ; ue => ü ; oe => ö ; Ae => Ä ; Ue => Ü ; Oe => Ö
|
25
|
+
#
|
26
|
+
# This method uses a webservice at:
|
27
|
+
# http://wortschatz.uni-leipzig.de/
|
28
|
+
# which produces statistics about the german language and
|
29
|
+
# e.g. frequency of words occuring in the german language
|
30
|
+
#
|
31
|
+
# this method convert all broken umlauts in the word and compares
|
32
|
+
# the frequency of both version and uses the version which is more
|
33
|
+
# common
|
34
|
+
#
|
35
|
+
# returns a repaired version of the word if necessary
|
36
|
+
def self.repair_umlauts(word)
|
37
|
+
|
38
|
+
if contains_eventual_broken_umlauts?(word)
|
39
|
+
@@client ||= WLAPI::API.new
|
40
|
+
|
41
|
+
repaired = word.gsub(/ae/, 'ä').gsub(/ue/, 'ü').gsub(/oe/, 'ö')
|
42
|
+
repaired.gsub!(/^Ae/, 'Ä')
|
43
|
+
repaired.gsub!(/^Ue/, 'Ü')
|
44
|
+
repaired.gsub!(/^Oe/, 'Ö')
|
45
|
+
|
46
|
+
res_broken = @@client.frequencies(word)
|
47
|
+
freq_broken = res_broken.nil? ? -1 : res_broken[0].to_i
|
48
|
+
|
49
|
+
res_repaired = @@client.frequencies(repaired)
|
50
|
+
freq_repaired = res_repaired.nil? ? -1 : res_repaired[0].to_i
|
51
|
+
|
52
|
+
if freq_repaired > freq_broken
|
53
|
+
return repaired
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
word
|
58
|
+
end
|
59
|
+
|
60
|
+
# checks for eventual broken umlauts
|
61
|
+
#
|
62
|
+
# returns true if broken umlaut if included
|
63
|
+
def self.contains_eventual_broken_umlauts?(string)
|
64
|
+
! string.match(/ae|ue|oe|Ae|Ue|Oe/).nil?
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
data/serienrenamer.gemspec
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('../lib/serienrenamer/version', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Philipp Böhm"]
|
6
|
-
gem.email = ["
|
6
|
+
gem.email = ["dev@pboehm.org"]
|
7
7
|
gem.description = %q{Ruby Script that brings your series into an appropriate format like \"S01E01 - Episodename.avi\"}
|
8
8
|
gem.summary = %q{Ruby Script that brings your series into an appropriate format like \"S01E01 - Episodename.avi\"}
|
9
9
|
gem.homepage = "http://github.com/pboehm/serienrenamer"
|
@@ -17,8 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.required_ruby_version = '>= 1.9.0'
|
19
19
|
gem.add_runtime_dependency(%q<wlapi>, [">= 0.8.5"])
|
20
|
-
gem.add_runtime_dependency(%q<mediawiki-gateway>, [">= 0.4.4"])
|
21
|
-
gem.add_runtime_dependency(%q<mechanize>, [">= 2.3"])
|
22
20
|
gem.add_runtime_dependency(%q<highline>, [">= 1.6.11"])
|
23
21
|
gem.add_runtime_dependency(%q<hashconfig>, [">= 0.0.1"])
|
24
22
|
end
|
data/test/test_episode.rb
CHANGED
@@ -64,111 +64,65 @@ class TestEpisode < Test::Unit::TestCase
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def test_information_cleanup
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
)
|
73
|
-
end
|
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"))
|
111
|
-
end
|
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
|
+
)
|
112
72
|
end
|
113
73
|
|
114
74
|
def test_episode_information_extraction_from_file
|
115
75
|
|
116
|
-
|
117
|
-
assert_raise(ArgumentError) { Serienrenamer::Episode.new('video.flv')}
|
76
|
+
assert_raise(ArgumentError) { Serienrenamer::Episode.new('video.flv')}
|
118
77
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
78
|
+
epi = Serienrenamer::Episode.new(@@files["chuckfull"])
|
79
|
+
assert_equal('Chuck',epi.series)
|
80
|
+
assert_equal(1, epi.season)
|
81
|
+
assert_equal(1, epi.episode)
|
82
|
+
assert_equal("Dies ist ein Test", epi.episodename)
|
83
|
+
assert_equal("S01E01 - Dies ist ein Test.avi", epi.to_s)
|
125
84
|
|
126
|
-
|
127
|
-
|
85
|
+
flpo = Serienrenamer::Episode.new(@@files["flpo"])
|
86
|
+
assert_equal("S04E04 - Getruebte Erinnerungen.avi", flpo.to_s)
|
128
87
|
|
129
|
-
|
130
|
-
|
131
|
-
|
88
|
+
csiny = Serienrenamer::Episode.new(@@files["csiny"])
|
89
|
+
csiny.episodename_needed=false
|
90
|
+
assert_equal("S07E20.avi", csiny.to_s)
|
132
91
|
|
133
|
-
|
134
|
-
|
92
|
+
legaltrash = Serienrenamer::Episode.new(@@files["legaltrash"])
|
93
|
+
assert_equal("S04E04 - Die German Erinnerungen.avi", legaltrash.to_s)
|
135
94
|
|
136
|
-
|
137
|
-
|
138
|
-
end
|
95
|
+
royal = Serienrenamer::Episode.new(@@files["royal"])
|
96
|
+
assert_equal("S02E10 - Beziehungsbeschwerden.avi", royal.to_s)
|
139
97
|
end
|
140
98
|
|
141
99
|
def test_episode_information_extraction_from_directory
|
142
100
|
|
143
|
-
|
144
|
-
|
145
|
-
assert_equal("S01E01 - Testepisode.avi", chuck.to_s)
|
101
|
+
chuck = Serienrenamer::Episode.new(@@directories["chuck"])
|
102
|
+
assert_equal("S01E01 - Testepisode.avi", chuck.to_s)
|
146
103
|
|
147
|
-
|
148
|
-
|
104
|
+
chuck1 = Serienrenamer::Episode.new(@@directories["chuck1"])
|
105
|
+
assert_equal("S01E01 - First Episode.avi", chuck1.to_s)
|
149
106
|
|
150
|
-
|
151
|
-
|
107
|
+
ncis = Serienrenamer::Episode.new(@@directories["ncis"])
|
108
|
+
assert_equal("S09E05 - Im sicheren Hafen.avi", ncis.to_s)
|
152
109
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
end
|
110
|
+
chuck2 = Serienrenamer::Episode.new(@@directories["chuck2"])
|
111
|
+
chuck2.episodename_needed=false
|
112
|
+
assert_equal("S02E12.avi", chuck2.to_s)
|
157
113
|
end
|
158
114
|
|
159
115
|
def test_adding_episodename_afterwards
|
160
116
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
assert_equal("S07E20 - Dies ist nachträglich eingefügt.avi", csiny.to_s)
|
117
|
+
csiny = Serienrenamer::Episode.new(@@files["csiny"])
|
118
|
+
csiny.add_episode_information('Dies ist nachträglich eingefügt', false)
|
119
|
+
assert_equal("S07E20 - Dies ist nachträglich eingefügt.avi", csiny.to_s)
|
165
120
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
end
|
121
|
+
chuck = Serienrenamer::Episode.new(@@directories["chuck"])
|
122
|
+
chuck.add_episode_information(
|
123
|
+
'Chuck.S01E01.First.Episode.GERMAN.DUBBED.DL.720p.HDTV.x264-euHD',
|
124
|
+
true)
|
125
|
+
assert_equal("S01E01 - First Episode.avi", chuck.to_s)
|
172
126
|
end
|
173
127
|
|
174
128
|
def test_videofile_determination
|
@@ -182,55 +136,47 @@ class TestEpisode < Test::Unit::TestCase
|
|
182
136
|
end
|
183
137
|
|
184
138
|
def test_episode_rename_file
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
assert_equal(true, epi.success)
|
189
|
-
end
|
139
|
+
epi = Serienrenamer::Episode.new(@@files["chuckfull"])
|
140
|
+
epi.rename
|
141
|
+
assert_equal(true, epi.success)
|
190
142
|
end
|
191
143
|
|
192
144
|
def test_episode_rename_from_directory
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
assert_equal(true, epi.success)
|
198
|
-
end
|
145
|
+
@@directories.each do |n,d|
|
146
|
+
epi = Serienrenamer::Episode.new(d)
|
147
|
+
epi.rename
|
148
|
+
assert_equal(true, epi.success)
|
199
149
|
end
|
200
150
|
end
|
201
151
|
|
202
152
|
def test_episode_where_dir_has_not_enough_info
|
203
|
-
|
204
|
-
d = @@invalid_directories["tbbt"]
|
153
|
+
d = @@invalid_directories["tbbt"]
|
205
154
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
155
|
+
filenametxt = File.new(File.join(d, "filename.txt"), "w")
|
156
|
+
filenametxt.write(
|
157
|
+
"The.Big.Bang.Theory.S05E16.Sheldon.Revival.HDTV.XviD-LOL")
|
158
|
+
filenametxt.close
|
210
159
|
|
211
|
-
|
212
|
-
|
160
|
+
tbbt = Serienrenamer::Episode.new(d)
|
161
|
+
assert_equal("S05E16 - Sheldon Revival.avi", tbbt.to_s)
|
213
162
|
|
214
|
-
|
215
|
-
|
216
|
-
end
|
163
|
+
tbbt.rename
|
164
|
+
assert_equal(true, tbbt.success)
|
217
165
|
end
|
218
166
|
|
219
167
|
def test_generate_episode_hash
|
220
|
-
|
221
|
-
chuck = Serienrenamer::Episode.new(@@directories["chuck"])
|
168
|
+
chuck = Serienrenamer::Episode.new(@@directories["chuck"])
|
222
169
|
|
223
|
-
|
224
|
-
|
225
|
-
|
170
|
+
videofile = File.new(chuck.episodepath, "w")
|
171
|
+
videofile.write("Chuck.S01E01.Testepisode.German.Dubbed.BLURAYRiP")
|
172
|
+
videofile.close
|
226
173
|
|
227
|
-
|
228
|
-
|
229
|
-
|
174
|
+
assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
|
175
|
+
chuck.rename
|
176
|
+
assert_equal("d538bf7632bd3b14601015fbc3a39f60", chuck.md5sum)
|
230
177
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
end
|
178
|
+
# explicit bytecount
|
179
|
+
assert_equal("78193bb6ffe829b49981b494ab243a82", chuck.md5sum(5))
|
180
|
+
assert_equal("0f2788bb1324330898fffddcafd2b8e1", chuck.md5sum(12))
|
235
181
|
end
|
236
182
|
end
|