movie_show_times 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/movie_show_times.rb +1 -0
- data/lib/movie_show_times/genre_parser.rb +36 -0
- data/lib/movie_show_times/genres/en.txt +28 -0
- data/lib/movie_show_times/genres/es.txt +26 -0
- data/lib/movie_show_times/parser.rb +3 -7
- data/lib/movie_show_times/version.rb +1 -1
- data/spec/genre_parser_spec.rb +38 -0
- data/spec/movie_show_times_spec.rb +0 -4
- metadata +19 -14
data/lib/movie_show_times.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module MovieShowTimes
|
4
|
+
class GenreParser
|
5
|
+
|
6
|
+
def initialize(language = 'en')
|
7
|
+
@language = language
|
8
|
+
terms = nil
|
9
|
+
|
10
|
+
begin
|
11
|
+
genres_file_contents = File.open("#{File.dirname(__FILE__)}/genres/#{language}.txt").readlines.map(&:chomp)
|
12
|
+
terms = genres_file_contents.join('|')
|
13
|
+
rescue Errno::ENOENT
|
14
|
+
end
|
15
|
+
@regular_expression = Regexp.new("(#{terms})", 'i') unless terms.nil?
|
16
|
+
end
|
17
|
+
|
18
|
+
def parse(info_line)
|
19
|
+
if @regular_expression
|
20
|
+
parts = info_line.split(' - ')
|
21
|
+
parts.each do |p|
|
22
|
+
return p unless @regular_expression.match(p).nil?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
nil
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
=begin
|
34
|
+
i.match("-+[^-]+-")
|
35
|
+
|
36
|
+
=end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Action
|
2
|
+
Adventure
|
3
|
+
Animation
|
4
|
+
Biography
|
5
|
+
Comedy
|
6
|
+
Crime
|
7
|
+
Documentary
|
8
|
+
Drama
|
9
|
+
Family
|
10
|
+
Fantasy
|
11
|
+
Film-Noir
|
12
|
+
Game-Show
|
13
|
+
History
|
14
|
+
Horror
|
15
|
+
Music
|
16
|
+
Musical
|
17
|
+
Mystery
|
18
|
+
News
|
19
|
+
Reality-TV
|
20
|
+
Romance
|
21
|
+
Sci-Fi
|
22
|
+
Scifi
|
23
|
+
Sport
|
24
|
+
Suspense
|
25
|
+
Talk-Show
|
26
|
+
Thriller
|
27
|
+
War
|
28
|
+
Western
|
@@ -0,0 +1,26 @@
|
|
1
|
+
acción
|
2
|
+
aventura
|
3
|
+
animación
|
4
|
+
biografía
|
5
|
+
comedia
|
6
|
+
crimen
|
7
|
+
documental
|
8
|
+
drama
|
9
|
+
familia
|
10
|
+
fantasía
|
11
|
+
Cine negro
|
12
|
+
historia
|
13
|
+
horror
|
14
|
+
música
|
15
|
+
musical
|
16
|
+
misterio
|
17
|
+
noticias
|
18
|
+
reality
|
19
|
+
romance
|
20
|
+
ciencia ficción
|
21
|
+
scifi
|
22
|
+
deporte
|
23
|
+
suspenso
|
24
|
+
Talk-Show
|
25
|
+
guerra
|
26
|
+
western
|
@@ -10,6 +10,7 @@ module MovieShowTimes
|
|
10
10
|
def initialize(language = 'en')
|
11
11
|
@language = language
|
12
12
|
@language_parser = MovieShowTimes::LanguageParser.new(language)
|
13
|
+
@genre_parser = MovieShowTimes::GenreParser.new(language)
|
13
14
|
@theaters = Hash.new
|
14
15
|
@movies = Hash.new
|
15
16
|
end
|
@@ -49,16 +50,11 @@ module MovieShowTimes
|
|
49
50
|
|
50
51
|
def parse_movie_info(info_line)
|
51
52
|
duration = ChronicDuration.parse(info_line)
|
52
|
-
genre =
|
53
|
+
genre = @genre_parser.parse(info_line)
|
53
54
|
language = @language_parser.parse(info_line)
|
54
55
|
|
55
56
|
{ :duration => duration, :genre => genre, :language => language }
|
56
57
|
end
|
57
|
-
|
58
|
-
def parse_genre(info_line)
|
59
|
-
matches = info_line.match(/(Drama|Scifi\/Fantasy|Documentary)/)
|
60
|
-
return matches[0] unless matches.nil?
|
61
|
-
nil
|
62
|
-
end
|
58
|
+
|
63
59
|
end
|
64
60
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe MovieShowTimes::GenreParser do
|
5
|
+
context 'when initialized with language that does not have genre names file' do
|
6
|
+
it "it should return nil" do
|
7
|
+
@parser = MovieShowTimes::GenreParser.new('ur')
|
8
|
+
@parser.parse('1گھنٹہ 40م - ہسپانوی').should be_nil
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
context 'parsing an info string' do
|
14
|
+
context 'in english' do
|
15
|
+
before :all do
|
16
|
+
@parser = MovieShowTimes::GenreParser.new('en')
|
17
|
+
end
|
18
|
+
|
19
|
+
it "detects genre name" do
|
20
|
+
@parser.parse('1hr 25min- Suspense - English').should match('Suspense')
|
21
|
+
end
|
22
|
+
|
23
|
+
it "detects genres names when there is more than one" do
|
24
|
+
@parser.parse('1hr 25min- Suspense/Thriller - English').should match('Suspense/Thriller')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'in spanish' do
|
29
|
+
before :all do
|
30
|
+
@parser = MovieShowTimes::GenreParser.new('es')
|
31
|
+
end
|
32
|
+
|
33
|
+
it "detects genres names" do
|
34
|
+
@parser.parse('1h 57min- Acción/Aventuras/Drama- inglés').should match('Acción/Aventuras/Drama')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -87,14 +87,10 @@ describe MovieShowTimes do
|
|
87
87
|
end
|
88
88
|
|
89
89
|
it "provides movie info with genre" do
|
90
|
-
pending
|
91
|
-
|
92
90
|
movie = @movieShowTimes.movies['Mirror Mirror']
|
93
|
-
movie[:info][:genre].should_not be_nil
|
94
91
|
movie[:info][:genre].should match('Scifi/Fantasy')
|
95
92
|
|
96
93
|
movie = @movieShowTimes.movies['American Reunion']
|
97
|
-
movie[:info][:genre].should_not be_nil
|
98
94
|
movie[:info][:genre].should match('Comedy/Romance')
|
99
95
|
end
|
100
96
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: movie_show_times
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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-04-
|
12
|
+
date: 2012-04-21 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mechanize
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156941580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156941580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156941160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156941160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: chronic_duration
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156940740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156940740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156940320 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156940320
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156939900 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156939900
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fakeweb
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156939480 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156939480
|
80
80
|
description: Get Movie Show Times by Location
|
81
81
|
email:
|
82
82
|
- chrishein@gmail.com
|
@@ -91,6 +91,9 @@ files:
|
|
91
91
|
- Rakefile
|
92
92
|
- lib/movie_show_times.rb
|
93
93
|
- lib/movie_show_times/crawler.rb
|
94
|
+
- lib/movie_show_times/genre_parser.rb
|
95
|
+
- lib/movie_show_times/genres/en.txt
|
96
|
+
- lib/movie_show_times/genres/es.txt
|
94
97
|
- lib/movie_show_times/language_parser.rb
|
95
98
|
- lib/movie_show_times/languages/de.txt
|
96
99
|
- lib/movie_show_times/languages/en.txt
|
@@ -108,6 +111,7 @@ files:
|
|
108
111
|
- spec/fixtures/movies_bsas_4.txt
|
109
112
|
- spec/fixtures/movies_bsas_5.txt
|
110
113
|
- spec/fixtures/movies_bsas_6.txt
|
114
|
+
- spec/genre_parser_spec.rb
|
111
115
|
- spec/language_parser_spec.rb
|
112
116
|
- spec/movie_show_times_spec.rb
|
113
117
|
- spec/spec_helper.rb
|
@@ -143,6 +147,7 @@ test_files:
|
|
143
147
|
- spec/fixtures/movies_bsas_4.txt
|
144
148
|
- spec/fixtures/movies_bsas_5.txt
|
145
149
|
- spec/fixtures/movies_bsas_6.txt
|
150
|
+
- spec/genre_parser_spec.rb
|
146
151
|
- spec/language_parser_spec.rb
|
147
152
|
- spec/movie_show_times_spec.rb
|
148
153
|
- spec/spec_helper.rb
|