movie_show_times 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # MovieShowTimes
2
2
 
3
3
  Get Movies Show Times for all theaters near a given location.
4
+
4
5
  The gem crawls and parses Google Movies pages.
5
6
 
6
7
  ## Installation
@@ -19,7 +20,30 @@ Or install it yourself as:
19
20
 
20
21
  ## Usage
21
22
 
22
- TODO: Write usage instructions here
23
+ movieShowTimes = MovieShowTimes::Crawler.new({ :location => 'Buenos Aires' })
24
+
25
+ theater = movieShowTimes.theaters['Monumental']
26
+ puts theater # => { :name => 'Monumental', :info => 'Lavalle 780, Buenos Aires, Argentina - 0-11-4393-9008',
27
+ :movies => [ ... ]
28
+ }
29
+
30
+ puts theater[:movies][0] # => { :name => 'Titanic 3D',
31
+ :info => { :duration => 10814,
32
+ :language => 'English',
33
+ :genre => 'Action/Adventure/Drama'
34
+ }
35
+ :times => ['13:30', '17:30', '21:30', '01:00']
36
+ }
37
+
38
+ ## TODO
39
+
40
+ Improve API
41
+
42
+ Fix and extend movie info parsing (genres and languages)
43
+
44
+ Allow retrieving movie show times for following days
45
+
46
+ Include more movie info from other data sources
23
47
 
24
48
  ## Contributing
25
49
 
@@ -28,3 +52,7 @@ TODO: Write usage instructions here
28
52
  3. Commit your changes (`git commit -am 'Added some feature'`)
29
53
  4. Push to the branch (`git push origin my-new-feature`)
30
54
  5. Create new Pull Request
55
+
56
+ ## License
57
+
58
+ Copyright © 2012 Christian Hein, released under the MIT license
@@ -1,6 +1,7 @@
1
1
  require "movie_show_times/version"
2
2
  require 'movie_show_times/crawler'
3
3
  require 'movie_show_times/parser'
4
+ require 'movie_show_times/language_parser'
4
5
 
5
6
  module MovieShowTimes
6
7
 
@@ -7,12 +7,14 @@ module MovieShowTimes
7
7
 
8
8
  const_set("MissingLocationArgument", Class.new(StandardError))
9
9
 
10
- def initialize(options={})
11
- @parser = MovieShowTimes::Parser.new
10
+ def initialize(options = {})
12
11
 
13
12
  raise MissingLocationArgument unless options[:location]
14
13
 
15
14
  language = options[:language] || 'en'
15
+
16
+ @parser = MovieShowTimes::Parser.new(language)
17
+
16
18
  search_url = "http://www.google.com/movies?hl=#{language}&near=#{CGI.escape(options[:location])}"
17
19
 
18
20
  @agent = Mechanize.new
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+
3
+ module MovieShowTimes
4
+ class LanguageParser
5
+
6
+ def initialize(language = 'en')
7
+ @language = language
8
+ language_names = nil
9
+
10
+ begin
11
+ lang_file_contents = File.open("#{File.dirname(__FILE__)}/languages/#{language}.txt").readlines.map(&:chomp)
12
+ language_names = lang_file_contents.join('|')
13
+ rescue Errno::ENOENT
14
+ end
15
+ @language_regular_expression = Regexp.new("(#{language_names})", 'i') unless language_names.nil?
16
+ end
17
+
18
+ def parse(info_line)
19
+ if @language_regular_expression
20
+ matches = @language_regular_expression.match(info_line)
21
+ return matches[0].capitalize unless matches.nil?
22
+ end
23
+ nil
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,63 @@
1
+ Afrikaans
2
+ Albanisch
3
+ Arabisch
4
+ Azerbaijani
5
+ Baskische
6
+ Bengali
7
+ belarussischen
8
+ Bulgarisch
9
+ Katalanisch
10
+ Chinesisch
11
+ kroatisch
12
+ Tschechisch
13
+ Dänisch
14
+ Holländer
15
+ Englisch
16
+ Esperanto
17
+ Estnisch
18
+ Filipino
19
+ Finnisch
20
+ Französisch
21
+ galizischen
22
+ Georgier
23
+ Deutsch
24
+ Griechisch
25
+ Gujarati
26
+ Haitian Creole
27
+ Hebräisch
28
+ Hindi
29
+ Ungarisch
30
+ Isländisch
31
+ Indonesier
32
+ Irisch
33
+ Italienisch
34
+ Japanisch
35
+ Kannada
36
+ Koreanisch
37
+ Latein
38
+ Lettisch
39
+ Litauisch
40
+ Mazedonier
41
+ malaiisch
42
+ Malteser
43
+ Norwegisch
44
+ Persisch
45
+ polnisch
46
+ Portugiesisch
47
+ Rumänisch
48
+ Russisch
49
+ serbisch
50
+ Slowakisch
51
+ Slowenisch
52
+ Spanisch
53
+ Swahili
54
+ Schwedisch
55
+ Tamilisch
56
+ Telugu
57
+ thailändisch
58
+ Türkisch
59
+ Ukrainisch
60
+ Urdu
61
+ Vietnamesisch
62
+ Walisisch
63
+ Jiddisch
@@ -0,0 +1,63 @@
1
+ Afrikaans
2
+ Albanian
3
+ Arabic
4
+ Azerbaijani
5
+ Basque
6
+ Bengali
7
+ Belarusian
8
+ Bulgarian
9
+ Catalan
10
+ Chinese
11
+ Croatian
12
+ Czech
13
+ Danish
14
+ Dutch
15
+ English
16
+ Esperanto
17
+ Estonian
18
+ Filipino
19
+ Finnish
20
+ French
21
+ Galician
22
+ Georgian
23
+ German
24
+ Greek
25
+ Gujarati
26
+ Haitian Creole
27
+ Hebrew
28
+ Hindi
29
+ Hungarian
30
+ Icelandic
31
+ Indonesian
32
+ Irish
33
+ Italian
34
+ Japanese
35
+ Kannada
36
+ Korean
37
+ Latin
38
+ Latvian
39
+ Lithuanian
40
+ Macedonian
41
+ Malay
42
+ Maltese
43
+ Norwegian
44
+ Persian
45
+ Polish
46
+ Portuguese
47
+ Romanian
48
+ Russian
49
+ Serbian
50
+ Slovak
51
+ Slovenian
52
+ Spanish
53
+ Swahili
54
+ Swedish
55
+ Tamil
56
+ Telugu
57
+ Thai
58
+ Turkish
59
+ Ukrainian
60
+ Urdu
61
+ Vietnamese
62
+ Welsh
63
+ Yiddish
@@ -0,0 +1,76 @@
1
+ Afrikaans
2
+ Albanés
3
+ Alemán
4
+ Amharico
5
+ Arabe
6
+ Armenio
7
+ Bengali
8
+ Bieloruso
9
+ Birmanés
10
+ Bulgaro
11
+ Catalan
12
+ Checo
13
+ Chino
14
+ Coreano
15
+ Croata
16
+ Danés
17
+ Dari
18
+ Dzongkha
19
+ Escocés
20
+ Eslovaco
21
+ Esloveniano
22
+ Español
23
+ Esperanto
24
+ Estoniano
25
+ Faroese
26
+ Farsi
27
+ Filipino
28
+ Finlandés
29
+ Francés
30
+ Gaelico
31
+ Galese
32
+ Gallego
33
+ Griego
34
+ Hebreo
35
+ Hindi
36
+ Holandés
37
+ Hungaro
38
+ Inglés
39
+ Indonesio
40
+ Inuktitut
41
+ Islandico
42
+ Italiano
43
+ Japonés
44
+ Khmer
45
+ Kurdo
46
+ Lao
47
+ Laponico
48
+ Latviano
49
+ Lituano
50
+ Macedonio
51
+ Malayés
52
+ Maltés
53
+ Nepali
54
+ Noruego
55
+ Pashto
56
+ Polaco
57
+ Portugués
58
+ Rumano
59
+ Ruso
60
+ Serbio
61
+ Somali
62
+ Suahili
63
+ Sueco
64
+ Tajik
65
+ Tamil
66
+ Tailandés
67
+ Tibetano
68
+ Tigrinia
69
+ Tonganés
70
+ Turco
71
+ Turkmenistano
72
+ Ucraniano
73
+ Urdu
74
+ Uzbekistano
75
+ Vasco
76
+ Vietnamés
@@ -0,0 +1,63 @@
1
+ afrikaans
2
+ albanais
3
+ arabe
4
+ azerbaïdjanais
5
+ Basque
6
+ bengali
7
+ biélorusse
8
+ bulgare
9
+ catalan
10
+ chinois
11
+ croate
12
+ tchèque
13
+ danois
14
+ néerlandais
15
+ Anglais
16
+ espéranto
17
+ estonien
18
+ philippin
19
+ finlandais
20
+ français
21
+ Galice
22
+ géorgien
23
+ allemand
24
+ grecque
25
+ Goudjrati
26
+ créole haïtien
27
+ hébreu
28
+ hindi
29
+ hongroise
30
+ islandais
31
+ indonésien
32
+ irlandais
33
+ italien
34
+ japonais
35
+ Kannada
36
+ coréen
37
+ latin
38
+ letton
39
+ lituanien
40
+ macédonienne
41
+ malais
42
+ maltais
43
+ norvégien
44
+ persan
45
+ polonais
46
+ portugais
47
+ roumain
48
+ russe
49
+ serbe
50
+ slovaque
51
+ slovène
52
+ espagnol
53
+ swahili
54
+ suédois
55
+ Tamil
56
+ Telugu
57
+ thaï
58
+ turc
59
+ ukrainien
60
+ l'ourdou
61
+ vietnamien
62
+ Gallois
63
+ yiddish
@@ -0,0 +1,63 @@
1
+ afrikaans
2
+ albanese
3
+ arabo
4
+ azero
5
+ basco
6
+ bengalese
7
+ bielorusso
8
+ bulgaro
9
+ catalano
10
+ cinese
11
+ croato
12
+ ceco
13
+ danese
14
+ olandese
15
+ inglese
16
+ esperanto
17
+ Estonian
18
+ Filipino
19
+ finlandese
20
+ francese
21
+ galiziano
22
+ georgiano
23
+ tedesco
24
+ greco
25
+ Gujarati
26
+ creolo haitiano
27
+ ebraico
28
+ hindi
29
+ ungherese
30
+ islandese
31
+ indonesiano
32
+ irlandese
33
+ italiano
34
+ giapponese
35
+ Kannada
36
+ coreano
37
+ latino
38
+ lettone
39
+ lituano
40
+ macedone
41
+ malese
42
+ maltese
43
+ norvegese
44
+ persiano
45
+ polacco
46
+ portoghese
47
+ rumeno
48
+ russo
49
+ serbo
50
+ slovacco
51
+ sloveno
52
+ spagnolo
53
+ swahili
54
+ svedese
55
+ Tamil
56
+ Telugu
57
+ Thai
58
+ turco
59
+ ucraino
60
+ urdu
61
+ vietnamita
62
+ gallese
63
+ yiddish
@@ -0,0 +1,63 @@
1
+ afrikaans
2
+ albanês
3
+ árabe
4
+ azerbaijano
5
+ basco
6
+ bengali
7
+ bielorrusso
8
+ búlgaro
9
+ catalão
10
+ chinês
11
+ croata
12
+ tcheco
13
+ dinamarquês
14
+ holandês
15
+ Inglês
16
+ esperanto
17
+ estoniano
18
+ filipino
19
+ finlandês
20
+ francês
21
+ galego
22
+ georgiano
23
+ alemão
24
+ grego
25
+ guzerate
26
+ crioulo haitiano
27
+ hebraico
28
+ hindi
29
+ húngaro
30
+ islandês
31
+ indonésio
32
+ irlandês
33
+ italiano
34
+ japonês
35
+ canará
36
+ coreano
37
+ latino
38
+ letão
39
+ lituano
40
+ macedônio
41
+ malaio
42
+ maltês
43
+ norueguês
44
+ persa
45
+ polonês
46
+ português
47
+ romeno
48
+ russo
49
+ sérvio
50
+ eslovaco
51
+ esloveno
52
+ espanhol
53
+ suaíli
54
+ sueco
55
+ tâmil
56
+ Telugu
57
+ tailandês
58
+ turco
59
+ ucraniano
60
+ urdu
61
+ vietnamita
62
+ galês
63
+ ídiche
@@ -7,7 +7,9 @@ module MovieShowTimes
7
7
 
8
8
  attr_accessor :movies, :theaters
9
9
 
10
- def initialize()
10
+ def initialize(language = 'en')
11
+ @language = language
12
+ @language_parser = MovieShowTimes::LanguageParser.new(language)
11
13
  @theaters = Hash.new
12
14
  @movies = Hash.new
13
15
  end
@@ -48,17 +50,11 @@ module MovieShowTimes
48
50
  def parse_movie_info(info_line)
49
51
  duration = ChronicDuration.parse(info_line)
50
52
  genre = parse_genre(info_line)
51
- language = parse_language(info_line)
53
+ language = @language_parser.parse(info_line)
52
54
 
53
55
  { :duration => duration, :genre => genre, :language => language }
54
56
  end
55
57
 
56
- def parse_language(info_line)
57
- matches = info_line.match(/(English|Spanish|Hebrew|French|German|Thai)/)
58
- return matches[0] unless matches.nil?
59
- nil
60
- end
61
-
62
58
  def parse_genre(info_line)
63
59
  matches = info_line.match(/(Drama|Scifi\/Fantasy|Documentary)/)
64
60
  return matches[0] unless matches.nil?
@@ -1,3 +1,3 @@
1
1
  module MovieShowTimes
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ describe MovieShowTimes::LanguageParser do
5
+ context 'when initialized with language that does not have language names file' do
6
+ it "it should return nil" do
7
+ @language_parser = MovieShowTimes::LanguageParser.new('ur')
8
+ @language_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
+ @language_parser = MovieShowTimes::LanguageParser.new('en')
17
+ end
18
+
19
+ it "detects languages names" do
20
+ @language_parser.parse('1hr 25min‎- Suspense/Thriller - English').should match('English')
21
+ end
22
+ end
23
+
24
+ context 'in spanish' do
25
+ before :all do
26
+ @language_parser = MovieShowTimes::LanguageParser.new('es')
27
+ end
28
+
29
+ it "detects languages names" do
30
+ @language_parser.parse('1h 57min‎- Acción/Aventuras/Drama‎- inglés‎').should match('Inglés')
31
+ end
32
+ end
33
+ end
34
+ end
@@ -42,6 +42,7 @@ describe MovieShowTimes do
42
42
  end
43
43
 
44
44
  it "provides language of movies" do
45
+
45
46
  theater = @movieShowTimes.theaters['Monumental']
46
47
  movie = theater[:movies][0]
47
48
  movie[:language].should_not be_nil
@@ -86,6 +87,8 @@ describe MovieShowTimes do
86
87
  end
87
88
 
88
89
  it "provides movie info with genre" do
90
+ pending
91
+
89
92
  movie = @movieShowTimes.movies['Mirror Mirror']
90
93
  movie[:info][:genre].should_not be_nil
91
94
  movie[:info][:genre].should match('Scifi/Fantasy')
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.1
4
+ version: 0.0.2
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-16 00:00:00.000000000Z
12
+ date: 2012-04-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize
16
- requirement: &2153457520 !ruby/object:Gem::Requirement
16
+ requirement: &2153566980 !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: *2153457520
24
+ version_requirements: *2153566980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &2153457100 !ruby/object:Gem::Requirement
27
+ requirement: &2153566560 !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: *2153457100
35
+ version_requirements: *2153566560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: chronic_duration
38
- requirement: &2153456680 !ruby/object:Gem::Requirement
38
+ requirement: &2153566140 !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: *2153456680
46
+ version_requirements: *2153566140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &2153456260 !ruby/object:Gem::Requirement
49
+ requirement: &2153565720 !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: *2153456260
57
+ version_requirements: *2153565720
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &2153455840 !ruby/object:Gem::Requirement
60
+ requirement: &2153565300 !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: *2153455840
68
+ version_requirements: *2153565300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &2153455420 !ruby/object:Gem::Requirement
71
+ requirement: &2156927680 !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: *2153455420
79
+ version_requirements: *2156927680
80
80
  description: Get Movie Show Times by Location
81
81
  email:
82
82
  - chrishein@gmail.com
@@ -91,6 +91,13 @@ files:
91
91
  - Rakefile
92
92
  - lib/movie_show_times.rb
93
93
  - lib/movie_show_times/crawler.rb
94
+ - lib/movie_show_times/language_parser.rb
95
+ - lib/movie_show_times/languages/de.txt
96
+ - lib/movie_show_times/languages/en.txt
97
+ - lib/movie_show_times/languages/es.txt
98
+ - lib/movie_show_times/languages/fr.txt
99
+ - lib/movie_show_times/languages/it.txt
100
+ - lib/movie_show_times/languages/pt.txt
94
101
  - lib/movie_show_times/parser.rb
95
102
  - lib/movie_show_times/version.rb
96
103
  - movie_show_times.gemspec
@@ -101,6 +108,7 @@ files:
101
108
  - spec/fixtures/movies_bsas_4.txt
102
109
  - spec/fixtures/movies_bsas_5.txt
103
110
  - spec/fixtures/movies_bsas_6.txt
111
+ - spec/language_parser_spec.rb
104
112
  - spec/movie_show_times_spec.rb
105
113
  - spec/spec_helper.rb
106
114
  homepage: https://github.com/chrishein/movie_show_times
@@ -135,6 +143,7 @@ test_files:
135
143
  - spec/fixtures/movies_bsas_4.txt
136
144
  - spec/fixtures/movies_bsas_5.txt
137
145
  - spec/fixtures/movies_bsas_6.txt
146
+ - spec/language_parser_spec.rb
138
147
  - spec/movie_show_times_spec.rb
139
148
  - spec/spec_helper.rb
140
149
  has_rdoc: