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
@@ -16,26 +16,23 @@ class TestInformationStore < Test::Unit::TestCase
|
|
16
16
|
|
17
17
|
@empty_file = Tempfile.new('information_storage')
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
storage = Serienrenamer::InformationStore.new("storage.yml")
|
25
|
-
|
26
|
-
@@files.each do |key, value|
|
27
|
-
filenametxt = File.new(value, "w")
|
28
|
-
filenametxt.write(value)
|
29
|
-
filenametxt.close
|
30
|
-
|
31
|
-
episode = Serienrenamer::Episode.new(value)
|
32
|
-
episode.rename
|
33
|
-
@episodes[key] = episode
|
34
|
-
storage.store(episode)
|
35
|
-
end
|
36
|
-
storage.write
|
37
|
-
end
|
19
|
+
TestHelper.create_test_files(@@files.values)
|
20
|
+
TestHelper.cwd
|
21
|
+
|
22
|
+
@episodes = Hash.new
|
23
|
+
storage = Serienrenamer::InformationStore.new("storage.yml")
|
38
24
|
|
25
|
+
@@files.each do |key, value|
|
26
|
+
filenametxt = File.new(value, "w")
|
27
|
+
filenametxt.write(value)
|
28
|
+
filenametxt.close
|
29
|
+
|
30
|
+
episode = Serienrenamer::Episode.new(value)
|
31
|
+
episode.rename
|
32
|
+
@episodes[key] = episode
|
33
|
+
storage.store(episode)
|
34
|
+
end
|
35
|
+
storage.write
|
39
36
|
end
|
40
37
|
|
41
38
|
def teardown
|
@@ -38,51 +38,49 @@ class TestPluginSerienjunkiesFeed < Test::Unit::TestCase
|
|
38
38
|
# improve this so that the Plugin uses a local xml file
|
39
39
|
def test_information_extraction
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
assert_equal("S22E16 - Ein Sommernachtstrip.avi", simps.to_s)
|
41
|
+
simps = Serienrenamer::Episode.new(@@files['simps'])
|
42
|
+
data = @feed.generate_episode_information(simps)[0]
|
43
|
+
simps.add_episode_information(data, true)
|
44
|
+
assert_equal("S22E16 - Ein Sommernachtstrip.avi", simps.to_s)
|
46
45
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
flpo = Serienrenamer::Episode.new(@@files['flpo'])
|
47
|
+
data = @feed.generate_episode_information(flpo)[0]
|
48
|
+
flpo.add_episode_information(data, true)
|
49
|
+
assert_equal("S04E04 - Getruebte Erinnerungen.avi", flpo.to_s)
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
big = Serienrenamer::Episode.new(@@files['biglove'])
|
52
|
+
data = @feed.generate_episode_information(big)[0]
|
53
|
+
big.add_episode_information(data, true)
|
54
|
+
assert_equal("S05E06 - Scheidung.avi", big.to_s)
|
56
55
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
crmi = Serienrenamer::Episode.new(@@files['crmi'])
|
57
|
+
data = @feed.generate_episode_information(crmi)[0]
|
58
|
+
crmi.add_episode_information(data, true)
|
59
|
+
assert_equal("S06E22 - Die Dunkelkammer Moerder.avi", crmi.to_s)
|
61
60
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
two = Serienrenamer::Episode.new(@@files['two'])
|
62
|
+
data = @feed.generate_episode_information(two)[0]
|
63
|
+
two.add_episode_information(data, true)
|
64
|
+
assert_equal("S09E07 - Das Tagebuch.avi", two.to_s)
|
66
65
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
66
|
+
sea = Serienrenamer::Episode.new(@@files['sea'])
|
67
|
+
data = @feed.generate_episode_information(sea)[0]
|
68
|
+
sea.add_episode_information(data, true)
|
69
|
+
assert_equal("S05E11 - Der Morgen danach.avi", sea.to_s)
|
71
70
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
csiny = Serienrenamer::Episode.new(@@files['csiny'])
|
72
|
+
data = @feed.generate_episode_information(csiny)[0]
|
73
|
+
csiny.add_episode_information(data, true)
|
74
|
+
assert_equal("S07E21 - Kugelhagel.avi", csiny.to_s)
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
# the following episodes are not exisiting in the feed
|
77
|
+
# so it should returns nil
|
78
|
+
sherlock = Serienrenamer::Episode.new(@@files['shlock'])
|
79
|
+
data = @feed.generate_episode_information(sherlock)[0]
|
80
|
+
assert_nil(data)
|
82
81
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end
|
82
|
+
theunit = Serienrenamer::Episode.new(@@files['unit'])
|
83
|
+
data = @feed.generate_episode_information(theunit)[0]
|
84
|
+
assert_nil(data)
|
87
85
|
end
|
88
86
|
end
|
@@ -38,28 +38,22 @@ class TestPluginTextfile < Test::Unit::TestCase
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_information_extraction
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
assert_equal("S07E05 - Die Exkursion.avi", how.to_s)
|
46
|
-
end
|
41
|
+
how = Serienrenamer::Episode.new(@@directories['hmym'])
|
42
|
+
data = Serienrenamer::Plugin::Textfile.generate_episode_information(how)[0]
|
43
|
+
how.add_episode_information(data, true)
|
44
|
+
assert_equal("S07E05 - Die Exkursion.avi", how.to_s)
|
47
45
|
end
|
48
46
|
|
49
47
|
def test_select_right_textfile
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
assert_equal("S07E11 - Plan B.avi", how.to_s)
|
55
|
-
end
|
48
|
+
how = Serienrenamer::Episode.new(@@directories['hmmg'])
|
49
|
+
data = Serienrenamer::Plugin::Textfile.generate_episode_information(how)[0]
|
50
|
+
how.add_episode_information(data, true)
|
51
|
+
assert_equal("S07E11 - Plan B.avi", how.to_s)
|
56
52
|
end
|
57
53
|
|
58
54
|
def test_information_extraction_with_directory_parameter
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
assert_not_nil(data)
|
63
|
-
end
|
55
|
+
how = @@directories['hmym']
|
56
|
+
data = Serienrenamer::Plugin::Textfile.generate_episode_information(how)[0]
|
57
|
+
assert_not_nil(data)
|
64
58
|
end
|
65
59
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
|
+
|
4
|
+
class TestPluginUmlauts < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_repairing_umlauts
|
7
|
+
VCR.use_cassette("episode_#{method_name}") do
|
8
|
+
assert_equal("Duell für Änderung",
|
9
|
+
Serienrenamer::Plugin::Umlauts.filter("Duell fuer Aenderung"))
|
10
|
+
|
11
|
+
assert_equal("Zaubersprüche",
|
12
|
+
Serienrenamer::Plugin::Umlauts.filter("Zaubersprueche"))
|
13
|
+
assert_equal("Ungeheuerlich",
|
14
|
+
Serienrenamer::Plugin::Umlauts.filter("Ungeheuerlich"))
|
15
|
+
assert_equal("Frauen",
|
16
|
+
Serienrenamer::Plugin::Umlauts.filter("Frauen"))
|
17
|
+
assert_equal("Abführmittel",
|
18
|
+
Serienrenamer::Plugin::Umlauts.filter("Abfuehrmittel"))
|
19
|
+
assert_equal("tödlich",
|
20
|
+
Serienrenamer::Plugin::Umlauts.filter("toedlich"))
|
21
|
+
assert_equal("König",
|
22
|
+
Serienrenamer::Plugin::Umlauts.filter("Koenig"))
|
23
|
+
assert_equal("Öko",
|
24
|
+
Serienrenamer::Plugin::Umlauts.filter("Oeko"))
|
25
|
+
assert_equal("Männer",
|
26
|
+
Serienrenamer::Plugin::Umlauts.filter("Maenner"))
|
27
|
+
assert_equal("Draufgänger",
|
28
|
+
Serienrenamer::Plugin::Umlauts.filter("Draufgaenger"))
|
29
|
+
assert_equal("Unglücksvögel",
|
30
|
+
Serienrenamer::Plugin::Umlauts.filter("Ungluecksvoegel"))
|
31
|
+
assert_equal("Jäger",
|
32
|
+
Serienrenamer::Plugin::Umlauts.filter("Jaeger"))
|
33
|
+
assert_equal("Loyalität",
|
34
|
+
Serienrenamer::Plugin::Umlauts.filter("Loyalitaet"))
|
35
|
+
# both forms do not exist
|
36
|
+
assert_equal("Moeback",
|
37
|
+
Serienrenamer::Plugin::Umlauts.filter("Moeback"))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,97 +1,70 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serienrenamer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philipp Böhm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: wlapi
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.8.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.8.5
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: mediawiki-gateway
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.4.4
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.4.4
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mechanize
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.3'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2.3'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: highline
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
|
-
- -
|
31
|
+
- - ">="
|
60
32
|
- !ruby/object:Gem::Version
|
61
33
|
version: 1.6.11
|
62
34
|
type: :runtime
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
|
-
- -
|
38
|
+
- - ">="
|
67
39
|
- !ruby/object:Gem::Version
|
68
40
|
version: 1.6.11
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: hashconfig
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
|
-
- -
|
45
|
+
- - ">="
|
74
46
|
- !ruby/object:Gem::Version
|
75
47
|
version: 0.0.1
|
76
48
|
type: :runtime
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
|
-
- -
|
52
|
+
- - ">="
|
81
53
|
- !ruby/object:Gem::Version
|
82
54
|
version: 0.0.1
|
83
55
|
description: Ruby Script that brings your series into an appropriate format like \"S01E01
|
84
56
|
- Episodename.avi\"
|
85
57
|
email:
|
86
|
-
-
|
58
|
+
- dev@pboehm.org
|
87
59
|
executables:
|
88
60
|
- serienrenamer
|
89
61
|
extensions: []
|
90
62
|
extra_rdoc_files: []
|
91
63
|
files:
|
92
|
-
- .gitignore
|
93
|
-
- .travis.yml
|
64
|
+
- ".gitignore"
|
65
|
+
- ".travis.yml"
|
94
66
|
- Gemfile
|
67
|
+
- Gemfile.lock
|
95
68
|
- README.rdoc
|
96
69
|
- Rakefile
|
97
70
|
- bin/serienrenamer
|
@@ -100,23 +73,19 @@ files:
|
|
100
73
|
- lib/serienrenamer/information_store.rb
|
101
74
|
- lib/serienrenamer/plugin.rb
|
102
75
|
- lib/serienrenamer/plugin/episode_identifier.rb
|
103
|
-
- lib/serienrenamer/plugin/serienjunkies_de.rb
|
104
76
|
- lib/serienrenamer/plugin/serienjunkies_feed.rb
|
105
|
-
- lib/serienrenamer/plugin/serienjunkies_org.rb
|
106
77
|
- lib/serienrenamer/plugin/textfile.rb
|
107
|
-
- lib/serienrenamer/plugin/
|
78
|
+
- lib/serienrenamer/plugin/umlauts.rb
|
108
79
|
- lib/serienrenamer/version.rb
|
109
80
|
- serienrenamer.gemspec
|
110
81
|
- test/serienjunkies_feed_sample.xml
|
111
|
-
- test/skipped_test_plugin_serienjunkies_org.rb
|
112
|
-
- test/skipped_test_plugin_wikipedia.rb
|
113
82
|
- test/test_episode.rb
|
114
83
|
- test/test_helper.rb
|
115
84
|
- test/test_information_store.rb
|
116
85
|
- test/test_plugin_episode_identifier.rb
|
117
|
-
- test/test_plugin_serienjunkies_de.rb
|
118
86
|
- test/test_plugin_serienjunkies_feed.rb
|
119
87
|
- test/test_plugin_textfile.rb
|
88
|
+
- test/test_plugin_umlauts.rb
|
120
89
|
homepage: http://github.com/pboehm/serienrenamer
|
121
90
|
licenses: []
|
122
91
|
metadata: {}
|
@@ -126,29 +95,27 @@ require_paths:
|
|
126
95
|
- lib
|
127
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
97
|
requirements:
|
129
|
-
- -
|
98
|
+
- - ">="
|
130
99
|
- !ruby/object:Gem::Version
|
131
100
|
version: 1.9.0
|
132
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
102
|
requirements:
|
134
|
-
- -
|
103
|
+
- - ">="
|
135
104
|
- !ruby/object:Gem::Version
|
136
105
|
version: '0'
|
137
106
|
requirements: []
|
138
107
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.0
|
108
|
+
rubygems_version: 2.2.0
|
140
109
|
signing_key:
|
141
110
|
specification_version: 4
|
142
111
|
summary: Ruby Script that brings your series into an appropriate format like \"S01E01
|
143
112
|
- Episodename.avi\"
|
144
113
|
test_files:
|
145
114
|
- test/serienjunkies_feed_sample.xml
|
146
|
-
- test/skipped_test_plugin_serienjunkies_org.rb
|
147
|
-
- test/skipped_test_plugin_wikipedia.rb
|
148
115
|
- test/test_episode.rb
|
149
116
|
- test/test_helper.rb
|
150
117
|
- test/test_information_store.rb
|
151
118
|
- test/test_plugin_episode_identifier.rb
|
152
|
-
- test/test_plugin_serienjunkies_de.rb
|
153
119
|
- test/test_plugin_serienjunkies_feed.rb
|
154
120
|
- test/test_plugin_textfile.rb
|
121
|
+
- test/test_plugin_umlauts.rb
|
@@ -1,131 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Class that extracts information about episodes
|
3
|
-
# from the serienjunkies.de-Page
|
4
|
-
#
|
5
|
-
require 'uri'
|
6
|
-
require 'mechanize'
|
7
|
-
|
8
|
-
module Serienrenamer
|
9
|
-
module Plugin
|
10
|
-
|
11
|
-
class SerienjunkiesDe < Serienrenamer::Pluginbase
|
12
|
-
|
13
|
-
def self.plugin_name; "SerienjunkiesDe" end
|
14
|
-
def self.plugin_url; "http://serienjunkies.de" end
|
15
|
-
def self.usable; true end
|
16
|
-
def self.priority; 50 end
|
17
|
-
|
18
|
-
# this method will be called from the main program
|
19
|
-
# with an Serienrenamer::Episode instance as parameter
|
20
|
-
#
|
21
|
-
# if this is the first call to this method, it builds up
|
22
|
-
# a hash with all series and existing episodes, which can
|
23
|
-
# be used by all future method calls
|
24
|
-
#
|
25
|
-
def self.generate_episode_information(episode)
|
26
|
-
|
27
|
-
raise ArgumentError, "Serienrenamer::Episode instance needed" unless
|
28
|
-
episode.is_a?(Serienrenamer::Episode)
|
29
|
-
|
30
|
-
unless defined? @cached_data
|
31
|
-
@cached_data = Hash.new
|
32
|
-
end
|
33
|
-
|
34
|
-
if ! @cached_data.has_key?(episode.series)
|
35
|
-
|
36
|
-
if episode.series.match(/\w+/)
|
37
|
-
|
38
|
-
# determine link to series
|
39
|
-
seriespage_link = self.find_link_to_series_page(episode.series)
|
40
|
-
|
41
|
-
if seriespage_link
|
42
|
-
seriesdata = self.parse_seriespage(seriespage_link)
|
43
|
-
|
44
|
-
@cached_data[episode.series] = seriesdata
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
matched_episodes = []
|
50
|
-
|
51
|
-
# tries to find an episodename in cached_data
|
52
|
-
# otherwise returns empty array
|
53
|
-
begin
|
54
|
-
series = @cached_data[episode.series]
|
55
|
-
identifier = "S%.2dE%.2d" % [ episode.season, episode.episode ]
|
56
|
-
episodename = series[identifier]
|
57
|
-
|
58
|
-
if episodename.match(/\w+/)
|
59
|
-
matched_episodes.push(episodename)
|
60
|
-
end
|
61
|
-
rescue
|
62
|
-
end
|
63
|
-
|
64
|
-
return matched_episodes
|
65
|
-
end
|
66
|
-
|
67
|
-
# tries to find the link to the series page because there are
|
68
|
-
# plenty of different writings of some series
|
69
|
-
# :seriesname: - name of the series
|
70
|
-
#
|
71
|
-
# TODO make this more intelligent so that it tries other forms
|
72
|
-
# of the name
|
73
|
-
#
|
74
|
-
# returns a link to a seriejunkies.de-page or nil if no page was found
|
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, "serien/%s.html" % seriesname[0].downcase )
|
81
|
-
|
82
|
-
@agent.get(url).search("a.slink").each do |series|
|
83
|
-
if series.text.match(/#{seriesname}/i)
|
84
|
-
return URI.join( plugin_url, series[:href]).to_s
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
return nil
|
89
|
-
end
|
90
|
-
|
91
|
-
# parses the supplied url and returns a hash with
|
92
|
-
# episode information indexed by episode identifier
|
93
|
-
# :page_url: - url of the serienjunkies page
|
94
|
-
# :german: - extract only german titles if true
|
95
|
-
def self.parse_seriespage(page_url, german=true)
|
96
|
-
|
97
|
-
self.build_agent unless defined? @agent
|
98
|
-
|
99
|
-
series = {}
|
100
|
-
|
101
|
-
seriesdoc = @agent.get(page_url)
|
102
|
-
epidoc = @agent.click(seriesdoc.link_with(:text => /^Episoden$/i))
|
103
|
-
|
104
|
-
epidoc.search('div#sjserie > div.topabstand > table.eplist tr').each do |episode|
|
105
|
-
|
106
|
-
next unless episode.search("td.thh").empty? # skip headings
|
107
|
-
|
108
|
-
firstchild = episode.search(":first-child")[0].text
|
109
|
-
md = firstchild.match(/(?<season>\d+)x(?<episode>\d+)/)
|
110
|
-
|
111
|
-
next unless md
|
112
|
-
|
113
|
-
# extract and save these information
|
114
|
-
identifier = "S%.2dE%.2d" % [ md[:season].to_i, md[:episode].to_i ]
|
115
|
-
|
116
|
-
german = episode.search("a")[1]
|
117
|
-
next unless german
|
118
|
-
|
119
|
-
series[identifier] = german.text.strip
|
120
|
-
end
|
121
|
-
|
122
|
-
return series
|
123
|
-
end
|
124
|
-
|
125
|
-
# build up a mechanize instance
|
126
|
-
def self.build_agent
|
127
|
-
@agent = Mechanize.new
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|