omelete 1.0.0 → 2.0.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.
- data/lib/model/movie.rb +8 -0
- data/lib/model/movie_theater.rb +7 -0
- data/lib/model/showtime.rb +17 -0
- data/lib/model/theater.rb +7 -0
- data/lib/omelete/movie_agent.rb +39 -0
- data/lib/omelete/movie_details_agent.rb +32 -0
- data/lib/omelete/movie_theater_agent.rb +24 -0
- data/lib/omelete/showtime_agent.rb +37 -0
- data/lib/omelete/theater_agent.rb +29 -0
- data/lib/omelete.rb +11 -11
- data/lib/version.rb +1 -1
- metadata +23 -18
- data/lib/omelete/detailed_page.rb +0 -107
- data/lib/omelete/models/movie.rb +0 -13
- data/lib/omelete/models/showtime.rb +0 -16
- data/lib/omelete/movie_page.rb +0 -50
data/lib/model/movie.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Showtime
|
2
|
+
attr_accessor :omelete_movie_id, :obs, :kind, :time, :theater
|
3
|
+
|
4
|
+
def initialize(omelete_movie_id, obs, kind, time, theater)
|
5
|
+
self.omelete_movie_id, self.obs, self.kind, self.time, self.theater = omelete_movie_id, pretty_obs(obs), kind, time, theater
|
6
|
+
end
|
7
|
+
|
8
|
+
def pretty_obs(obs)
|
9
|
+
if obs
|
10
|
+
while obs.match(/\.[A-Z] | feriado[A-Z]/) do
|
11
|
+
obs.insert(obs.index(/\.[A-Z]/) + 1, "\n") if obs.match(/\.[A-Z]/)
|
12
|
+
obs.insert(obs.index(/feriado[A-Z]/) + 7, "\n") if obs.match(/feriado[A-Z]/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
obs
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.expand_path("../../../lib/omelete", __FILE__)
|
6
|
+
require File.expand_path("../../../lib/model/movie", __FILE__)
|
7
|
+
|
8
|
+
module Omelete
|
9
|
+
class MovieAgent
|
10
|
+
|
11
|
+
def initialize(omelete_id)
|
12
|
+
@client = Client.new
|
13
|
+
@page_doc = @client.page_doc("cinema/#{omelete_id}")
|
14
|
+
end
|
15
|
+
|
16
|
+
def movies
|
17
|
+
movies=[]
|
18
|
+
omelete_id, name, runtime, genre, age_rating, image = nil, nil, nil, nil, nil, nil
|
19
|
+
@page_doc.css("div[class='programacao_filme']").each do |m|
|
20
|
+
omelete_id = m.css("div[class='programacao_filme_desc'] h2").css("a")[0]
|
21
|
+
omelete_id = omelete_id ? omelete_id["href"][/\d+/] : nil
|
22
|
+
name = m.css("div[class='programacao_filme_desc'] h2 a").text
|
23
|
+
movie = Movie.new(omelete_id, name)
|
24
|
+
|
25
|
+
image = m.css("div[class='programacao_filme_poster']").css("a")[0]
|
26
|
+
genre = m.css("div[class='programacao_filme_desc'] h4").text.split(" - ")[0]
|
27
|
+
movie.runtime = m.css("div[class='programacao_filme_desc'] h4").text.split(" - ")[1]
|
28
|
+
age_rating = m.css("div[class='programacao_filme_desc'] h4").text.split(" - ")[2]
|
29
|
+
|
30
|
+
movie.image = image ? image["href"] : nil
|
31
|
+
movie.age_rating = age_rating ? age_rating[/\d+/] : nil
|
32
|
+
|
33
|
+
movies << movie
|
34
|
+
end
|
35
|
+
movies
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.expand_path("../../../lib/omelete", __FILE__)
|
6
|
+
require File.expand_path("../../../lib/model/movie", __FILE__)
|
7
|
+
|
8
|
+
module Omelete
|
9
|
+
class MovieDetailsAgent
|
10
|
+
|
11
|
+
def initialize(movie_id)
|
12
|
+
@client = Client.new
|
13
|
+
@id = movie_id
|
14
|
+
@page_doc = @client.page_doc("filme/#{movie_id}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def movie
|
18
|
+
synopsis, cast, directed_by = nil, nil, nil
|
19
|
+
movie = Movie.new @id, nil
|
20
|
+
movie.synopsis = @page_doc.css("div#tab_#{@id}_sinopse blockquote").text
|
21
|
+
@page_doc.css("div#tab_#{@id}_ficha dl").children.each do |child|
|
22
|
+
if child.node_name == "dd" && child.previous_element && child.previous_element.content == "Direção:"
|
23
|
+
movie.directed_by = child.content.delete("\r\n")
|
24
|
+
elsif child.node_name == "dd" && child.previous_element && child.previous_element.content == "Elenco:"
|
25
|
+
movie.cast = child.content.delete("\r\n")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
movie
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.expand_path("../../../lib/omelete", __FILE__)
|
6
|
+
require File.expand_path("../../../lib/model/movie_theater", __FILE__)
|
7
|
+
|
8
|
+
module Omelete
|
9
|
+
class MovieTheaterAgent
|
10
|
+
|
11
|
+
def initialize(omelete_id)
|
12
|
+
client = Client.new
|
13
|
+
@id = omelete_id
|
14
|
+
@page_doc = client.page_doc("cinema/#{@id}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def movie_theater
|
18
|
+
name = @page_doc.css("div[class='programacao_cinema'] h2 a").text
|
19
|
+
values = @page_doc.css("div#tab_#{@id}_ingressos dl dd").text
|
20
|
+
@movie_theater = MovieTheater.new @id, name, values
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.expand_path("../../../lib/omelete", __FILE__)
|
6
|
+
require File.expand_path("../../../lib/model/showtime", __FILE__)
|
7
|
+
|
8
|
+
module Omelete
|
9
|
+
class ShowtimeAgent
|
10
|
+
|
11
|
+
def initialize(omelete_id)
|
12
|
+
client = Client.new
|
13
|
+
@id = omelete_id
|
14
|
+
@page_doc = client.page_doc("cinema/#{@id}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def showtimes
|
18
|
+
showtimes = []
|
19
|
+
obs, kind, time, theater = nil, nil, nil, nil
|
20
|
+
@page_doc.css("div[class='programacao_horarios']").each do |div|
|
21
|
+
omelete_movie_id = div.css("p a")[0]["href"][/\d+/]
|
22
|
+
div.css("table tr td").each_with_index do |td, i|
|
23
|
+
obs = td.text if td.attribute("colspan")
|
24
|
+
unless td.attribute("colspan")
|
25
|
+
theater = td.text if i == 0
|
26
|
+
kind = td.text if i == 1
|
27
|
+
time = td.text if i == 2
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
showtimes << Showtime.new(omelete_movie_id, obs, kind, time, theater)
|
32
|
+
end
|
33
|
+
showtimes
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.expand_path("../../../lib/omelete", __FILE__)
|
6
|
+
require File.expand_path("../../../lib/model/theater", __FILE__)
|
7
|
+
|
8
|
+
module Omelete
|
9
|
+
class TheaterAgent
|
10
|
+
|
11
|
+
def initialize(omelete_id)
|
12
|
+
client = Client.new
|
13
|
+
@id = omelete_id
|
14
|
+
@page_doc = client.page_doc("cinema/#{@id}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def theaters
|
18
|
+
theaters = []
|
19
|
+
@page_doc.css("div[class='programacao_horarios'] table tr td").each do |td|
|
20
|
+
if td.text.match(/^[0-9]{1,}$/)
|
21
|
+
@theater = Theater.new td.text
|
22
|
+
theaters << @theater
|
23
|
+
end
|
24
|
+
end
|
25
|
+
theaters
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
data/lib/omelete.rb
CHANGED
@@ -2,21 +2,21 @@
|
|
2
2
|
#!/usr/bin/env ruby
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'open-uri'
|
5
|
-
require File.expand_path('../omelete/movie_page', __FILE__)
|
6
|
-
|
7
5
|
|
8
6
|
module Omelete
|
9
7
|
class Client
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
HOME_URL = "http://omelete.uol.com.br/filmes-em-cartaz/"
|
10
|
+
|
11
|
+
def page_doc(complement)
|
12
|
+
begin
|
13
|
+
uri = URI.escape(HOME_URL + complement)
|
14
|
+
@page_doc = Nokogiri::HTML(open(uri))
|
15
|
+
@page_doc
|
16
|
+
rescue SocketError => e
|
17
|
+
raise e.message
|
18
|
+
end
|
19
|
+
end
|
16
20
|
|
17
|
-
def movies
|
18
|
-
@movie_page.movies if @movie_page
|
19
|
-
end
|
20
|
-
|
21
21
|
end
|
22
22
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omelete
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: rspec
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
|
-
type: :
|
38
|
+
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
@@ -44,21 +44,21 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: mocha
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: vcr
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,17 +80,17 @@ dependencies:
|
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - ! '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
85
|
+
version: '0'
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
93
|
+
version: '0'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: rake
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,10 +114,15 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
-
- lib/
|
118
|
-
- lib/
|
119
|
-
- lib/
|
120
|
-
- lib/
|
117
|
+
- lib/model/movie.rb
|
118
|
+
- lib/model/movie_theater.rb
|
119
|
+
- lib/model/showtime.rb
|
120
|
+
- lib/model/theater.rb
|
121
|
+
- lib/omelete/movie_agent.rb
|
122
|
+
- lib/omelete/movie_details_agent.rb
|
123
|
+
- lib/omelete/movie_theater_agent.rb
|
124
|
+
- lib/omelete/showtime_agent.rb
|
125
|
+
- lib/omelete/theater_agent.rb
|
121
126
|
- lib/omelete.rb
|
122
127
|
- lib/version.rb
|
123
128
|
homepage: http://github.com/mvoto/omelete
|
@@ -140,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
145
|
version: '0'
|
141
146
|
requirements: []
|
142
147
|
rubyforge_project:
|
143
|
-
rubygems_version: 1.8.
|
148
|
+
rubygems_version: 1.8.24
|
144
149
|
signing_key:
|
145
150
|
specification_version: 3
|
146
151
|
summary: Ruby web crawler to access omelete informations
|
@@ -1,107 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
#!/usr/bin/env ruby
|
3
|
-
$:.unshift File.expand_path('../models', __FILE__)
|
4
|
-
require 'rubygems'
|
5
|
-
require 'open-uri'
|
6
|
-
require 'nokogiri'
|
7
|
-
require 'mechanize'
|
8
|
-
require 'movie'
|
9
|
-
require 'showtime'
|
10
|
-
|
11
|
-
module Omelete
|
12
|
-
class DetailedPage
|
13
|
-
|
14
|
-
def initialize(page,link)
|
15
|
-
@page = page.link_with(:href => link).click
|
16
|
-
end
|
17
|
-
|
18
|
-
def movie_poi(movie)
|
19
|
-
movie.movie_theaters = movie_theaters(movie) unless @page.search('//div[@class = "programacao_cinema"]').first.nil?
|
20
|
-
movie.showtimes = showtimes(movie) unless @page.search('//div[@class = "programacao_cinema"]').first.nil?
|
21
|
-
movie.synopsis = synopsis(movie) unless @page.search("//div[@id = \"tab_#{movie.id}_sinopse\"]/blockquote").first.nil?
|
22
|
-
unless @page.search("//div[@id = \"tab_#{movie.id}_ficha\"]/dl/dd").first.nil?
|
23
|
-
movie.cast = cast(movie)
|
24
|
-
movie.directed_by = directed_by(movie)
|
25
|
-
end
|
26
|
-
movie
|
27
|
-
end
|
28
|
-
|
29
|
-
def synopsis(movie)
|
30
|
-
@page.search("//div[@id = \"tab_#{movie.id}_sinopse\"]/blockquote").first.content
|
31
|
-
end
|
32
|
-
|
33
|
-
def cast(movie)
|
34
|
-
@page.search("//div[@id = \"tab_#{movie.id}_ficha\"]/dl/dd").first.content.delete("\r\n")
|
35
|
-
end
|
36
|
-
|
37
|
-
def directed_by(movie)
|
38
|
-
directed_by = ""
|
39
|
-
@page.search("//div[@id = \"tab_#{movie.id}_ficha\"]/dl").first.children.each do |child|
|
40
|
-
directed_by = child.content if child.node_name == "dd" && child.previous_element && child.previous_element.content == "Direção:"
|
41
|
-
end
|
42
|
-
directed_by.delete("\r\n")
|
43
|
-
end
|
44
|
-
|
45
|
-
def movie_theaters(movie)
|
46
|
-
movie_theaters = []
|
47
|
-
@page.search('//div[@class = "programacao_cinema"]/h2/a').each do |movie_theater|
|
48
|
-
movie_theaters << movie_theater.content if movie_theater
|
49
|
-
end
|
50
|
-
movie_theaters
|
51
|
-
end
|
52
|
-
|
53
|
-
def showtimes(movie)
|
54
|
-
showtimes = []
|
55
|
-
mt = ""
|
56
|
-
obs = ""
|
57
|
-
@page.parser.xpath('//div[@id="content-left"]/div[@class="grid_8"]/div').each do |div_child|
|
58
|
-
# if div_child.node_name == "div"
|
59
|
-
mt = div_child.search('h2').first.text.gsub("\n", "").strip if div_child.attribute("class").value == "programacao_cinema"
|
60
|
-
if div_child.attribute("class").value == "programacao_horarios"
|
61
|
-
div_child.search('tr').each do |tr_doc|
|
62
|
-
unless tr_doc.content.include?("Sala")
|
63
|
-
obs = div_child.search('td[@colspan="3"]').first.content if div_child.search('td[@colspan="3"]').first
|
64
|
-
sat = ShowtimeAndTheater.new tr_doc
|
65
|
-
showtimes << sat.create_showtime_with(mt,movie,obs)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
# end
|
70
|
-
end
|
71
|
-
showtimes
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
|
-
class ShowtimeAndTheater
|
77
|
-
|
78
|
-
def initialize(doc)
|
79
|
-
@doc = doc
|
80
|
-
end
|
81
|
-
|
82
|
-
def create_showtime_with(movie_theater,movie,observ)
|
83
|
-
unless @doc.search('td').first.next_element.nil?
|
84
|
-
showtime = Showtime.new(nil,nil,nil,movie,nil,movie_theater)
|
85
|
-
showtime.time = time
|
86
|
-
showtime.theater = theater
|
87
|
-
showtime.kind = kind
|
88
|
-
showtime.obs = observ
|
89
|
-
# p "#{showtime.movie_theater} - #{showtime.theater} - #{showtime.movie.name} - #{showtime.time} - #{showtime.obs}"
|
90
|
-
end
|
91
|
-
showtime
|
92
|
-
end
|
93
|
-
|
94
|
-
def time
|
95
|
-
@doc.search('td').last.content
|
96
|
-
end
|
97
|
-
|
98
|
-
def kind
|
99
|
-
@doc.search('td').first.next_element.content
|
100
|
-
end
|
101
|
-
|
102
|
-
def theater
|
103
|
-
@doc.search('td').first.content
|
104
|
-
end
|
105
|
-
|
106
|
-
end
|
107
|
-
end
|
data/lib/omelete/models/movie.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module Omelete
|
3
|
-
class Movie
|
4
|
-
|
5
|
-
attr_accessor :id, :name, :status, :runtime, :cast, :genre, :directed_by, :city, :state
|
6
|
-
attr_accessor :age_rating, :synopsis, :image, :movie_theaters, :showtimes
|
7
|
-
|
8
|
-
def initialize(id, name)
|
9
|
-
@id = id
|
10
|
-
@name = name
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module Omelete
|
3
|
-
class Showtime
|
4
|
-
|
5
|
-
attr_accessor :time, :obs, :movie, :theater, :kind, :movie_theater
|
6
|
-
|
7
|
-
def initialize(time, obs, kind, movie, theater, movie_theater)
|
8
|
-
@time = time
|
9
|
-
@obs = obs
|
10
|
-
@kind = kind
|
11
|
-
@movie = movie
|
12
|
-
@theater = theater
|
13
|
-
@movie_theater = movie_theater
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
data/lib/omelete/movie_page.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
#!/usr/bin/env ruby
|
3
|
-
$:.unshift File.expand_path('../', __FILE__)
|
4
|
-
$:.unshift File.expand_path('../models', __FILE__)
|
5
|
-
require 'rubygems'
|
6
|
-
require 'open-uri'
|
7
|
-
require 'nokogiri'
|
8
|
-
require 'mechanize'
|
9
|
-
require 'movie'
|
10
|
-
require 'detailed_page'
|
11
|
-
|
12
|
-
module Omelete
|
13
|
-
class MoviePage
|
14
|
-
URL = "http://omelete.uol.com.br/filmes-em-cartaz"
|
15
|
-
def initialize(state,city)
|
16
|
-
@state = state
|
17
|
-
@city = city
|
18
|
-
@agent = Mechanize.new{|agent| agent.user_agent_alias = 'Mac Safari'}
|
19
|
-
url=URL + "?uf=#{@state}&cidade=#{@city}"
|
20
|
-
@agent.get(URI.escape(url)){ |page| @page = page }
|
21
|
-
end
|
22
|
-
|
23
|
-
def movies
|
24
|
-
@movies = []
|
25
|
-
@page.search('//div[@class = "programacao_filme"]').each do |movie_doc|
|
26
|
-
link = movie_doc.search('p').first.search('a').first.attr('href')
|
27
|
-
id = id_from(link)
|
28
|
-
return @movies if movie_doc.search('h2').first.search('a').first.nil?
|
29
|
-
name = movie_doc.search('h2').first.search('a').first.content.strip
|
30
|
-
movie = Movie.new(id,name)
|
31
|
-
|
32
|
-
return @movies if movie_doc.search('h4').first.nil?
|
33
|
-
info = movie_doc.search('h4').first.content.strip.split('-')
|
34
|
-
movie.genre = info[0]
|
35
|
-
movie.runtime = info[1]
|
36
|
-
movie.age_rating = info[2]
|
37
|
-
movie.image = movie_doc.search('div').first.search('a').first.attr('href').strip unless movie_doc.search('div').first.search('a').first.nil?
|
38
|
-
|
39
|
-
dp = DetailedPage.new(@page, link)
|
40
|
-
@movies << dp.movie_poi(movie)
|
41
|
-
end
|
42
|
-
@movies
|
43
|
-
end
|
44
|
-
|
45
|
-
def id_from(link)
|
46
|
-
link.match(/\d+/)[0]
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|